결정 트리 (Decision Tree) 학습의 핵심 — 불순도 (엔트로피, 지니 지수)

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

  1. 본질: 결정 트리(Decision Tree)는 마치 "스무고개" 게임처럼 데이터의 특징(Feature)에 대해 예/아니오(Yes/No) 질문을 반복적으로 던지며 데이터를 분할해 나가는 직관적인 머신러닝 알고리즘으로, 이때 "어떤 질문을 먼저 던져야 데이터를 가장 깔끔하게 나눌 수 있을까?"를 수학적으로 계산하는 기준이 바로 **불순도(Impurity)**다.
  2. 가치: 인공지능이 무작정 질문을 던지는 것이 아니라, 정보 이론에 기반한 **엔트로피(Entropy)**나 통계학적 불평등 지수인 **지니 지수(Gini Index)**를 계산하여, 한 번 질문으로 무질서한 데이터가 가장 순수하게(한 가지 정답만 남도록) 쪼개지는 최적의 조건을 찾아내는 자율적 가지치기(Branching) 메커니즘을 제공한다.
  3. 융합: 단일 결정 트리는 학습 데이터의 끝까지 꼬리를 물고 질문을 만들어 너무 복잡해지는 **과적합(Overfitting)**이라는 치명적 약점을 가지지만, 이 단순한 트리 수백 개를 모아 투표시키는 배깅(랜덤포레스트)과 부스팅(XGBoost) 기술의 핵심 기초 재료(Base Learner)로 융합되어 현대 AI 대회를 지배하고 있다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: 결정 트리는 데이터를 조건문(if-else)의 사다리 타기 형태로 분류(Classification)하거나 예측(Regression)하는 지도 학습 알고리즘이다. 딥러닝 같은 블랙박스(Black-box) 알고리즘과 달리, 꼭대기 뿌리(Root)부터 나뭇잎(Leaf)까지 질문을 따라 내려가는 시각적 구조를 그려낼 수 있어 인간이 이해하기 매우 쉬운 화이트박스(White-box) 모델이다.

  • 필요성: 병원에서 1만 명의 환자 데이터(나이, 혈압, 콜레스테롤)를 줬다. 여기서 암 환자와 정상인을 분리해야 한다. "혈압이 120 이상인가?"로 먼저 쪼갤지, "나이가 50 이상인가?"로 먼저 쪼갤지 인간의 감으로 정하면 최악의 분류표가 나온다. 기계가 스스로 "질문 1개를 던졌을 때 섞여 있던 정상인과 암 환자가 가장 완벽하게 반반으로 확! 갈라지는 궁극의 첫 번째 질문"을 찾아내려면, 섞여 있는 정도(더러움)를 측정하는 **'수학적 혼탁도 측정기'**가 반드시 필요했다. 그것이 바로 불순도(Impurity) 개념이다.

  • 💡 비유: 바구니에 빨간 공 50개와 파란 공 50개가 마구 섞여 있습니다 (불순도 최고 = 엉망진창).

    • 나쁜 질문 (불순도 안 줄어듦): "크기가 큰 공인가?"라고 질문했더니, 오른쪽 바구니에 여전히 (빨강 25개, 파란 25개)가 섞여서 들어갔습니다. 헛수고입니다.
    • 최고의 질문 (불순도 0으로 만듦): "색깔이 빨간색인가?"라고 질문했더니, 오른쪽 바구니에 (빨강 50개, 파랑 0개)가 들어가 완벽하게 순수(Pure)해졌습니다! 결정 트리는 이렇게 바구니를 가장 순수하게 정리해 주는 "마법의 질문"을 수학적으로 찾아내는 정리 정돈의 달인입니다.
  • 등장 배경 및 발전 과정:

    1. 초기 규칙 기반 시스템: 과거에는 전문가(의사)가 직접 if-then 룰을 손으로 짰다. 그러나 데이터가 많아지며 룰이 충돌했다.
    2. 정보 획득량(Information Gain)의 도입: 로스 퀸란(Ross Quinlan)이 정보 이론의 **엔트로피(Entropy)**를 접목하여 ID3 알고리즘을 개발, 기계가 스스로 최적의 질문을 찾아 나무를 기르기 시작했다.
    3. 지니 지수(Gini Index)와 CART: 엔트로피의 로그(Log) 계산이 너무 느려서 컴퓨터 CPU가 뻗어버리자, 로그 대신 단순 사칙연산을 써서 미친 듯이 속도를 높인 지니 지수 기반의 CART(Classification and Regression Trees) 알고리즘이 등장해 현재 Scikit-learn 등의 표준 엔진으로 자리 잡았다.
  • 📢 섹션 요약 비유: 복잡한 물감들이 섞여 있는 팔레트를 보고 "이 팔레트가 얼마나 똥색(여러 색이 섞임)인지" 점수를 매긴 다음, 붓으로 한 번 그었을 때 똥색이 완벽한 '빨강'과 '파랑' 원색으로 깔끔하게 갈라지도록 최적의 각도를 찾아주는 그림 그리기 로봇입니다.


Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

