PART 03 · 데이터 분석 / 5장 정형 데이터 마이닝

3절. 의사결정나무 분석
이론 + 구조도 + 분리기준 + 기출문제 해설

교재 408~414쪽을 한 번에 학습할 수 있도록 핵심 개념과 계산 원리를 그림·비교표·예제로 정리했습니다. 마지막에는 기출 21~23번을 직접 풀고 해설을 확인할 수 있습니다.

🌳 Decision Tree⚖️ Gini · Entropy✂️ Pruning🧪 R 실습📝 기출 3문항
01

학습목표와 핵심 개념 408쪽

"규칙으로 데이터 공간을 반복해서 나누어 예측한다"
지도학습
정답이 있는 자료로 학습
Top-down
위에서 아래로 분기
2종류
분류나무 / 회귀나무
핵심 목표
좋은 분리 + 일반화
정의 · Definition

의사결정나무(Decision Tree)

입력변수의 조건에 따라 데이터를 순차적으로 나누고, 마지막 끝마디에서 범주 또는 수치를 예측하는 나무형 모형입니다.

분류나무
범주형 결과 예측
예: 관광상품 구매 / 비구매
회귀나무
연속형 결과 예측
예: 예상 지출액(원)
학습목표 3개

공부한 뒤 할 수 있어야 할 것

  1. 의사결정나무의 개념과 구조를 설명한다.
  2. CART · C4.5 · C5.0 · CHAID의 차이를 구분한다.
  3. R에서 나무를 학습·평가하고 가지치기를 적용한다.
시험 암기 문장
뿌리마디 → 분리조건 → 자식마디 → 끝마디. 데이터는 하향식(top-down)으로 분류됩니다.
02

의사결정나무의 구성요소 409쪽

관광상품 구매 예측을 위한 교육용 가상 데이터(10명)
ROOT NODE · 뿌리마디만족도 ≥ 4점?
전체 10명: 구매 6 · 비구매 4
예(Yes) · 5명
LEAF · 끝마디구매 예측
구매 5명 / 비구매 0명
구매 비율 100%
아니요(No) · 5명
LEAF · 끝마디비구매 예측
구매 1명 / 비구매 4명
비구매 비율 80%

노드(Node) 용어

  • 뿌리마디(Root Node): 전체 데이터를 포함하는 시작 마디
  • 부모마디(Parent Node): 분리의 출발점이 되는 상위 마디
  • 자식마디(Child Node): 부모마디에서 나누어진 하위 마디
  • 중간마디(Internal Node): 다시 분리되는 마디(뿌리마디도 자식이 있으면 내부 노드)
  • 끝마디(Terminal / Leaf Node): 추가로 나뉘지 않는 마지막 마디

연결과 깊이

  • 가지(Branch / Edge): 노드를 연결하는 선. 뿌리에서 끝마디까지의 연결 순서를 경로(Path)라고 합니다.
  • 깊이(Depth): 일반적으로 뿌리마디를 0으로 보았을 때 해당 노드까지의 간선 수. 위 예시의 끝마디 깊이는 1입니다.
  • 분기(Split): 한 노드를 조건에 따라 자식마디로 나누는 과정
교재 표현 보완
깊이는 단순히 '중간마디 수'로 정의하기보다 루트부터 해당 노드까지의 경로 길이로 기억하면 정확합니다.
03

활용방법과 장단점 409~410쪽

설명력을 확보하면서 예측 성능을 평가
세분화 · Segmentation

비슷한 집단 찾기

고객을 조건별로 나누고 그룹별 특성을 해석합니다. 예: 고만족·저만족 관광객
분류 · Classification

범주 예측

새로운 고객이 어느 등급에 속할지 예측합니다. 예: 재방문/미재방문
예측 · Prediction

미래 결과 예측

관찰된 규칙으로 구매 여부 또는 매출액을 예측합니다. 분류·회귀 모두 포함
변수 선택

중요한 변수 찾기

여러 후보 중 실제 분리에 활용되는 변수를 살펴봅니다. 단, 한 번의 나무 결과가 변수의 절대적 중요성을 보장하지는 않습니다.
교호작용 · Interaction

조건의 조합 파악

예: 연령에 따라 만족도가 구매에 미치는 영향이 달라지는 규칙을 발견합니다.
구간화 · Discretization

숫자를 규칙으로 나누기

연속형 변수에 기준점을 설정합니다. 예: 만족도 ≥ 4점과 그 미만.

✔ 주요 장점

  • 조건문 형태라 이해와 설명이 쉽다.
  • 연속형·범주형 예측변수를 다룰 수 있다(구현에 따라 전처리 필요).
  • 변수 간 비선형 관계와 교호작용을 규칙으로 표현한다.
  • 표준화가 필수는 아니며 복잡한 가정을 적게 요구한다.
  • 단일 나무는 상대적으로 계산이 간편하고 시각화가 쉽다.

