728x90
반응형
https://www.learndatasci.com/glossary/gini-impurity/
지니 불순도(Gini Impurity)는,
- 데이터셋에 다른 데이터가 섞여 있는 정도
- 데이터셋이 얼마나 완벽하게 하나의 클래스만 갖고 있는지(= 잘 분류되었는지)
- 또는, 여러 클래스가 섞여 있는지(= 분류되지 않았는지)를 보여주는 지표 - 최소값은 0
- 완벽하게 분류됐음을 의미 (모든 데이터가 같은 클래스) - 최대값은, 클래스가 두 개인 경우 0.5($1\over 2$), 세 개인 경우 0.667($2\over 3$), 네 개인 경우 0.75($3\over 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을 최대화하는 방향으로 이뤄진다고도 할 수 있다.
반응형
'AI,머신러닝 > 용어' 카테고리의 다른 글
Target Encoding - 범주형 변수의 수치형 변환 (0) | 2023.09.18 |
---|---|
L1, L2 정규화(Regularization) (0) | 2023.09.09 |
크로스 엔트로피 (Cross-Entropy) (0) | 2023.09.05 |
경사 하강법 (Gradient Descent) (0) | 2023.09.05 |
정보량, 엔트로피 (0) | 2023.08.16 |