결정 트리의 분할 구조 (Node Architecture)

나무는 위에서 아래로 거꾸로 자라며, 질문이 거듭될수록 데이터는 점점 순수(Pure)해진다.

  ┌───────────────────────────────────────────────────────────────┐
  │         결정 트리(Decision Tree)의 학습 과정 및 노드 분할 원리        │
  ├───────────────────────────────────────────────────────────────┤
  │                                                               │
  │   [ Root Node (뿌리 노드) ] - 섞여 있는 초기 데이터 100명           │
  │     - 🟢 생존자 50명, 🔴 사망자 50명 (타이타닉 데이터)               │
  │     - 현재 불순도(지니 지수) = 0.5 (완벽하게 반반 섞인 최악의 상태)      │
  │                                                               │
  │          ▼ (질문 탐색: "나이가 30세 이상인가?" vs "성별이 여성인가?")  │
  │          ▼ AI가 계산해보니 "성별"로 쪼갤 때 불순도가 제일 많이 떨어짐!   │
  │                                                               │
  │        [ 질문 1: 성별이 여성인가? (Best Split) ]                    │
  │             ↙(Yes)                       ↘ (No)               │
  │                                                               │
  │   [ Leaf Node 1 (나뭇잎) ]            [ Decision Node 2 ]       │
  │   - 🟢 생존자 45명, 🔴 사망자 5명      - 🟢 생존 5명, 🔴 사망 45명   │
  │   - 지니 지수 = 0.18 (꽤 순수해짐!)     - 지니 지수 = 0.18           │
  │   ▶ "여성은 생존한다"는 결론 획득.         ▶ 아직 좀 섞여 있으니 질문 1번 더!│
  │                                           │                   │
  │                                [ 질문 2: 티켓이 1등석인가? ]       │
  │                                     ↙(Yes)       ↘ (No)       │
  │                                 [ Leaf 2 ]     [ Leaf 3 ]     │
  │                               🟢생존 4, 🔴사망0  🟢생존 1, 🔴사망 45│
  │                                (지니지수=0) 완벽!  (지니지수=0.04) │
  └───────────────────────────────────────────────────────────────┘

[다이어그램 해설] AI는 무작위로 질문을 찔러보는 것이 아니다. 10개의 특성(나이, 성별, 좌석 등) 각각에 대해 모든 자를 수 있는 경계선에서 **'정보 획득량(Information Gain = 쪼개기 전 불순도 - 쪼갠 후 자식들의 불순도 평균)'**을 미친 듯이 연산한다. 정보 획득량이 가장 큰(즉, 분할 후 두 덩어리가 가장 한 가지 색깔로 쏠리게 되는) 변수와 기준값을 찾아내 첫 번째 나뭇가지(Split)를 치는 과정을 재귀적으로(Recursive) 무한 반복한다.


불순도를 측정하는 두 가지 칼날: 엔트로피 vs 지니 지수