△ 주요 단점과 유의점

  • 나무가 너무 크면 과대적합(Overfitting)이 생긴다.
  • 소량의 데이터 변경으로 분할 구조가 크게 바뀔 수 있다.
  • 축 정렬 분기 때문에 복잡한 결정경계를 표현하기에 비효율적일 수 있다.
  • 탐욕적 분할은 전체 최적해를 보장하지 않는다.
  • 변수 중요도는 계산 가능하지만 상관변수와 분할 편향에 주의한다.
시험·실무 구분 교재에 나오는 “잡음에 민감하지 않다”, “분류 정확도가 높다”는 장점이 항상 성립하는 것은 아닙니다. 단일 나무는 잡음과 작은 표본 변화에 민감할 수 있으므로 교차검증과 가지치기가 중요합니다. 신용평가처럼 이유 설명이 필요한 상황에서는 해석력이, 고객 반응 예측에서는 예측력이 상대적으로 중요할 수 있습니다.
04

대표 알고리즘 비교 408쪽 도입 보충

어떤 불순도나 통계량으로 나누는지가 핵심
알고리즘핵심 분리기준특징기억할 키워드
CART
Classification and Regression Trees
분류: 지니 불순도
회귀: 제곱오차 감소 등
이진 분기를 기본으로 분류·회귀 모두 지원Gini / 회귀
C4.5정보이득비율(Gain Ratio)엔트로피 기반 정보이득을 정규화한 분리기준Entropy / Gain Ratio
C5.0정보이득비율 계열C4.5를 개선한 분류 알고리즘; 속도·규칙화 등 발전C4.5 개선
CHAID카이제곱 검정 등 통계적 유의성범주 병합과 다지 분기가 가능χ² / p값
빈출 연결 암기 CART ↔ 지니 지수 ↔ 이진 분기 / C4.5 ↔ 정보이득비율 / CHAID ↔ 카이제곱 검정. 단, 실제 구현에는 알고리즘별 세부 차이가 있습니다.
05

의사결정나무 분석과정 410~411쪽

성장 → 가지치기 → 타당성 평가 → 해석 및 예측
STEP 1 · GROWING

🌱 성장

각 마디에서 좋은 분리규칙을 선택하여 재귀적으로 분할합니다.

정지규칙에 도달하면 중단
STEP 2 · PRUNING

✂️ 가지치기

일반화에 불리하거나 지나치게 복잡한 가지를 제거합니다.

과대적합·복잡도 감소
STEP 3 · VALIDATION

🧪 타당성 평가

검증·시험 데이터, 교차검증, 분류 성능 등을 확인합니다.

예: 정확도, 위험도표, 이익도표
STEP 4 · INTERPRETATION

🔎 해석·예측

결정규칙을 이해하고 새로운 관측값에 적용합니다.

규칙 설명과 실제 활용

예: 한 번 분리하는 과정

  1. 방문만족도, 소득, 재방문경험 등 후보 변수 준비
  2. 각 변수의 여러 분할점별 불순도 감소량 계산
  3. 감소량이 가장 큰 분할 선택
  4. 각 자식마디에도 같은 계산을 반복
  5. 정지조건에 도달하면 끝마디로 확정

평가할 때 주의할 점

  • 학습 성능만 높으면 실제 예측이 나쁠 수 있습니다.
  • 교차검증으로 가지치기 정도를 결정할 수 있습니다.
  • 가능하면 최종 시험자료(Test set)는 모형 선택에 사용하지 않고 마지막에 확인합니다.
  • 분류나무는 정확도·정밀도·재현율, 회귀나무는 RMSE·MAE 등을 사용할 수 있습니다.
06

분리규칙과 분리기준 411~412쪽

불순도(Impurity)가 줄어드는 방향으로 데이터를 나눈다

분리규칙(Splitting Rule): 무엇으로, 어디서 나눌까?

연속형 변수
만족도 ≥ 4점 / 만족도 < 4점
수치 기준점(threshold)을 탐색
범주형 변수
{서울, 부산} / {대구, 광주}
범주 집합을 구분(구현별 차이)

이진 분류나무에서 최적 분할은 부모마디 불순도에서 자식마디의 표본비율 가중 평균 불순도를 뺀 값이 최대가 되는 방식으로 선택합니다.

Gini impurity · 지니 불순도

지니 지수

Gini(t) = 1 − Σk pk²
  • 한 범주만 있으면 0 (완전 순수).
  • 두 범주가 50:50이면 0.5 (이진 기준 최대).
  • 작을수록 불순도가 낮습니다.
Entropy · 엔트로피

엔트로피 지수

