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 티스토리 가입하기!
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 값을 가장 많이 감소 시키는 변수가 가장 좋은 것이라는 해석이다.]