지표 (Metric)수식 및 원리장점 및 단점사용 알고리즘
엔트로피 (Entropy)$-\sum (p_i \times \log_2(p_i))$
열역학의 무질서도 개념 차용. 완벽히 섞이면 1, 완벽히 순수하면 0
이론적으로 정교하고 트리가 균형 있게(Balanced) 자람.
단, 로그(Log) 계산이 들어가서 연산 속도가 느림.
C4.5, C5.0
지니 지수 (Gini Index)$1 - \sum (p_i)^2$
경제학의 빈부격차 지수 차용. 완벽히 섞이면 0.5, 완벽히 순수하면 0
제곱 연산만 사용하므로 계산 속도가 엄청나게 빠름.
단, 한쪽 노드로 데이터가 쏠리는(비대칭) 현상이 가끔 발생.
CART (Scikit-learn 기본값)

*결론적으로 현대 기계학습(특히 앙상블)에서는 수십만 번의 분할 연산 스피드가 생명이므로, 로그 계산의 늪을 피한 **지니 지수(Gini)*가 산업 표준으로 자리 잡았다.


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

실무 시나리오

  1. 시나리오 — 딥러닝(블랙박스)의 한계와 설명 가능한 AI (XAI) 요구: 대형 은행에서 AI 대출 심사 시스템을 도입하려 한다. 데이터 분석팀이 정확도 99%의 딥러닝 모델을 만들어 갔으나, 심사팀과 금감원은 "고객이 왜 대출 거절당했냐고 물으면 AI가 어떻게 설명할 거냐?"라며 도입을 거부했다. 딥러닝은 수억 개의 신경망 파라미터가 엮여 있어 대출 거절의 명확한 인과 관계(Why)를 설명할 수 없다.

    • 판단: 정형 데이터 및 규제 산업(금융, 의료)에서는 정확도 1%를 버리더라도 **설명 가능성(Interpretability)**을 취하는 것이 아키텍처의 핵심 요건이다.
    • 해결책: 블랙박스를 걷어내고 단일 결정 트리(Decision Tree) 모델을 사용한다. 트리 모델은 학습이 끝나면 그림(Graph) 형태로 "1번 조건: 소득이 3천만 원 이하인가? ─▶ Yes ─▶ 2번 조건: 연체 이력이 1회 이상인가? ─▶ Yes ─▶ 거절!" 이라는 직관적인 if-else 규칙 트리(Rule Set)를 화면에 그대로 토해낸다. 고객과 규제 당국에 거절 사유를 100% 투명하게 입증(White-box)할 수 있는 완벽한 면죄부를 얻게 된다.
  2. 시나리오 — 파라미터 방치로 인한 과적합(Overfitting) 폭발: 주니어 분석가가 결정 트리 하나에 수만 건의 복잡한 고객 데이터를 던져주고 아무 설정 없이 학습 버튼을 눌렀다. 학습 데이터(Train)의 정확도는 100%가 나왔는데, 내일 운영 서버에 배포한 실전 데이터(Test) 예측률은 40%로 반토막이 났다.

    • 판단: 결정 트리의 치명적 약점인 **'과적합(Overfitting)의 덫'**에 빠진 것이다. 나무를 제약 없이 키우면, 불순도가 0(완벽)이 될 때까지 끝도 없이 나뭇가지를 치고 내려간다. 심지어 노드 끝에 고객이 단 1명만 남을 때까지 쪼개서(노이즈까지 외워버림), 특정 고객의 점 하나(Outlier)에 특화된 1억만 개의 if문으로 이루어진 쓰레기 괴물 나무가 탄생한다.
    • 해결책: 무조건 가지치기(Pruning) 하이퍼파라미터 튜닝을 강제해야 한다.
      • max_depth (나무 깊이 제한): "질문은 무조건 5번까지만 던지고 멈춰!"
      • min_samples_split (분할 최소 데이터 수): "바구니에 데이터가 10개밖에 안 남았으면 더 이상 쪼개지 말고 다수결로 끝내!" 이처럼 엄격한 족쇄(제약)를 걸어 주어야, 나무가 지엽적인 노이즈를 씹어 삼키는 현상을 막고 부드러운 일반화(Generalization) 성능을 획득할 수 있다.

도입 체크리스트

  • 데이터 전처리 관점: 결정 트리 계열(랜포, XGBoost 등)의 최대 장점은 데이터 전처리에 손이 거의 안 간다는 것이다. 아키텍트라면 이 모델을 투입할 때, 단위가 다른 수치(키, 몸무게)를 맞추는 **스케일링(Standardization)**이나 결측치(NaN) 치환에 불필요한 공수를 낭비하고 있지 않은지 막아야 한다. 트리는 크기 비교(대소 관계)로만 자르기 때문에 값의 단위나 아웃라이어에 자체적인 면역력(Robustness)이 있다.

