3과목 · 데이터 분석·8장
의사결정나무
의사결정나무의 원리, 분리 기준(지니·엔트로피·정보이득), 가지치기와 과적합 방지, CART/C4.5/CHAID 비교를 정리합니다.
1. 의사결정나무란
의사결정나무(Decision Tree) 는 데이터 조건을 따라가며 If-Then 규칙으로 분류·예측하는 모델.
- 사람이 읽기 쉬운 white-box 모델
- 분류(Classification) + 회귀(Regression) 둘 다 가능
- 전처리 부담 적음(스케일링 불필요)
2. 구조
[Root] 소득 > 5000만?
/ \
예 아니오
/ \
[Node] [Leaf: 비승인]
나이 > 30?
/ \
[Leaf] [Leaf]
승인 비승인
- Root: 시작 노드
- Internal: 분기 조건
- Leaf: 최종 결정(클래스/값)
3. 분리 기준(Split Criteria)
분류 트리는 순도를 높이는 방향으로 분할.
3-1. 지니 지수(Gini Index)
$$Gini = 1 - \sum p_i^2$$
- 0: 완전 순수
- 최대: 모든 클래스가 균등
3-2. 엔트로피(Entropy)
$$E = -\sum p_i \log_2 p_i$$
3-3. 정보 이득(Information Gain)
$$IG = Entropy(부모) - \sum \dfrac{|C_i|}{|T|} Entropy(C_i)$$
이득이 큰 속성을 먼저 분할.
3-4. 카이제곱(CHAID)
범주형 데이터, 통계적 유의성 기반 분할.
3-5. 분산 감소(회귀 트리)
잔차 제곱합을 기준으로 분할.
4. 대표 알고리즘
| 알고리즘 | 기준 | 특징 |
|---|---|---|
| ID3 | 정보이득 | 범주형만, 최초 |
| C4.5 | 이득률 | 연속·결측 처리 |
| CART | 지니(분류)·분산(회귀) | 이진 분할, scikit-learn 기본 |
| CHAID | 카이제곱 | 다지 분할, 통계적 유의 |
5. 가지치기(Pruning)
5-1. 사전 가지치기(Pre-pruning)
- 성장 중단 조건:
- 최대 깊이
- 최소 샘플 수
- 정보이득 임계값
5-2. 사후 가지치기(Post-pruning)
- 완전히 성장 → 약한 가지 제거
- 비용복잡도 가지치기(Cost Complexity)
- 검증 성능 기준
6. 과적합 방지 체크리스트
- 트리 최대 깊이 제한
- 최소 샘플 분할 설정
- 가지치기
- 교차검증 + 하이퍼파라미터 튜닝
- 앙상블로 확장(RandomForest, GBM)
7. 장단점
| 장점 | 단점 |
|---|---|
| 해석 쉬움 | 과적합 취약 |
| 전처리 간단 | 작은 변화에 구조 민감 |
| 범주·연속 혼합 처리 | 선형 관계 비효율 |
| 시각화 용이 | 깊어질수록 일반화 저하 |
8. 변수 중요도
트리 모델은 변수 중요도를 제공.
- 노드 분할 시 얻은 정보이득 합
- 특성 선택에 활용
9. 예시 — 이탈 예측
Root: 가입기간 < 12개월?
├ 예
│ └ 월사용량 < 50GB? → 이탈
└ 아니오
└ 할인 코드 있음? → 유지 / 없음 → 이탈
10. 파이썬 예시
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(max_depth=5, min_samples_split=20)
tree.fit(X_train, y_train)
pred = tree.predict(X_test)
# 변수 중요도
tree.feature_importances_
11. 출제 포인트
- 지니·엔트로피·정보이득 공식·의미
- CART·C4.5·CHAID 알고리즘 비교
- 가지치기 사전 vs 사후
- 트리의 장단점
- 과적합 방지 방법
요약 체크리스트
- 지니·엔트로피 공식을 쓸 수 있다
- 정보이득으로 분할을 판단
- 가지치기의 필요성 설명
- 4가지 알고리즘의 분리 기준 매칭