Data Analysis/머신러닝

결정트리

subinz 2026. 7. 31. 17:23

결정트리란?

결정트리(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