Ⅳ. 기대효과 및 결론

정량/정성 기대효과

구분인간의 직관(Ad-hoc) 기반 분할지니/엔트로피 기반 결정 트리개선 효과
정량 (분할 효율)"대충 나이 40세로 잘라보자" ─▶ 노이즈 발생수학적 최적점(예: 36.5세) 자동 도출오분류율(Error Rate)을 수학적 한계까지 최소화
정량 (변수 선택)100개의 변수 중 뭐가 중요한지 알 수 없음불순도를 가장 많이 떨어뜨린 변수 중요도(Feature Importance) 도출불필요한 데이터를 버려 분석 모델 용량 90% 다이어트
정성 (설명력)신경망(DNN)처럼 원리 모름 (블랙박스)if-else 사다리 게임 시각화 (화이트박스)의사/경영진 등 비(非)개발자도 AI 결과를 100% 이해 및 신뢰

결정 트리(Decision Tree) 자체는 수만 번의 분할을 거치며 너무 복잡하게 자라나기 쉬운 연약한 기초 모델이다. 하지만 이 모델이 엔트로피와 지니 지수라는 수학의 칼날(불순도)을 손에 쥐었을 때, 비로소 데이터 속 숨겨진 원석을 발라내는 조각가가 되었다. 기술사는 이 단일 트리가 가진 직관성과 설명력이라는 무기를 바탕으로 이해관계자를 설득하고, 실전의 성능 벽에 부딪혔을 때는 이 약한 나무들을 수백 그루 이어붙여 숲(Forest)을 만들고, 부스팅(Boosting) 앙상블로 엮어내는 AI 진화론의 서막이자 주춧돌로 다루어야 한다.


📌 관련 개념 맵 (Knowledge Graph)

개념 명칭관계 및 시너지 설명
불순도 (Impurity)결정 트리가 가지(Branch)를 칠 때 어떤 질문을 던질지 결정하는 채점 기준표. 섞여 있을수록 불순도가 높고, 한 가지 정답만 남을수록 불순도가 0으로 떨어진다.
정보 획득량 (Information Gain)질문을 던지기 전의 불순도에서, 질문을 던져 쪼갠 후의 불순도를 뺀 값. 이 획득량(이득)이 가장 큰 변수를 찾아 트리의 꼭대기 질문으로 삼는다.
가지치기 (Pruning)결정 트리가 너무 복잡하게 자라나 과적합(학습 데이터만 외우는 현상)되는 것을 막기 위해, 트리의 뎁스나 잎사귀 수를 강제로 잘라버리는 핵심 튜닝 작업이다.
변수 중요도 (Feature Importance)100개의 변수 중, 분할 시 정보 획득량을 가장 많이 기여한 변수(예: '나이'가 불순도를 제일 많이 줄임)의 순위를 매겨주는 데이터 분석의 황금 차트 기능이다.
랜덤 포레스트 (Random Forest)하나만 있으면 과적합으로 약점투성이인 이 결정 트리를 수백 그루 모아놓고 다수결로 투표시켜버리는 앙상블 세계의 최강자 모델이다.

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

  1. 섞여 있는 빨간 사탕과 파란 사탕을 제일 빨리 나누고 싶어요. "동그랗니?" 하고 물어보면 사탕은 다 동그라니까 아무 소용이 없겠죠? (불순도 안 떨어짐)
  2. 하지만 똑똑한 인공지능은 "딸기 맛인가요?"라고 질문을 던져요. 그러면 빨간색은 '네', 파란색은 '아니오' 바구니로 완벽하고 깨끗하게 1초 만에 나눠집니다! (불순도 0 달성)
  3. 이렇게 어떤 질문을 던져야 쓰레기들이 가장 잘 걸러지고 한 가지 색깔만 깨끗하게 남을지 점수를 매겨서(지니 지수) 최고의 질문만 찾아내는 로봇이 바로 '결정 트리'랍니다!