Random forest 개념을 이해하다 보면 purer, impurity 라고 나온다.
갑자기 이런 말이 나오니 당황 스럽다.
이 개념을 자세히 다룬 곳이 없어 내가 정리하기로 했다.
우선 impurity 라는 단어에 대한 이해가 필요하다.
impurity 는 불순물, 불결, 불순 개념이다. 그림에서 보면 유리 병에 불순물이 섞여 흐릿하게 보이는 것을 알 수 있다.
랜덤 포레스트는 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 값을 가장 많이 감소 시키는 변수가 가장 좋은 것이라는 해석이다.]