AI,머신러닝/용어

지니 불순도 (Gini Impurity)

깨비아빠0 2023. 8. 18. 06:25
728x90
반응형

https://www.learndatasci.com/glossary/gini-impurity/

 

Gini Impurity

7 Best Artificial Intelligence (AI) Courses Top courses you can take today to begin your journey into the Artificial Intelligence field. Learn more

www.learndatasci.com

 

지니 불순도(Gini Impurity)는,

 

  1. 데이터셋에 다른 데이터가 섞여 있는 정도
    - 데이터셋이 얼마나 완벽하게 하나의 클래스만 갖고 있는지(= 잘 분류되었는지)
    - 또는, 여러 클래스가 섞여 있는지(= 분류되지 않았는지)를 보여주는 지표
  2. 최소값은 0
    - 완벽하게 분류됐음을 의미 (모든 데이터가 같은 클래스)
  3. 최대값은, 클래스가 두 개인 경우 0.5($1\over 2$), 세 개인 경우 0.667($2\over 3$), 네 개인 경우 0.75($3\over 4$), ...
    - 전혀 분류되지 않음을 의미 (클래스 별 데이터 수가 동일)
  4. Decision Tree의 노드를 나눌 때 어떤 피쳐를 사용할지 결정하기 위해 사용 가능

 

위의 예시는 "고객의 연체 여부"를 여러 피쳐로 분류했을 때 하위 노드의 클래스(Yes=연체, No=미연체) 수와 Gini Impurity 값을 보여줌.

Age, Income, Student, Credit Rating 피쳐로 각각 분류했을 때 Age 피쳐의 Gini Impurity가 0.343으로 가장 작으므로, Decision Tree의 루트 노드는 Age 피쳐로 분류해야 한다.

 

계산식

데이터셋 D가 k개의 클래스로 나뉘고, 클래스 i의 확률을 $p_i$라 할 때, Gini Impurity는 다음과 같이 정의한다.

$ Gini(D) = 1 - \sum\limits_{i=1}^{k}p_i^2 $

 

위의 고객 연체 예시에서 Age 피쳐로 나눴을 때 하위 노드 각각의 Gini Impurity를 계산해보면,

  개수 확률 Gini Imputiry
Yes No Yes ($p_1$) No ($p_2$) $1-p_1^2-p_2^2$
Youth 2 3 0.4 0.6 $1-0.4^2-0.6^2 = 0.48$
Middle age 4 0 1 0 $1-0^2-1^2 = 0$
Senior 3 2 0.6 0.4 $1-0.6^2-0.4^2 = 0.48$

피쳐 A를 기준으로 데이터셋 D를 $D_1, D_2$로 나눴고, 각각의 크기가 $n_1, n_2$일 때, Gini Impurity는 다음과 같이 정의할 수 있다.

$ Gini_A(D) = \cfrac{n_1}{n}Gini(D_1) + \cfrac{n_2}{n}Gini(D_2) $

 

즉, Age 피쳐로 나눴을 때의 Gini Impurity는

$ Gini_{Age}(D) = \cfrac{5}{14}0.48 + \cfrac{4}{14}0 + \cfrac{5}{14}0.48 = 0.3428... $

이다.

 

Decision Tree를 훈련할 때, 이 Gini Impurity가 가장 작게 나오는 피쳐를 사용해 노드를 구분

Gini Impurity에 의한 정보 이득, Gini Gain은

$ \Delta Gini(A) = Gini(D) - Gini_A(D) $

와 같이 구할 수 있는데, 노드 구분은 이 Gini Gain을 최대화하는 방향으로 이뤄진다고도 할 수 있다.

 

반응형