
이 문서는 의사결정트리(Decision Tree) 알고리즘의 기초 이론부터 실습 예제,
그리고 엔트로피(Entropy), 정보이득(Information Gain) 수식까지 포함하여 학습한 내용을 자세히 정리한 자료입니다.
의사결정트리는 분류(classification) 또는 회귀(regression) 문제를 해결하는 데 사용되는
가장 직관적이고 구조적인 머신러닝 알고리즘 중 하나입니다.
새로운 샘플이 들어왔을 때, 트리의 루트에서 시작하여 각 노드에서 조건문을 따라가며
분기를 거쳐 최종 예측을 수행합니다.
트리의 구성 요소
즉, 데이터의 특성을 기반으로 질문을 던지듯 분기하며 최종적으로 클래스(분류) 또는 값(회귀)를 예측합니다.
의사결정트리는 데이터를 어떻게 나눌지 결정해야 하며, 이때 사용하는 대표적인 알고리즘이 바로 ID3입니다.
ID3는 다음 두 개념을 기반으로 작동합니다:
데이터 분할 기준 - 엔트로피(Entropy)와 정보이득(Information Gain)
이후 C4.5, CART 등에서 이를 보완하여 Gini 지수, 가지치기 등을 도입함
클래스가 k개일 때, 엔트로피 E는 다음과 같이 정의됩니다:
Entropy(S) = - ∑ p_i * log2(p_i)
Information Gain은 어떤 속성 A로 데이터를 분할했을 때
전체 엔트로피가 얼마나 줄어드는지를 계산하는 값입니다.
IG(S, A) = Entropy(S) - ∑ (|S_v| / |S|) * Entropy(S_v)
| 분포 | 클래스 구성 | 엔트로피 |
|---|---|---|
| 완전히 섞임 | [0.5, 0.5] | 1.0 |
| 대부분 동일 | [0.9, 0.1] | ~0.47 |
| 완전 순수 | [1.0, 0.0] | 0.0 |
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt
X, y = load_iris(return_X_y=True)
# ID3는 엔트로피 사용
model = DecisionTreeClassifier(criterion='entropy', max_depth=3)
model.fit(X, y)
# 시각화
plt.figure(figsize=(12, 6))
plot_tree(model, filled=True, feature_names=load_iris().feature_names, class_names=load_iris().target_names)
plt.show()
데이터 전처리
범주형 속성: LabelEncoder, OneHotEncoder 등을 활용해 숫자화 필요
연속형 속성: 자동으로 최적 임계값을 찾아 <= threshold 방식으로 분기
트리 분할 기준 설정
criterion="entropy": 정보이득(ID3) 기반 → 정확성은 높지만 계산 복잡
criterion="gini": 지니지수(CART) 기반 → 계산 빠르고 실무에서 일반적으로 사용
과적합 방지를 위한 하이퍼파라미터
max_depth: 트리의 최대 깊이 제한
min_samples_split: 분기 기준이 되기 위한 최소 샘플 수
min_samples_leaf: 리프 노드에 남을 최소 샘플 수
pruning: 불필요한 가지 제거 (사후 가지치기 또는 사전 제약)
성능 최적화 팁
교차검증으로 최적의 하이퍼파라미터 튜닝
불균형 클래스 문제 시 class_weight="balanced" 활용 가능
| 항목 | 설명 |
|---|---|
| 엔트로피 | 클래스 분포의 불확실성 측정 |
| 정보이득 | 분할 전후 엔트로피 감소량 |
| ID3 | 정보이득을 기준으로 속성 선택 |
| 지니지수 | CART에서 사용되는 간단한 불순도 지표 |
| 트리 과적합 제어 | max_depth, pruning 등 |
엔트로피 개념은 수학적으로 어렵지 않지만,
실제 분할 기준을 고르는 데 매우 직관적인 기준이 된다는 걸 알게 되었다.
ID3는 단순하면서도 이해하기 쉬운 알고리즘이지만,
실전에서는 Gini 지수 기반 CART가 더 널리 쓰인다는 점도 기억해야겠다.
다음에는 CART, C4.5, 그리고 Random Forest까지 비교 정리할 계획이다.