H(t) = − Σk pk log₂(pk)
  • 한 범주만 있으면 0.
  • 두 범주가 50:50이면 1 bit.
  • 정보이득 = 분리 전 엔트로피 − 가중 평균 분리 후 엔트로피.

정확한 비교 원리: 불순도 감소량

ΔI = I(부모) − [ (nL/n) × I(왼쪽) + (nR/n) × I(오른쪽) ]

위 관광상품 예시의 10명(구매 6, 비구매 4)을 만족도 기준으로 나누면:

부모마디
6명 vs 4명
Gini = 0.48
자식마디 가중 불순도
0.5×0 + 0.5×0.32
= 0.16
불순도 감소량
0.48 − 0.16
= 0.32
꼭 기억! 자식마디 각각의 지니 지수 또는 엔트로피를 무조건 최소화한다는 표현보다, 자식마디의 표본 수를 고려한 가중 평균 불순도를 최소화한다고 설명해야 정확합니다.

🧮 직접 바꿔 보는 지니·엔트로피 계산기

아래 수치는 교육용 예시입니다. 각 자식마디의 구매·비구매 인원을 변경하면 부모 불순도, 분리 후 불순도, 감소량이 즉시 바뀝니다.

분리 전 지니0.480분리 후 가중 지니 0.160
지니 감소량 0.320
분리 전 엔트로피0.971분리 후 가중 엔트로피 0.361
정보이득 0.610
총 10명 · 2개 자식마디
목표변수 유형주요 분리기준올바른 선택 원리
범주형(분류)지니 불순도 / 엔트로피 / 카이제곱 검정 등지니·엔트로피는 가중 불순도 감소가 큰 분할. CHAID류는 통계적 유의성 활용.
연속형(회귀)분산 또는 제곱오차(SSE) 감소, 분산분석 검정 등분리 후 제곱오차 감소가 큰 분할을 우선한다.
07

정지규칙과 가지치기 412~413쪽

과대적합 방지: 자라기 전에 멈추기 vs 자란 뒤 덜어내기
Pre-pruning · 사전 제어

⛔ 정지규칙(Stopping Rule)

나무를 성장시키는 도중 일정 조건을 만족하면 더 이상 분할하지 않습니다.

  • 최대 깊이에 도달
  • 마디 내 표본 수가 너무 적음
  • 불순도 개선 폭이 너무 작음
  • 마디 자료가 모두 같은 범주

예: maxdepth, minsplit, minbucket

Post-pruning · 사후 가지치기

✂️ 가지치기(Pruning)

상대적으로 크게 성장시킨 나무에서 과도하거나 효과가 약한 하위 가지를 제거합니다.

  • 복잡도 감소로 해석 편의성 개선
  • 과대적합 위험 감소
  • 교차검증으로 크기 선택 가능
  • CART는 비용-복잡도 가지치기 활용

예: R rpart::prune()

비용-복잡도 가지치기(Cost-Complexity Pruning)

Rα(T) = R(T) + α × |Tleaves|

나무의 예측오차(또는 불순도 기반 손실) R(T)에 끝마디 개수에 비례한 복잡도 벌점을 더하여 나무 크기를 제어합니다. α가 커질수록 단순한 나무를 선호합니다.

나무가 너무 클 때
학습자료에 지나치게 맞춤 → 과대적합
나무가 너무 작을 때
중요한 패턴을 놓침 → 과소적합
기출 포인트 21번과 연결 정지규칙도 과대적합 예방에 도움을 주지만, 문제에서 이미 복잡해진 나무의 불필요한 가지를 제거한다고 묻는다면 정답은 가지치기입니다.
08

R 프로그램 간단 실습 410쪽 iris 예시 확장

iris 데이터로 나무 학습 → 교차검증 기반 CP 확인 → 가지치기 → 정확도 측정

R 코드 · rpart 패키지

# 1. 데이터 및 패키지
# install.packages("rpart")  # 미설치 시 최초 1회
library(rpart)

data(iris)
set.seed(2026)
idx <- sample(seq_len(nrow(iris)), size = 0.7 * nrow(iris))
train <- iris[idx, ]
test  <- iris[-idx, ]

# 2. 분류나무 생성: Species는 범주형 목표변수
fit <- rpart(Species ~ ., data = train, method = "class",
             control = rpart.control(cp = 0.001,
                                     minsplit = 10,
                                     maxdepth = 5))

# 3. 나무 확인
plot(fit, uniform = TRUE, margin = 0.1)
text(fit, use.n = TRUE, cex = 0.8)
printcp(fit)  # 교차검증 오류 및 복잡도 매개변수
plotcp(fit)

# 4. 교차검증 오류가 가장 작은 CP 사용
cp_best <- fit$cptable[which.min(fit$cptable[, "xerror"]), "CP"]
fit_pruned <- prune(fit, cp = cp_best)

