의사결정나무 알고리즘
& R 실습 예시
6가지 알고리즘 차이부터 실제 iris 분류, 혼동행렬, kyphosis 기출문제까지. 나무가 어떻게 분류하고, 어디에서 틀리는지 직접 확인합니다.
총 13장 · 좌우 화살표로 장 이동의사결정나무 알고리즘, 6종류를 구분하자
문제유형 · 분리 방식 · 분리 기준을 함께 보면 차이가 선명해집니다.
이진 분리의 대표
Classification And Regression Trees
범주형 목표 → 지니지수
연속형 목표 → 분산 감소
항상 두 개 가지로 분리 (Binary Split)
여러 갈래도 가능
범주형 입력변수는 다지분리가 가능하고, 교재는 엔트로피를 주요 개념으로 설명합니다.
CART와 분기 개수 비교가 핵심
통계적 유의성 기반
범주형 목표 → 카이제곱
연속형 목표 → F 통계량
일반적 사후 가지치기 대신 성장 중지 기준 활용
정보이득 최대화
정보 이득(Information Gain)이 가장 큰 특성을 선택합니다.
초기 알고리즘 · 연속형·과적합 대응에 한계
선택 편향 완화
통계적 검정을 이용하는 빠르고 편향을 줄인 트리 알고리즘입니다.
Quick, Unbiased, Efficient, Statistical Tree
구간별 스플라인 회귀
변수의 구간별 관계를 스플라인으로 모델링합니다.
엄밀히는 일반적인 분기형 트리와 다른 회귀 방법
한 표로 보는 알고리즘 선택 기준
교재의 기술을 중심으로 비교했습니다. 표의 ‘적합 사례’는 이해를 돕는 예시입니다.
| 방법 | 핵심 기준 | 분리 특징 | 적합 상황 예시 | 핵심 기억 |
|---|---|---|---|---|
| CART | 범주형: 지니 / 연속형: 분산 감소 | 이진 분리 | 관광상품 구매 여부·지출액 | 2개 가지 |
| C4.5 / C5.0 | 엔트로피 계열 | 다지분리 가능 | 관광객 선호 유형 분류 | 여러 가지 |
| CHAID | 카이제곱 / F 통계량 | 유의성 검정 기반 | 관광만족도 집단 비교 | 통계 검정 |
| ID3 | 정보이득 | 초기 범주형 분류 중심 | 단순 선택규칙 설명 | Information Gain |
| QUEST | 통계 검정 | 변수 선택 편향 완화 | 특성 수가 다양한 분류 | Unbiased |
| MARS | 적응적 회귀 스플라인 | 구간별 비선형 관계 | 가격·소비액 추정 | Spline |
시험에 자주 나오는 3가지 짝
출제문항 주의
분류 지표(지니·엔트로피)와 모형 평가 지표(정확도·재현율)는 다른 단계에서 사용합니다.
이진분리(Binary)와 다지분리(Multiple)를 그림으로
알고리즘마다 한 번의 분할에서 허용하는 가지 수가 다릅니다.
① CART · 이진분리
한 번의 분리에서 항상 좌/우 2개 자식 마디를 만듭니다.
② C4.5 / CHAID · 다지분리 가능
입력변수 범주에 따라 여러 갈래로 나눌 수 있습니다.
iris 데이터를 70% 학습·30% 평가로 분할
꽃받침·꽃잎의 길이와 폭으로 붓꽃 세 종류를 예측하는 대표적인 분류 연습입니다.
1. 사용할 데이터
2. 교재 R 코드
party 패키지 유의사항(교재): 결측값 처리나 트리 표시·predict() 실행에서 문제가 발생할 수 있다고 안내합니다. 실제 동작은 데이터와 패키지 버전에 따라 확인이 필요합니다.
3. 데이터 분할 실습
※ 교재 결과표에서 실제 학습 107건 / 시험 43건은 무작위 할당으로 얻은 한 번의 실행 예시입니다.
iris 꽃잎 데이터는 실제로 어떻게 모여 있을까?
데이터에 분류 경계선을 그려 보면 의사결정나무 규칙을 한눈에 이해할 수 있습니다.
분류할 변수는?
입력변수 (Predictors)
Sepal.Length, Sepal.Width, Petal.Length, Petal.Width
목표변수 (Target)
Species = setosa / versicolor / virginica
교재에 등장하는 경계
1차 분리: Petal.Length ≤ 1.7
2차 분리: Petal.Width ≤ 1.7
이 경계는 전체 150개 관측치를 분석해 얻은 것이 아니라 교재에 제시된 학습 예시의 결과입니다.
교재의 iris 의사결정나무 — 직접 예측하기
꽃잎 길이와 폭을 변경하면 교재에 제시된 분리 규칙을 따라 최종 분류가 달라집니다.
교재 ctree 구조 (학습 107건)
원문 트리: 첫 분리 Petal.Length ≤ 1.7 → setosa / 나머지 Petal.Width 기준으로 분리.
관측치 값을 바꿔 보세요
ctree()를 브라우저에서 다시 학습시키는 기능은 아닙니다.최종 잎노드(Leaf Node) 안에는 무엇이 들어 있을까?
하나의 잎노드에는 관측치가 여럿 들어 있고, 가장 많은 범주가 해당 노드의 예측값이 됩니다.
예측: setosa
setosa 34 · versicolor 0 · virginica 0
길이 ≤ 1.7 → 34/34 모두 setosa
예측: versicolor
setosa 0 · versicolor 36 · virginica 3
같은 노드에도 다른 범주 3건이 존재
예측: virginica
setosa 0 · versicolor 1 · virginica 33
모든 잎노드가 완벽히 순수할 필요는 없음
교재 R 코드 — 나무 생성
교재의 2가지 그래프
① plot(iris.tree) : 잎노드에 범주별 비율을 막대그래프로 표시합니다.
② plot(iris.tree, type="simple") : 조건과 예측 범주를 간단히 보여줍니다.
R의 table() 결과로 정확도를 직접 읽자
교재 숫자를 그대로 반영했습니다. 행은 예측값, 열은 실제값이라는 점이 중요합니다.
| 예측 \ 실제 | setosa | versicolor | virginica |
|---|
정확도 공식
학습·시험 성능 비교
예시에서 시험 정확도는 학습 정확도보다 낮습니다. 다만 이 차이만으로 과적합이라고 단정할 수는 없습니다.
set.seed()가 없어 재실행하면 표가 달라질 수 있습니다.kyphosis의 rpart 나무를 순서대로 읽기
Start·Age 조건에 따라 Kyphosis가 absent(없음) 또는 present(있음)으로 분류됩니다.
출처: 교재 423쪽 rpart() 출력·분기조건을 SVG로 작성. n=81, 결측이 없다는 가정의 훈련자료 예시.
출력의 각 열을 읽는 방법
node = 마디 번호
split = 분기 기준
n = 마디의 관측치 수
loss = 다수범주로 예측할 때의 오분류 수
yval = 마디에서 예측한 범주
yprob = 범주별 상대도수
교재 root 해석
root: absent · 비율 absent 64/81 ≈ 79.0%, present 17/81 ≈ 21.0%
Start와 Age 값을 바꿔 나무를 따라가 보세요
어느 잎노드에 도착하는지에 따라 예측값과 위험도가 달라집니다.
선택된 경로
왜 어떤 잎노드는 100%가 아닐까?
예를 들어 Start<8.5 구간의 19건은 absent 8건, present 11건입니다. 다수범주인 present를 예측하지만 8건의 오분류가 남습니다.
교재 핵심 기출문제 25번·26번
정답을 고르면 이유를 바로 확인할 수 있습니다.
연속형 목적변수에는 분산 감소, 범주형에는 지니지수를 사용하는 알고리즘은?
kyphosis 결정나무 결과에 대한 설명 중 부적절한 것은?
의사결정나무, 5쪽 내용을 한 장으로 정리
시험 직전에는 ‘분할 기준 → 학습·예측 → 결과 해석 → 과적합 주의’를 연결해 기억하세요.
핵심 개념 5가지
| CART | 범주형 Gini / 연속형 분산 감소 / 이진분리 |
| CHAID | 카이제곱·F 통계량 |
| ID3 | Information Gain |
| ctree() | 조건부 추론 트리 생성 (party 패키지) |
| rpart() | 나무 출력의 n / loss / yval / yprob 해석 |