Decision Trees Explained - Entropy, Information Gain, Gini Index
학습 목표 매핑
SKALA 3기 Module 3 — ML/Deep Learning (Learning Objective 3-1)
- Objective: 의사결정나무의 분할 기준(Gini Index vs Entropy)을 설명하고, 각 기준의 수식을 유도할 수 있다 (Bloom L2-L3)
- Evaluation: 회귀/분류 문제에서 어느 기준을 사용해야 하는지 정당화 + 수치 계산 예시 제시
개념 요약
Entropy (엔트로피)
정의: 노드의 불순도(disorder) 또는 불확실성을 측정하는 정보론 개념
범위:
- 최솟값: 0 (완전히 순수한 노드, 한 클래스만 존재)
- 최댓값: 1 (완전히 균등한 분포)
수식:
여기서 는 각 클래스의 확률
구체적 예시 (Pass=9, Fail=6):
- Entropy =
- = ≈ 0.9183
Gini Index (지니 지수)
정의: “임의로 선택된 데이터가 잘못 분류될 확률”을 측정
범위:
- 최솟값: 0 (완전히 순수함)
- 최댓값: 0.5 (완전히 균등한 분포)
수식:
여기서 는 각 클래스의 확률
구체적 예시 (CS 배경, 모두 Pass):
- ,
- Gini = (완전히 순수함)
Information Gain (정보 이득)
정의: 부모 노드에서 자식 노드로의 엔트로피 감소량
수식:
역할: 어느 변수가 가장 좋은 분할을 제공하는지 결정 (높을수록 좋음)
선택 기준:
- Information Gain이 가장 큰 변수를 루트 노드 또는 분할 기준으로 선택
- 각 깊이에서 반복적으로 적용하여 트리 구성
핵심 개념: Entropy vs Gini
| 측면 | Entropy | Gini Index |
|---|---|---|
| 수식 복잡도 | 로그 함수 포함 | 더 간단 |
| 계산 비용 | 약간 높음 | 약간 낮음 |
| 최댓값 | 1.0 | 0.5 |
| 알고리즘 | ID3, C4.5 (정보 이득 기반) | CART, scikit-learn (Gini 기반) |
| 분류 성능 | 대부분 유사 | 대부분 유사 |
실무적 선택:
- 둘 다 변수 선택에 사용되며, 결과는 대체로 유사
- scikit-learn
DecisionTreeClassifier는 기본값으로 Gini Index 사용 - ID3/C4.5는 Information Gain 기반
학습 설계 포인트
Cognitive Level (Bloom)
- L2 (Understand): Entropy/Gini 정의 설명, 수식 해석
- L3 (Apply): 주어진 데이터셋에서 수치 계산
- L4 (Analyze): Entropy vs Gini 선택 기준 분석
Hands-On Practice
import numpy as np
from sklearn.tree import DecisionTreeClassifier
# 예시: 15개 데이터 (Pass=9, Fail=6)
X = np.array([[...], [...], ...]) # Feature matrix
y = np.array([1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0]) # Target
# Gini 기반 트리 (기본값)
clf_gini = DecisionTreeClassifier(criterion='gini', random_state=42)
clf_gini.fit(X, y)
# Entropy 기반 트리 (information gain)
clf_entropy = DecisionTreeClassifier(criterion='entropy', random_state=42)
clf_entropy.fit(X, y)
# 결과 비교: 대부분의 경우 유사하지만 깊은 트리에서는 차이 발생 가능참고 자료
- scikit-learn Decision Tree: https://scikit-learn.org/stable/modules/tree.html
- Information Gain vs Gini: https://en.wikipedia.org/wiki/Decision_tree_learning
선행 개념
이 개념을 배우기 전에 필수로 알아야 할 것:
- Module 2-1, 2-3 → eda-exploratory-data-analysis-geeksforgeeks, data-visualization-3-layer-guide: 데이터 탐색과 분포 분석
- 왜?: Decision Tree가 어떤 특성을 기반으로 분할하는지 이해하려면, 먼저 데이터의 분포를 파악해야 함
- 예: “이 변수가 타겟 변수와 강한 상관성을 보임” → “Decision Tree가 이를 분할 기준으로 선택함”
- 기본 확률·통계: 확률(p), 로그 함수 개념
후속 개념 (이 개념이 선행)
이 개념을 배운 후 다음 단계:
- Module 3-2 → random-forest-gradient-boosting-xgboost: Decision Tree를 기반으로 하는 Ensemble 방법
- “Decision Tree 여러 개를 결합하여 과적합 감소”
- Module 3-4 → tensorflow-keras-quickstart: 신경망과의 비교
- “Decision Tree(해석 가능) vs Neural Network(성능 우수)” 비교
타 소스와의 연계
random-forest-gradient-boosting-xgboost (Ensemble 방법이 의사결정나무 개선)