이 문서는 Feature Importance를 Decision Tree에서 Gini Impurity Measure를 이용하여 계산하는 예제를 보여줌.
Tree 예시 (depth = 3)
[Root]
(X1)
[5:5]
/ \
Node1 Node2
(X2) (X3)
[4:1] [1:4]
/ \ / \
Leaf1 Leaf2 Leaf3 Leaf4
[3:0] [1:1] [0:2] [1:2]
- Root 노드는
X1
을 사용해 데이터를 분할. - Node1은
X2
를 사용해 데이터를 다시 분할. - Node2는
X3
을 사용해 데이터를 다시 분할.
단계 1: Gini impurity measure 계산
Gini impurity는 다음과 같이 계산:
$$
\text{Gini} = 1 - \sum (p_i^2)
$$
1-1. 초기 상태 (Root 노드):
- 클래스 0: 5개 샘플
- 클래스 1: 5개 샘플
지니 불순도 (Root):
$$1 - (0.5^2 + 0.5^2) = 0.5$$
단계 2: 각 노드에서의 분할 후 Gini impurity계산 및 중요도 평가
2-1. Root 노드에서 X1
으로 분할
X1
에 의해 분할된 두 그룹의 Gini impurity:
- 왼쪽 그룹 (Node1): 클래스 0 - 4개, 클래스 1 - 1개
$$1 - (0.8^2 + 0.2^2) = 0.32$$
- 오른쪽 그룹 (Node2): 클래스 0 - 1개, 클래스 1 - 4개
$$1 - (0.2^2 + 0.8^2) = 0.32$$
분할 전 Gini impurity는 0.5 이며, 이 노드에서의 분할 후 평균 Gini impurity measures는 다음과 같음:
$$
\frac{5}{10} \times 0.32 + \frac{5}{10} \times 0.32 = 0.32
$$
즉, Root 노드에서 Gini impurity decrement:
$$0.5 - 0.32 = 0.18$$
X1
의 중요도에 기여: 0.18
2-2. Node1에서 X2
로 분할
X2
에 의해 분할된 두 그룹의 Gini impurity:
- 왼쪽 그룹 (Leaf1): 클래스 0 - 3개, 클래스 1 - 0개
$$1 - (1^2 + 0^2) = 0.0$$
- 오른쪽 그룹 (Leaf2): 클래스 0 - 1개, 클래스 1 - 1개
$$1 - (0.5^2 + 0.5^2) = 0.5$$
분할 전 inpurity는 0.32 이고 분할 후 평균 Gini impurity는 다음과 같음:
$$\frac{3}{5} \times 0.0 + \frac{2}{5} \times 0.5 = 0.2$$
Node1에서 Gini impurity decrement:
$$0.32 - 0.2 = 0.12$$
X2
의 중요도에 기여: 0.12
2-3.Node2에서 X3
으로 분할
X3
에 의해 분할된 두 그룹의 Gini impurity:
- 왼쪽 그룹 (Leaf3): 클래스 0 - 0개, 클래스 1 - 2개
$$1 - (0^2 + 1^2) = 0.0$$
- 오른쪽 그룹 (Leaf4): 클래스 0 - 1개, 클래스 1 - 2개
$$1 - (1/3)^2 - (2/3)^2 = 0.44$$
분할 전 Gini impurity는 0.32 이고 분할 후 평균 Gini impurity는 다음과 같음:
$$\frac{2}{5} \times 0.0 + \frac{3}{5} \times 0.44 = 0.264$$
Node2에서 Gini impurity decrement:
$$0.32 - 0.264 = 0.056$$
X3
의 중요도에 기여: 0.056
단계 3: 특성 중요도 계산 및 정규화
X1
의 총 기여도: 0.18X2
의 총 기여도: 0.12X3
의 총 기여도: 0.056
전체 특성 중요도의 합:
$$0.18 + 0.12 + 0.056 = 0.356$$
정규화:
X1
: $ \frac{0.18}{0.356} \approx 0.51 $X2
: $ \frac{0.12}{0.356} \approx 0.34 $X3
: $ \frac{0.056}{0.356} \approx 0.16 $
최종 결과
X1
의 중요도: 0.51X2
의 중요도: 0.34X3
의 중요도: 0.16
요약
- Feature Importance는 각 node(노드)에서 purity increament(순수도 향상도)를 누적하고, 이 값의 tree 전체에 대한 기여도를 계산하기 위해 정규화함.
- Depth가 증가하면서 추가된 node들 역시 feature importance에 영향을 미치지만, 일반적으로 상위 node에서의 분할이 더 많은 instances에 영향을 주기 때문에 상대적으로 더 높은 중요도를 가질 가능성이 큼.
'Programming > ML' 카테고리의 다른 글
[ML] Nearest Neighbor Search: k-d Tree (0) | 2024.11.25 |
---|---|
[ML] Regularization (0) | 2024.10.27 |
[ML] Linear Classification Model: Hyperplane and Decision Boundary (0) | 2024.10.27 |
[ML] Diabetes Dataset (0) | 2024.10.05 |
[ML] Yeast Dataset (0) | 2024.10.05 |