개발로그필름

[ML] 결정트리회귀란? 본문

ML

[ML] 결정트리회귀란?

yuullog 2025. 5. 24. 15:12
728x90
반응형
SMALL
반응형

 

 

 

 

 

1. 결정트리 회귀란?

  • 숫자를 예측하는 모델입
  • 분류가 “어떤 카테고리인지” 맞추는 거라면, 회귀는 “숫자 값”을 맞추는 것

 

ex)

  • 어떤 집의 가격은 얼마일까?
  • 내일의 기온은 몇 도일까?
  • 고객이 평균적으로 얼마나 지출할까?

 

이런 수치형 값을 예측할 때 결정트리 회귀를 사용

 

 


 

 

2. 어떻게 작동할까?

  • 결정트리는 조건(질문)을 계속 만들어 데이터를 쪼갠다
  • 회귀 트리는 리프 노드마다 평균값을 넣어서 예측값을 만든다

 

작동 과정

  1. 데이터를 기준으로 나눈다 (예: “X <= 5”인가?)
  2. 나뉜 그룹이 숫자 예측값을 비슷하게 가지도록 계속 나눈다
  3. 더 이상 나눌 수 없거나, 정지 조건에 도달하면 멈춘다
  4. 마지막 노드(리프 노드)에는 그 구간의 평균값이 들어간다

 

 


 

 

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