Ch.06
의사결정나무 (Decision Tree): 스무고개로 정답 찾기
의사결정나무(Decision Tree)는 우리가 흔히 아는 '스무고개' 게임과 똑같은 방식으로 작동하는 매력적인 머신러닝 모델입니다. 데이터를 분석해 질문을 던지고 '예' 또는 '아니오'로 대답하며 정답을 찾아가는 과정을 나무가 가지를 뻗어나가는 모양으로 보여줍니다. 수학적 지식이 깊지 않아도 결과가 나온 이유를 누구나 쉽게 이해할 수 있어, 실제 비즈니스 현장에서 가장 널리 사랑받는 기법입니다.
챕터별 머신러닝 도식화
챕터를 선택하면 아래 도식이 해당 챕터 내용으로 바뀌어요. 머신러닝 흐름을 한눈에 보세요.
루트에서 질문(조건)에 따라 예/아니오로 가지를 따라 내려가면 리프에서 예측값을 얻습니다.
의사결정나무: 스무고개로 정답 찾기
의사결정나무의 기본 구조 — 나무를 거꾸로 뒤집어 놓은 모습을 상상해 보세요! 맨 위에는 첫 번째 질문이 자리한 루트 노드(Root Node)가 있습니다. 여기서부터 데이터에 질문(조건)을 던져 '예'와 '아니오'에 따라 갈래길(내부 노드)을 타게 됩니다. 계속해서 질문을 거쳐 더 이상 쪼개지지 않는 끝부분인 리프 노드(Leaf Node)에 도착하면, 비로소 최종 예측값을 얻게 됩니다.
스무고개 게임과 완벽하게 똑같습니다 — 머릿속으로 동물을 맞히는 스무고개를 한다고 생각해 볼까요? '다리가 4개인가요?' (예) '초식 동물인가요?' (아니오) '호랑이!' 처럼 질문을 통해 정답의 범위를 점점 좁혀나갑니다. 의사결정나무도 마찬가지로 '고객의 나이가 30세 미만인가?' 같은 명확한 기준을 세워 데이터를 두 그룹으로 나누며 정답을 향해 나아갑니다.
좋은 질문의 기준: 불순도(Impurity) 낮추기 — 데이터가 여러 종류로 지저분하게 섞여 있는 상태를 불순도라고 합니다. 질문을 통해 데이터를 나누었을 때, 같은 종류끼리 깔끔하게 모이도록(불순도가 낮아지도록) 만드는 것이 목표입니다. 이를 계산하는 핵심 수식 두 가지를 소개합니다.
* 지니 불순도:
* 엔트로피:
* 💡 수식 쉽게 이해하기: 두 수식 모두 기호가 복잡해 보이지만, 핵심은 (전체 중 특정 데이터가 차지하는 비율)입니다. 만약 한 상자 안에 사과만 100% () 들어있다면 두 수식의 계산 결과는 모두 이 됩니다. 즉, '불순도가 0이다 = 아주 깔끔하게 100% 잘 분류되었다'는 뜻입니다. 반대로 사과와 배가 반반씩 섞여 있다면 불순도 값은 커집니다.
정보 이득(Information Gain): 질문의 가치 평가 — 그렇다면 어떤 질문이 가장 훌륭한 질문일까요? 복잡한 수식 대신 개념으로 이해해 봅시다. '질문하기 전의 불순도'에서 '질문한 후의 불순도'를 뺀 값을 정보 이득이라고 부릅니다. 쉽게 말해 '이 질문을 던졌더니 데이터가 이전보다 얼마나 더 깔끔하게 정리되었나?'를 측정하는 점수입니다. AI는 학습 과정에서 이 정보 이득 점수가 가장 높은(가장 똑똑한) 질문을 최우선으로 선택해 가지를 뻗어 나갑니다.
마지막 잎새(리프)에서의 최종 결정 — 꼬리에 꼬리를 무는 질문 끝에 리프 노드에 도착하면 최종 예측을 수행합니다.
- 모델 유형분류(Classification)
- 결정 방식 (예시)리프에 모인 데이터의 다수결 원칙
- 최종 출력 결과가장 많은 클래스 (예: '강아지')
- 모델 유형회귀(Regression)
- 결정 방식 (예시)리프에 모인 데이터의 평균값 계산
- 최종 출력 결과연속적인 수치 (예: '50만 원')
| 모델 유형 | 결정 방식 (예시) | 최종 출력 결과 |
|---|---|---|
| 분류(Classification) | 리프에 모인 데이터의 다수결 원칙 | 가장 많은 클래스 (예: '강아지') |
| 회귀(Regression) | 리프에 모인 데이터의 평균값 계산 | 연속적인 수치 (예: '50만 원') |
새로운 데이터가 들어와도 이 경로만 그대로 따라가면 아주 쉽게 예측 결과를 얻을 수 있습니다!
투머치토커 방지하기: 가지치기(Pruning) — 스무고개에서 너무 세세하고 쓸데없는 질문만 계속하다 보면, 내가 가진 연습 문제(훈련 데이터)에만 딱 맞고 실전에서는 엉뚱한 답을 내놓는 과적합(Overfitting) 상태에 빠지게 됩니다. 이를 방지하기 위해 나무가 너무 깊게 자라지 못하도록 잔가지를 싹둑 잘라내는 가지치기 작업이 필수입니다. 이렇게 잘 다듬어진 나무들은 훗날 거대한 숲을 이루는 앙상블 모델(랜덤 포레스트 등)의 튼튼한 뼈대가 됩니다.
속마음을 다 보여주는 투명한 AI (설명 가능한 AI) — 복잡한 딥러닝 모델은 결론을 내놔도 '왜 그렇게 판단했는지' 알기 어려운 블랙박스 같습니다. 반면, 의사결정나무는 '나이가 30세 미만이고, 소득이 3천만 원 이상이어서 대출을 승인했습니다'처럼 판단의 이유를 명확한 질문 경로로 설명해 줍니다. 신뢰가 생명인 금융, 의료 분야에서 사랑받는 이유입니다.
직선을 넘어선 유연함 (비선형 경계 표현) — 단순한 선형 회귀 모델이 데이터를 자를 때 반듯한 직선(가위)만 쓸 수 있었다면, 의사결정나무는 종이를 여러 번 접어서 오려내듯 계단 모양으로 구역을 잘게 나눌 수 있습니다. 덕분에 복잡하게 얽혀있는 데이터 패턴도 정교하게 분리해 냅니다.
더 강력한 마법의 기초 뼈대 (앙상블의 기본 단위) — 나무 한 그루는 때로 변덕스럽고 예측 성능에 한계가 있을 수 있습니다. 하지만 이 나무들을 수백 그루 모아 숲을 이루면(랜덤 포레스트), 데이터 분석 대회를 휩쓰는 최고 수준의 AI가 탄생합니다. 즉, 의사결정나무는 고급 머신러닝으로 가기 위한 필수 관문입니다.
은행의 깐깐한 대출 심사관 (신용 평가) — '연봉이 5천만 원 이상인가요?', '최근 1년 내 연체 기록이 있나요?' 같은 조건의 가지를 따라 내려가며, 최종적으로 이 고객에게 대출을 해줄지 말지를 명확한 기준에 따라 판단합니다.
친절한 의사 선생님의 진단 보조 (의료 진단) — 환자의 건강 데이터(혈압, 콜레스테롤 수치 등)를 바탕으로 의학적 스무고개를 진행하여, 특정 질병에 걸렸을 확률이 높은지 예측하고 의사의 최종 진단을 돕습니다.
마케터의 비밀 무기 (고객 이탈 및 구매 예측) — '우리 쇼핑몰에 가입한 지 6개월이 넘었는가?', '최근 한 달간 로그인 횟수가 3회 이하인가?' 등을 따져보고, 곧 우리 서비스를 떠날 것 같은 VIP 고객을 찾아내어 미리 할인 쿠폰을 발송하는 등 맞춤형 마케팅 전략을 세웁니다.
의사결정나무 풀이 요약 — 문제에서 묻는 유형을 먼저 확인한 뒤, 아래 문제 풀이를 위한 설명 표와 예시를 보며 풀면 됩니다.
(1) 경로 따라가기: 루트에서 시작해 0=왼쪽(아니오), 1=오른쪽(예)으로 하나씩 이동한 뒤, 도달한 리프의 예측(0 또는 1)이 답.
(2) 지니 불순도: 해당 노드에서 클래스별 비율 를 구하고 를 계산한 뒤 를 반올림한 정수.
(3) 엔트로피: 계산 후 반올림.
(4) 리프 다수결: 클래스 0이 개, 1이 개일 때 이면 0, 아니면 1. 노드 개수·리프 개수·깊이는 문제에 나온 숫자 그대로 더하거나 쓰면 됩니다.