핵심 인사이트 (3줄 요약)

  1. 본질: 의사결정 트리는 **피처 값에 따라 데이터를 반복적으로 분할(Split)**하여 트리 구조의 규칙을 학습하는 해석 가능한(Interpretable) 분류·회귀 알고리즘이다.
  2. 가치: "나이 ≥ 30 → 소득 ≥ 5000만원 → 대출 승인"처럼 규칙이 인간이 읽을 수 있는 형태로 표현되어, 블랙박스 모델과 달리 의사결정 근거를 설명할 수 있다.
  3. 판단 포인트: 깊은 트리는 과적합(Overfitting) 위험이 크므로 가지치기(Pruning)·최대 깊이 제한이 필요하며, 앙상블(Random Forest·XGBoost)로 단일 트리의 약점을 극복한다.

Ⅰ. 개요 및 필요성

┌───────────────────────────────────────────────────────┐
│    의사결정 트리 예시 (대출 승인)                      │
├───────────────────────────────────────────────────────┤
│            [나이 ≥ 30?]                               │
│           /          \                                │
│         Yes          No                               │
│    [소득 ≥ 5000?]     [학력 = 대졸?]                  │
│     /      \          /       \                       │
│   Yes      No       Yes      No                      │
│  승인 ✅  거절 ❌   승인 ✅  거절 ❌                  │
└───────────────────────────────────────────────────────┘
  • 📢 섹션 요약 비유: 의사결정 트리는 20 질문 게임이다. "나이가 30 이상?" "소득이 5000만원 이상?" 등 질문을 반복하여 답에 도달한다.

Ⅱ. 아키텍처 및 핵심 원리

분할 기준

기준알고리즘설명
지니 불순도CART불순도 최소화
엔트로피ID3/C4.5정보 이득 최대화
분산 감소회귀 트리분산 최소화
  • 📢 섹션 요약 비유: 분할은 "이 질문으로 가장 깔끔하게 그룹이 나뉘는가?"를 측정하는 것이다.

Ⅲ. 비교 및 연결

비교단일 트리Random ForestXGBoost
과적합높음낮음낮음
해석가능어려움어려움
성능보통높음최고

Ⅳ. 실무 적용 및 기술사 판단

과적합 방지

  1. 가지치기 (Pruning): Pre-pruning(조기 중단), Post-pruning.
  2. max_depth 제한: 트리 깊이 제한.
  3. 앙상블: 여러 트리를 결합 (RF, XGBoost).

Ⅴ. 기대효과 및 결론

의사결정 트리는 가장 해석 가능한 ML 알고리즘이며, Random Forest·XGBoost·LightGBM의 기본 학습기(Base Learner)로서 현대 ML의 근간이다.


📌 관련 개념 맵

개념연결 포인트
지니 불순도CART의 분할 기준
엔트로피ID3/C4.5의 분할 기준
가지치기과적합 방지
Random Forest배깅 + 의사결정 트리
XGBoost부스팅 + 의사결정 트리

📈 관련 키워드 및 발전 흐름도

[ID3 (Quinlan, 1986) — 엔트로피 기반]
    │
    ▼
[C4.5 (1993) — ID3 개선, 연속 변수 처리]
    │
    ▼
[CART (Breiman, 1984→2001) — 지니, 회귀 트리]
    │
    ▼
[Random Forest (2001) — 배깅 앙상블]
    │
    ▼
[현재: XGBoost / LightGBM — 부스팅 앙상블]

👶 어린이를 위한 3줄 비유 설명

  1. 의사결정 트리는 20 질문 게임이에요. "나이가 30 이상?" "키가 크?" 질문으로 답을 찾아요.
  2. 질문을 너무 많이 하면(과적합) 오히려 헷갈리니까 적당히 해야 해요.
  3. 여러 게임을 동시에 하고 **다수결(Random Forest)**로 결정하면 더 정확해요!