결정 트리 (Decision Tree) 학습의 핵심 — 불순도 (엔트로피, 지니 지수)
핵심 인사이트 (3줄 요약)
- 본질: 결정 트리(Decision Tree)는 마치 "스무고개" 게임처럼 데이터의 특징(Feature)에 대해 예/아니오(Yes/No) 질문을 반복적으로 던지며 데이터를 분할해 나가는 직관적인 머신러닝 알고리즘으로, 이때 "어떤 질문을 먼저 던져야 데이터를 가장 깔끔하게 나눌 수 있을까?"를 수학적으로 계산하는 기준이 바로 **불순도(Impurity)**다.
- 가치: 인공지능이 무작정 질문을 던지는 것이 아니라, 정보 이론에 기반한 **엔트로피(Entropy)**나 통계학적 불평등 지수인 **지니 지수(Gini Index)**를 계산하여, 한 번 질문으로 무질서한 데이터가 가장 순수하게(한 가지 정답만 남도록) 쪼개지는 최적의 조건을 찾아내는 자율적 가지치기(Branching) 메커니즘을 제공한다.
- 융합: 단일 결정 트리는 학습 데이터의 끝까지 꼬리를 물고 질문을 만들어 너무 복잡해지는 **과적합(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)해졌습니다! 결정 트리는 이렇게 바구니를 가장 순수하게 정리해 주는 "마법의 질문"을 수학적으로 찾아내는 정리 정돈의 달인입니다.
-
등장 배경 및 발전 과정:
- 초기 규칙 기반 시스템: 과거에는 전문가(의사)가 직접 if-then 룰을 손으로 짰다. 그러나 데이터가 많아지며 룰이 충돌했다.
- 정보 획득량(Information Gain)의 도입: 로스 퀸란(Ross Quinlan)이 정보 이론의 **엔트로피(Entropy)**를 접목하여 ID3 알고리즘을 개발, 기계가 스스로 최적의 질문을 찾아 나무를 기르기 시작했다.
- 지니 지수(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)*가 산업 표준으로 자리 잡았다.
Ⅲ. 실무 적용 및 기술사적 판단
실무 시나리오
-
시나리오 — 딥러닝(블랙박스)의 한계와 설명 가능한 AI (XAI) 요구: 대형 은행에서 AI 대출 심사 시스템을 도입하려 한다. 데이터 분석팀이 정확도 99%의 딥러닝 모델을 만들어 갔으나, 심사팀과 금감원은 "고객이 왜 대출 거절당했냐고 물으면 AI가 어떻게 설명할 거냐?"라며 도입을 거부했다. 딥러닝은 수억 개의 신경망 파라미터가 엮여 있어 대출 거절의 명확한 인과 관계(Why)를 설명할 수 없다.
- 판단: 정형 데이터 및 규제 산업(금융, 의료)에서는 정확도 1%를 버리더라도 **설명 가능성(Interpretability)**을 취하는 것이 아키텍처의 핵심 요건이다.
- 해결책: 블랙박스를 걷어내고 단일 결정 트리(Decision Tree) 모델을 사용한다. 트리 모델은 학습이 끝나면 그림(Graph) 형태로 "1번 조건: 소득이 3천만 원 이하인가? ─▶ Yes ─▶ 2번 조건: 연체 이력이 1회 이상인가? ─▶ Yes ─▶ 거절!" 이라는 직관적인 if-else 규칙 트리(Rule Set)를 화면에 그대로 토해낸다. 고객과 규제 당국에 거절 사유를 100% 투명하게 입증(White-box)할 수 있는 완벽한 면죄부를 얻게 된다.
-
시나리오 — 파라미터 방치로 인한 과적합(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초 만에 나눠집니다! (불순도 0 달성)
- 이렇게 어떤 질문을 던져야 쓰레기들이 가장 잘 걸러지고 한 가지 색깔만 깨끗하게 남을지 점수를 매겨서(지니 지수) 최고의 질문만 찾아내는 로봇이 바로 '결정 트리'랍니다!