의사 결정 나무와 앙상블

YoungJae Kang·2025년 5월 25일
0

머신러닝 학습

목록 보기
11/14
post-thumbnail

1. 의사결정 트리란 무엇인가?

  • 의사결정 트리(Decision Tree)는 데이터를 분할해가며 예측을 수행하는 트리 기반 모델이다.
  • 루트 노드(root node)부터 시작해 각 결정 노드(decision node)에서 특정 특성(feature)을 기준으로 데이터를 분할하며, 마지막 리프 노드(leaf node)에서 예측 값을 출력한다.

    예: 귀 모양, 얼굴 모양, 수염 여부 등의 특성으로 고양이인지 아닌지를 분류

2. 의사결정 트리 학습 과정

2.1. 트리 구성 단계

  1. 루트 노드에서 어떤 특성(feature)으로 분할할지 선택

  2. 선택된 특성 값을 기준으로 데이터 분할

  3. 각 하위 노드에 대해 위 과정을 반복 (재귀적 트리 생성)

  4. 리프 노드 조건:

    • 모든 데이터가 하나의 클래스일 경우
    • 트리의 최대 깊이 도달
    • 정보 이득(information gain)이 임계값 이하
    • 노드 내 샘플 수가 최소 임계값보다 작을 경우

2.2. 분할 기준: 정보 이득 (Information Gain)

  • 엔트로피(Entropy): 데이터 집합의 불순도를 측정

    • 모든 클래스가 섞여 있을수록 엔트로피가 높음 (최대 1)
    • 하나의 클래스만 있을 경우 엔트로피는 0
  • 정보 이득:

    • 분할 전 엔트로피 − 분할 후 가중 평균 엔트로피
    • 정보 이득이 큰 특성을 선택해 트리를 분할

2.3. 연속형 변수 처리

  • 연속형 변수는 다양한 임계값(threshold)을 기준으로 분할
  • 예: 무게 ≤ 9 또는 > 9
  • 각 임계값마다 정보 이득을 계산하여 가장 큰 정보 이득을 주는 값을 선택

2.4. 범주형 변수 처리

  • 범주형 변수가 셋 이상의 값을 가질 경우, 원-핫 인코딩(One-hot encoding)을 사용
  • 각 카테고리를 0 또는 1로 인코딩하여 의사결정 트리 학습에 사용

3. 트리 앙상블 (Tree Ensembles)

3.1. 단일 트리의 한계

  • 하나의 의사결정 트리는 훈련 데이터에 민감해 overfitting 또는 underfitting 가능성 있음
  • 해결책: 여러 개의 트리를 결합해 예측 성능을 향상

3.2. 배깅 (Bagging)과 랜덤 포레스트 (Random Forest)

  • 배깅(Bootstrap Aggregating): 훈련 세트를 복원 추출로 여러 개 샘플링해 각기 다른 트리를 학습

  • 랜덤 포레스트(Random Forest):

    • 배깅 + 각 노드에서 분할 시 특성의 일부를 무작위로 선택해 다양성 증가
    • 앙상블된 트리들의 예측을 다수결 또는 평균으로 결합해 최종 예측

3.3. 부스팅 (Boosting)과 XGBoost

  • 부스팅(Boosting): 순차적으로 여러 트리를 학습하며 이전 트리가 잘못 예측한 샘플에 가중치를 부여

  • XGBoost:

    • 부스팅 기반 고성능 알고리즘
    • 빠르고, 과적합 방지를 위한 정규화 포함
    • 머신러닝 대회에서 자주 우승하는 알고리즘
# XGBoost 사용 예시
from xgboost import XGBClassifier
model = XGBClassifier()
model.fit(X_train, y_train)

4. 분류 트리 vs 회귀 트리

  • 분류 트리: 클래스 예측 (예: 고양이인지 아닌지)

    • 분할 기준: 엔트로피 감소 (정보 이득)
  • 회귀 트리: 숫자 예측 (예: 동물 무게)

    • 분할 기준: 분산 감소 (Variance Reduction)
    • 리프 노드 예측값: 해당 노드의 평균 출력값

5. 장단점 및 사용 시기

장점

  • 빠른 학습 속도
  • 비교적 쉬운 해석 가능성 (작은 트리)
  • 정형 데이터(스프레드시트 형태)에 효과적

단점

  • 단일 트리는 데이터에 민감하고 불안정할 수 있음
  • 트리 앙상블은 해석이 어려움

사용 추천 상황

  • 정형 데이터가 있는 경우 → 의사결정 트리 또는 XGBoost
  • 이미지, 오디오, 텍스트 등 비정형 데이터 → 신경망(Neural Network)
profile
Data_Analyst

0개의 댓글