개발로그필름
[ML] 결정트리회귀란? 본문
728x90
반응형
SMALL
반응형
1. 결정트리 회귀란?
- 숫자를 예측하는 모델입
- 분류가 “어떤 카테고리인지” 맞추는 거라면, 회귀는 “숫자 값”을 맞추는 것
ex)
- 어떤 집의 가격은 얼마일까?
- 내일의 기온은 몇 도일까?
- 고객이 평균적으로 얼마나 지출할까?
이런 수치형 값을 예측할 때 결정트리 회귀를 사용
2. 어떻게 작동할까?
- 결정트리는 조건(질문)을 계속 만들어 데이터를 쪼갠다
- 회귀 트리는 리프 노드마다 평균값을 넣어서 예측값을 만든다
작동 과정
- 데이터를 기준으로 나눈다 (예: “X <= 5”인가?)
- 나뉜 그룹이 숫자 예측값을 비슷하게 가지도록 계속 나눈다
- 더 이상 나눌 수 없거나, 정지 조건에 도달하면 멈춘다
- 마지막 노드(리프 노드)에는 그 구간의 평균값이 들어간다
3. 수학적으로는?
- 분할할 때마다 “오차(불순도)”를 최소화하는 방향으로 분기
- 즉, 각 노드의 MSE(평균제곱오차) 를 줄이는 방식
- 회귀에서는 Gini나 Entropy 대신
- MAE(Mean Absolute Error)를 줄이도록 학습
- → 평균 제곱 오차(Mean Squared Error)
4. 예제
- 어떤 집이 면적=70㎡, 방 수=3개 라고 할 때
- “이런 조건에 해당하는 집들의 평균 가격은 3억이다”
→ 그러면 회귀트리는 “3억”이라고 예측
🔧 5. Python 코드 예제 (scikit-learn)
from sklearn.datasets import fetch_california_housing
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 데이터 불러오기
data = fetch_california_housing()
X = data.data
y = data.target
# 훈련 / 테스트 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 결정트리 회귀 모델
reg = DecisionTreeRegressor(max_depth=4) # 깊이 제한
reg.fit(X_train, y_train)
# 예측
y_pred = reg.predict(X_test)
# 성능 평가
mse = mean_squared_error(y_test, y_pred)
print(f'MSE: {mse:.4f}')
6. 시각화
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 10))
plot_tree(reg, feature_names=data.feature_names, filled=True)
plt.show()
7. 장점 vs 단점
장점 |
단점 |
이해 쉽고 시각화 가능 | 과적합(overfitting) 위험 있음 |
복잡한 관계도 잘 학습함 | 작은 변화에도 민감함 |
이상치에 강함 | 리프 노드 예측값이 뚝뚝 끊기는 느낌 (불연속) |
8. 과적합 방지법 (Pruning)
- max_depth: 트리 깊이 제한
- min_samples_split: 분할하려면 최소 몇 개의 데이터가 있어야 함
- min_samples_leaf: 리프 노드에 최소 몇 개의 데이터 남겨야 함
reg = DecisionTreeRegressor(
max_depth=5,
min_samples_leaf=10
)
9. 회귀트리 vs 분류트리 비교
항목 | 분류트리 | 회귀트리 |
예측값 | 클래스(라벨) | 숫자 |
불순도 | Gini, Entropy | MSE, MAE |
리프 노드 값 | 가장 많은 클래스 | 평균값 |
결정트리 회귀는 “조건에 따라 데이터를 나누고, 각 구간의 평균값을 예측값으로 사용하는” 간단하고 직관적인 회귀 모델
반응형
LIST
'ML' 카테고리의 다른 글
[ML] 부트스트랩(복원추출) (0) | 2025.05.26 |
---|---|
[ML] 앙상블이란? (0) | 2025.05.25 |
[ML] 결정나무의 주요 특징 (0) | 2025.05.24 |
[ML] 과소적합 vs 과대적합 (0) | 2025.05.23 |
[ML] 원 핫 인코딩 (One-Hot Encoding) (0) | 2025.05.22 |
Comments