Decision Tree에서 회귀 문제를 푸는 주요한 방식 중 하나

위와 같은 데이터가 있다고 할 때
각 데이터들이 모여있는 부분에 직선을 그려주는 형식.
위에서 나눈 형태에서 한번 더 나누게 되면 아래와 같은 형태가 됨

이를 계속해서 진행하다 보면 MSE가 최소로 되는 계단 형태의 그래프가 그려진다.

각 직선 부분을 기준으로 나눠짐.
아래와 같은 데이터가 있다.

X = X.reshape(-1, 1) # 학습을 위한 차원 변환 진행
# MSE 최소화 결정 트리 생성
dt_mse_reg = DecisionTreeRegressor(max_depth=3)
dt_mse_reg.fit(X, y)
max_depth=3 : 3층의 트리를 만들 것이다.
이를 시각화 하게 되면 아래와 같이 된다.

이를 실제 데이터 포인트에 그려보면
# 결과 예측 진행
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_pred = dt_mse_reg.predict(X_test)
# 시각화
plt.figure(figsize=(10, 6))
plt.scatter(X, y,
s=20, edgecolor="black",
c="darkorange", label="data")
plt.plot(X_test, y_pred,
color="cornflowerblue", label="prediction", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()

이런식으로 직선으로 나뉘는 회귀선을 볼 수 있다.
3~4사이에 아래로 내려간 형태가 있다.
이는 데이터 포인트 를 맞추려고 하다보니 그렇게 된건데, 이는 오버피팅되었다고 볼 수 있다고 한다.
그렇기 때문에 max_depth를 적당히 줘야 된다.

트리 구조는 상당히 많은 장점을 갖고 있음
• 해석 용이성 & 사용 편리함
• 적당히 괜찮은 성능
• 스케일링에 둔감함 등
단점! 하지만 트리 기반 모델은