BLOG main image
FunnyPR (32)
OpenGL (20)
PatternRecognition (7)
Tips (2)
XML (1)
DataMining (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
'DataMining'에 해당되는 글 1건
2017. 2. 3. 15:11
오랜만에 글쓰네...

Random forest 개념을 이해하다 보면 purer, impurity 라고 나온다. 


갑자기 이런 말이 나오니 당황 스럽다. 


이 개념을 자세히 다룬 곳이 없어 내가 정리하기로 했다. 


우선 impurity 라는 단어에 대한 이해가 필요하다. 


impurity 는 불순물, 불결, 불순 개념이다. 그림에서 보면 유리 병에 불순물이 섞여 흐릿하게 보이는 것을 알 수 있다. 


impurity water에 대한 이미지 검색결과


랜덤 포레스트는 impurity 라는 개념을 사용하여 가지를 치는(생성하는) 기준을 설정한다. 

분지 기준(splitting criterion) 이라고 하는데 한국 단어는 한자의 개념이 함께 있어 한번에 이해하기 더 어렵다. 


본론으로 들어가 그럼 왜 impurity 라는 개념을 쓸까 다음 그림을 보면서 이해하자 

우선 G 수치는 무시하고 그림만 보자 그림에서 빨간색이 사건 A 라고 하고 파란색을 사건 B 라고 하자 

제일 위 왼쪽 상자에 10개의 파란색 네모가 있다. 파란색 관점에서 보면 순수하다. pure 하다는 것이다. 즉, 반대로 말하면 불순물이 없다는 것이다. 따라서 G=0 으로 볼 수 있다. 


파란색 네모 입장에서 보면 빨간색 네모는 불순물과 같은 존재이다. 자기 존재를 흐리게 만드니깐. 췌


이러한 개념에서 아래와 같이 우리는 해석할 수 있다. 

빨간색(0), 파란색(10) = 불순물이 없네~~~

빨간색(1), 파란색(9) = 어라 불순물이 하나 생겼네!

빨간색(2), 파란색(8) = 흠 불순물 더 생겼어!

빨간색(3), 파란색(7) = 또 분순물이 증가했군!

빨간색(4), 파란색(6) = 머야 또 늘었어!

빨간색(5), 파란색(5) = 하 머야 엄청 늘었잖아!!!

....


자 이것을 보기 좋게 수식으로 전개한 것이 Gini impurity 이다. Gini impurity 를 해석해서 쓰진 않겠다. 

왜냐면 내 마음이니깐. 여기서 Gini 는 그 주전자 문지르면 나오는 아이 아니다. impurity 수식을 제안한 학자 이름이니 나중에 행여 발표하게 되면 약간의 위트 있는 개그를 해 주면 좋을 것이다. 


본격적으로 Gini impurity 수식을 보자 . 짜잔 ~~



어려워 하지 말자. 우선 J 는 사건의 수를 말한다. 빨간 네모가 일어날 사건 한개 파란색 네모가 일어날 사건 한개, 위에서 언급한 예제의 사건은 총 2개이다. 

J 는 사건의 수를 나타낸다. 즉, 예제에서는 2가 된다. 

pi 는 i 번째 사건의 요소들이 일어날 확률이다. 

1-pi 는 i 번째 해당하는 사건들이 일어날 확률의 여사건 확률이다. 그러니깐 i 번째 해당하는 사건이 일어나지 않을 확률이다. 

수식에서 보면 pi 와 1-pi 는 독립사건이다. 이유는 pi 가 일어날 사건과 안일어날 사건(1-pi) 는 서로 연관이 없으며 독립적으로 발생하기 때문이다. 


: 확률에 대한 설명은 재미도 없고 고달프다. 아마도 이글을 보는 사람은 개념만 이해하고 싶을 것이다. 

따라서 위 수식을 예제에 적용한 결과를 바로 제시한다. 


A

B

P1

1-P1

P2

1-P2

P1(1-P1)

P2(1-P2)

G

0

10

0

1

1

0

0

0

0

1

9

0.1

0.9

0.9

0.1

0.09

0.09

0.18

2

8

0.2

0.8

0.8

0.2

0.16

0.16

0.32

3

7

0.3

0.7

0.7

0.3

0.21

0.21

0.42

4

6

0.4

0.6

0.6

0.4

0.24

0.24

0.48

5

5

0.5

0.5

0.5

0.5

0.25

0.25

0.5

6

4

0.6

0.4

0.4

0.6

0.24

0.24

0.48

7

3

0.7

0.3

0.3

0.7

0.21

0.21

0.42

8

2

0.8

0.2

0.2

0.8

0.16

0.16

0.32

9

1

0.9

0.1

0.1

0.9

0.09

0.09

0.18

10

0

1

0

0

1

0

0

0


위에 표에서 이해를 돕기 위해 아래에 한줄 더 추가 했다. (나의 배려심은 끝이 없군)



위 예제에서 빨간색 네모가 4개 그리고 파란색 네모가 6개 일 경우 그 불순한 정도(Gini impurity) 는 0.48 이다. 가장 많이 불순하다고 보는 것은 두 사건 요소들이 1:1의 비율로 섞여 있을때이다. 이때 Gini impurity 는 0.5 값이다. 


위 표와 함께 Gini impurity 는 해석은 Gini impurity 값이 클 수록 내가 가진 메트릭의 불순도가 높은것이며, 작을수록 순수하다는 것이다. 



그럼 이 개념이 왜 Random forest 에 사용되는 것일까? 


RF 모델 개념에서 보면 자식 노드는 부모 노드 보다 순도가 높아야 한다고 한다. 말로 하지 말고 그림으로 보자 



위 그림에서 G 가 Gini impurity 값이다. 부모 노드가 제일 위에 있는데 G= 0.5 이다. 따라서 불순하다(하앍 나만 변태스러운가....) 

위에서 하나의 기준을 가지고 걸러내면 2개의 네모박스가 걸러지고 나머지 군집에서 다시 Gini impurity 를 계산하면 0.46 이다. 


이 얼마나 아름다운가 부모 노드의 G 가 자식 노드 보다 높다. 랜덤 포레스트 모델링 입장에서 가지를 칠  경우 적어도 식별하고자 하는 타켓을 구분한 후 가지를 쳐야 한다. 따라서 계속 가지를 늘려갈 수록 해당 사건들로 구성된 메트릭스의 불순도는 낮아지게 되는 것이다. 계속 가지를 치는 과정을 반복하면서 랜덤포레스트는 이 불순도를 기준으로 하여 학습을 종료 할 건지 안할 건지 결정하는 것 같다(내 추정).  


대부분의 마이닝 책들이 수식만 제기하고 글로 그 수식을 풀어 헤치고 조건에 대해 냅따 기술해 놓는다. 아놔 그럼 누가 이해하나!! 아마 똑똑한 사람들은 금방하겠지(시무룩)

좀 풀어서 독자가 이해하기 쉽게 써주면 좋을것 같다. 


[참고로 랜덤포레스트 하다 보면 변수들의 상대적 중요성에 대해 그래프를 하나 얻게 되는데 그 그래프에서 Gini 값이 사용된다. 즉 Gini 값을 가장 많이 감소 시키는 변수가 가장 좋은 것이라는 해석이다.]




prev"" #1 next