부스팅된 의사결정 트리 회귀

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 파이썬의 Scikit-Learn 라이브러리를 사용하여 1 차원 사인파 데이터셋에 대한 부스팅 의사결정 트리 회귀를 수행합니다. 300 개의 의사결정 트리 회귀자를 기본 학습자로 사용하는 AdaBoost 회귀자의 성능을 단일 의사결정 트리 회귀자의 성능과 비교합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접속합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

데이터 준비

먼저 사인 함수 관계와 일부 가우시안 노이즈를 가진 가상 데이터를 준비합니다. NumPy 의 linspace() 함수를 사용하여 0 과 6 사이에 100 개의 균등하게 분포된 값을 가진 1 차원 배열을 생성합니다. 그런 다음 np.newaxis 속성을 사용하여 1 차원 배열을 (100,1) 형태의 2 차원 배열로 변환합니다. 이 배열에 sin() 함수를 적용하고 배열을 6 으로 곱하여 얻은 두 번째 사인파를 더합니다. 마지막으로 NumPy 의 normal() 함수를 사용하여 평균 0, 표준 편차 0.1 의 가우시안 노이즈를 추가합니다.

import numpy as np

rng = np.random.RandomState(1)
X = np.linspace(0, 6, 100)[:, np.newaxis]
y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0])

의사결정 트리 및 AdaBoost 회귀자를 이용한 학습 및 예측

이제 분류기를 정의하고 데이터에 맞춥니다. 첫 번째 회귀자는 max_depth=4DecisionTreeRegressor로 정의합니다. 두 번째 회귀자는 max_depth=4DecisionTreeRegressor를 기본 학습자로 사용하는 AdaBoostRegressor로 정의합니다. 이 AdaBoost 회귀자는 n_estimators=300개의 기본 학습자로 구성합니다. 그런 다음 두 회귀자 모두를 데이터에 맞추고 동일한 데이터에 대한 예측을 수행하여 데이터에 얼마나 잘 맞는지 확인합니다.

from sklearn.ensemble import AdaBoostRegressor
from sklearn.tree import DecisionTreeRegressor

regr_1 = DecisionTreeRegressor(max_depth=4)

regr_2 = AdaBoostRegressor(
    DecisionTreeRegressor(max_depth=4), n_estimators=300, random_state=rng
)

regr_1.fit(X, y)
regr_2.fit(X, y)

y_1 = regr_1.predict(X)
y_2 = regr_2.predict(X)

결과 플롯

마지막으로, 단일 의사결정 트리 회귀자와 AdaBoost 회귀자라는 두 회귀자가 데이터에 얼마나 잘 맞는지 플롯합니다. Matplotlib 의 scatter() 함수를 사용하여 학습 샘플과 두 회귀자의 예측 값을 플롯합니다. Matplotlib 의 plot() 함수를 사용하여 두 회귀자 모두에 대해 데이터에 대한 예측 값을 플롯합니다. 플롯에 범례를 추가하여 두 회귀자를 구분합니다.

import matplotlib.pyplot as plt
import seaborn as sns

colors = sns.color_palette("colorblind")

plt.figure()
plt.scatter(X, y, color=colors[0], label="training samples")
plt.plot(X, y_1, color=colors[1], label="n_estimators=1", linewidth=2)
plt.plot(X, y_2, color=colors[2], label="n_estimators=300", linewidth=2)
plt.xlabel("데이터")
plt.ylabel("대상")
plt.title("부스팅된 의사결정 트리 회귀")
plt.legend()
plt.show()

요약

이 실습에서는 파이썬의 Scikit-Learn 라이브러리를 사용하여 1 차원 사인파 데이터셋에 대한 부스팅된 의사결정 트리 회귀를 수행하는 방법을 배웠습니다. 300 개의 의사결정 트리 회귀자를 기본 학습자로 사용하는 AdaBoost 회귀자와 단일 의사결정 트리 회귀자의 성능을 비교했습니다. Matplotlib 를 사용하여 두 회귀자의 성능을 시각화했습니다.