결정트리란?
결정트리(Decision Tree)는 데이터를 여러 조건으로 반복해서 나누며 결과를 예측하는 머신러닝 알고리즘이다.
사람이 의사결정을 내리는 방식처럼 “이 조건을 만족하는가?”를 순서대로 판단하기 때문에 결과를 이해하고 설명하기 쉽다.
분류와 회귀 문제에 모두 사용할 수 있다.
- 분류: 결제 여부, 이탈 여부, 불량 여부 예측
- 회귀: 매출, 가격, 수요량 등 연속적인 값 예측
결정트리의 구조
결정트리는 다음 세 가지 요소로 구성된다.
구성 요소의미
| 루트 노드 | 가장 먼저 데이터를 나누는 시작점 |
| 내부 노드 | 특정 조건에 따라 데이터를 분할하는 지점 |
| 리프 노드 | 최종 예측 결과가 결정되는 지점 |
예를 들어 고객의 결제 여부를 예측한다면 다음과 같은 구조를 만들 수 있다.
방문 횟수 ≥ 3회?
├─ 아니오 → 미결제
└─ 예
└─ 평균 체류시간 ≥ 2시간?
├─ 아니오 → 미결제
└─ 예 → 결제
결정트리는 어떻게 기준을 선택할까?
결정트리는 데이터를 가장 잘 구분할 수 있는 변수와 기준값을 선택한다.
분류 문제에서는 주로 지니 불순도나 엔트로피를 사용한다.
불순도는 하나의 노드에 서로 다른 클래스가 얼마나 섞여 있는지를 나타낸다.
- 한 클래스만 존재하면 불순도가 낮음
- 여러 클래스가 섞여 있으면 불순도가 높음
결정트리는 분할 후 불순도가 가장 크게 감소하는 조건을 선택한다.
결정트리의 장점
- 결과를 시각화하고 해석하기 쉬움
- 변수 간 비선형 관계를 학습할 수 있음
- 스케일링이 거의 필요하지 않음
- 수치형과 범주형 데이터를 활용할 수 있음
- 변수 중요도를 확인할 수 있음
결정트리의 단점
- 트리가 깊어지면 과적합이 발생하기 쉬움
- 데이터가 조금만 바뀌어도 트리 구조가 크게 달라질 수 있음
- 하나의 트리는 랜덤 포레스트나 XGBoost보다 예측 성능이 낮을 수 있음
- 복잡한 트리는 해석하기 어려워짐
과적합을 줄이는 주요 설정
파라미터의미
| max_depth | 트리의 최대 깊이 제한 |
| min_samples_split | 노드를 나누기 위한 최소 데이터 수 |
| min_samples_leaf | 리프 노드에 필요한 최소 데이터 수 |
| max_leaf_nodes | 리프 노드의 최대 개수 |
| ccp_alpha | 불필요한 가지를 제거하는 가지치기 강도 |
트리의 깊이를 무제한으로 두면 학습 데이터를 지나치게 세밀하게 나누어 과적합될 가능성이 높다.
파이썬 예시
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
model = DecisionTreeClassifier(
max_depth=4,
min_samples_leaf=10,
random_state=42
)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
트리 구조를 시각화할 수도 있다.
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
plt.figure(figsize=(16, 8))
plot_tree(
model,
feature_names=X_train.columns,
class_names=["미결제", "결제"],
filled=True,
rounded=True
)
plt.show()
변수 중요도
결정트리는 각 변수가 데이터를 분할하면서 불순도를 얼마나 감소시켰는지를 기준으로 변수 중요도를 계산한다.
import pandas as pd
importance = pd.Series(
model.feature_importances_,
index=X_train.columns
).sort_values(ascending=False)
print(importance)
변수 중요도가 높다는 것은 해당 변수가 예측 과정에서 자주 사용되거나 불순도를 크게 줄였다는 의미다.
다만 변수 중요도만으로 인과관계를 판단할 수는 없다.
정리
결정트리는 조건문을 반복하여 데이터를 나누고 최종 결과를 예측하는 모델이다.
- 분류와 회귀 모두 사용 가능
- 구조가 직관적이고 해석하기 쉬움
- 별도의 스케일링이 거의 필요하지 않음
- 트리가 너무 깊어지면 과적합 가능성이 높음
따라서 결정트리는 단독 예측 모델뿐 아니라 데이터의 주요 분기 기준과 변수의 영향력을 파악하는 해석용 모델로도 유용하다.
'Data Analysis > 머신러닝' 카테고리의 다른 글
| 주성분 분석과 요인 분석 (0) | 2026.07.31 |
|---|---|
| 부스팅 (0) | 2026.07.31 |
| K-폴드 교차 (0) | 2026.07.31 |
| 편향과 분산 (0) | 2026.07.31 |
| 손실함수 (0) | 2026.07.31 |