Mining – 의사결정나무 中 지니지수

‘의사결정나무’를 모르시겠다면 이전 포스팅 글을 참고하세요!!
-> https://shacoding.com/2019/09/20/mining-%ec%97%94%ed%8a%b8%eb%a1%9c%ed%94%bc%ec%99%80-%ec%a7%80%eb%8b%88%ec%a7%80%ec%88%98/

지니지수
무질서도를 나타내는 척도입니다.
엔트로피와 마찬가지로, 두 비율이 0.5로 가까워질 때 값이 제일 커집니다.

공식은 아래와 같습니다.

안쪽 시그마부터 알아 봅시다.

P(j)를 클래스A, 나머지 클래스들 P(i)가 존재한다고 생각합시다.
클래스A를 중심으로 A를 제외한 나머지 클래스와 한 번씩 곱하고 더합니다.

j=1 -> P(1)이 중심이면
P(1)*p(2) + p(1)*p(3) + p(1)*p(4) + …이 됩니다!

P(1)*{ p(2)+p(3)+p(4)+… }
-> 나머지 클래스들을 다 더한 것은 [ 전체-p(1) ]과 같습니다.

j=1일 때 P(1)*(1-p(1)) 이니까,
결국 안쪽 시그마는 P(j)*(1-p(j)) 로 정리가 됩니다!

이제 바깥쪽 시그마를 알아 봅시다!

Sigma(j=1->c) P(j)*(1-p(j))
(=) Sigma(j=1->c) P(j)- Sigma(j=1->c) p(j)^2

Sigma(j=1->c) P(j)는 어차피 1이므로,
1-Sigma(j=1->c) p(j)^2가 됩니다.

G = 1- Sigma(j=1->c) P(j)^2
p(j)는 범주에 속하는 레코드 비율, c는 범주의 개수

이제 지니지수 공식도 알았으니 예시를 통해 문제를 풀어 봅시다!

분리하기 전에는 범주가 <신용 상태(나쁨)과 신용상태(좋음)> 두 가지입니다.
분리한 후에는 영역 <급여형태(주급)과 급여형태(월급)>이 추가 되었습니다.

분리하기 전부터 살펴 봅시다!
=> G=1-( (168/323)^2+(155/323)^2) )

분리한 후에는 엔트로피 구할 때와 비슷합니다.
Sigma(i=1->d) [ Ri * { 1- Sigma(j=1->c) P(j)^2 } ]
d:
영역의 개수

G주급 = 1-(143/165)^2-(22/165)^2
G월급 = 1-(25/158)^2-(133/158)^2
=> 165/323 * G주급 + 158/323 * G월급

이를 R 프로그래밍으로 확인해봅시다!

# 범주가 두 개일 때 지니지수 값 구하기 
Gini=function(pj){
  return (1- (pj^2 + (1-pj)^2) )
}

# 영역이 두 개일 때 분할 후 지니지수 값 구하기
Gini2=function(r1,pj1,pj2){
  # r1은 첫 번째 영역 레코드 비율
  # pj1은 첫 번째 영역에서 한 범주의 레코드 비율 
  # pj2은 두 번째 영역에서 한 범주의 레코드 비율 
  
  # pj1의 Gini
  one=Gini(pj1)
  # pj2의 Gini
  two=Gini(pj2)
  
  return(r1 * one + (1-r1) * two)
}

# 분할 전 지니지수 구하기!
Gini(168/323)

# 지니지수 함수로 (분할 후 지니지수) 풀기!
165/323 * Gini(143/165) + 158/323 * Gini(25/158)
# 지니지수2 함수로 (분할 후 지니지수) 풀기!
Gini2(165/323,143/165,25/158)

엔트로피와 비교해 봅시다!

지니지수: 0.49 -> 0.24
엔트로피: 0.99 -> 0.59

실제 무질서도 차이는 같지만,
엔트로피에 비해 지니지수가 수치 상 더 큰 차이를 가지네요!!

실제로 ‘의사결정나무’ 문제를 풀 때
(엔트로피) 혹은 (지니지수)를 이용한 알고리즘을 이용합니다.

알고리즘에 의해 분할을 계속해가며 정리하는데,
그 정리의 정도를 엔트로피나 지니지수로 확인하는 것이지요!

엔트로피지수를 이용하는 알고리즘은 C4.5이고
지니지수를 이용하는 알고리즘은 Cart입니다.

다음 포스팅에는 cart알고리즘을 사용해서 ‘의사결정나무 실습’ 을 해보겠습니다!

Leave a Reply

Your email address will not be published. Required fields are marked *