# 5. 시험자료 성능
pred <- predict(fit_pruned, newdata = test, type = "class")
confusion <- table(Actual = test$Species, Predicted = pred)
print(confusion)
accuracy <- mean(pred == test$Species)
print(accuracy)

# 최종 나무 시각화
plot(fit_pruned, uniform = TRUE, margin = 0.1)
text(fit_pruned, use.n = TRUE, cex = 0.8)
실습 해석 Species는 품종을 나타내는 범주형 목표변수이며, 나머지 꽃받침·꽃잎 측정값으로 품종을 분류합니다. cp는 CART 나무의 복잡도를 제어합니다. 이 예제는 학습용 무작위 분할이므로 결과 정확도는 실제 실행 환경과 분할에 따라 달라질 수 있습니다.
09

414쪽 기출문제 21~23번과 해설 414쪽

정답을 먼저 고른 뒤 '채점 · 해설 보기'를 누르세요. 각 선지의 판단 근거까지 확인합니다.
21번 · 15회 기출가지치기 · 과대적합

의사결정나무 모형에서 과대적합으로 인해 현실 문제에 적용할 적절한 규칙을 얻기 어려운 현상을 방지하기 위한 방법으로 가장 적절한 것은?

정답 ① · 가지치기(Pruning)

이미 성장한 의사결정나무에서 일반화에 불리한 가지를 제거하여 과대적합을 줄이는 방법입니다.

  • ② 스테밍: 자연어 처리에서 어간을 추출하는 방법.
  • ③ 정지규칙: 성장 도중 분할을 중단하는 방법. 이 역시 과대적합 예방 효과가 있으므로 완전히 무관하지 않습니다. 다만 교재의 의도는 사후 가지치기입니다.
  • ④ 랜덤포레스트: 여러 나무를 결합하는 앙상블 모형으로 단일 나무의 가지치기 절차가 아닙니다.
22번 · 34회 기출하향식 학습

의사결정나무 모형에 대한 설명 중 적절하지 않은 것은?

정답 ① · 상향식이 아니라 하향식(Top-down)

나무는 전체 데이터를 포함하는 뿌리마디에서 시작해 분리규칙을 적용하면서 자식마디로 내려가는 방식입니다. 따라서 상향식이라는 표현이 틀렸습니다.

  • ② 검증·시험데이터, 교차검증, 이익도표 등을 이용한 성능 평가는 가능합니다.
  • ③ 가지치기의 핵심 목적을 정확히 설명합니다.
  • ④ 분류·예측·해석이 필요한 다양한 분야에서 활용됩니다.
23번 · 40회 기출문항 표현 주의

다음 중 의사결정나무와 가장 관련 없는 내용은 무엇인가?

교재 정답 ② · '결정 정지'는 표준적인 핵심 용어가 아님

① 지니 지수는 불순도 지표, ③ 분기 기준은 데이터를 나누는 조건, ④ 가지치기는 복잡도를 제어하는 절차로 모두 의사결정나무의 핵심 개념입니다.

정확한 구분 '결정 정지'와 정지규칙(Stopping Rule)을 혼동하지 마세요. 정지규칙은 의사결정나무의 정식 개념이며 중요한 구성요소입니다. 따라서 ②를 정답으로 보는 교재 해설은 이 비표준적 표현을 전제로 이해해야 하며, 문항 자체는 다소 모호합니다.
채점 현황: 0 / 3문항정답: 21① · 22① · 23②
10

시험 직전 1장 요약 408~414쪽

핵심 개념 → 관련 지표 → 주의할 오개념

필수 암기 8가지

  1. 의사결정나무 = 지도학습 + 하향식 규칙
  2. 분류나무는 범주형, 회귀나무는 연속형 목표변수
  3. CART = 지니 / 이진 분기
  4. C4.5 = 정보이득비율
  5. CHAID = 카이제곱 검정
  6. 분리는 불순도 감소 최대
  7. 정지규칙 = 성장 중 분할 중단
  8. 가지치기 = 성장 후 가지 제거

오답을 피하는 6가지 구분

  • 상향식 ❌ → 하향식 ✅
  • 지니·엔트로피 값이 클수록 순수 ❌ → 작을수록 순수 ✅
  • 큰 나무 = 좋은 나무 ❌ → 과대적합 주의 ✅
  • 정지규칙 = 가지치기 ❌ → 수행 시점이 다름 ✅
  • 모든 나무에서 정확도가 반드시 높음 ❌ → 시험자료로 검증 ✅
  • 정지규칙은 의사결정나무와 무관 ❌ → 중요한 핵심 개념 ✅
한 문장 결론
의사결정나무는 분리기준에 따라 하향식으로 데이터를 나누는 지도학습 모형이며, 정지규칙과 가지치기로 복잡도를 제어하고 검증자료를 통해 일반화 성능을 확인합니다.