Регрессия решающего дерева с AdaBoost#

Дерево решений усиливается с использованием AdaBoost.R2 [1] алгоритм на одномерном синусоидальном наборе данных с небольшим количеством гауссовского шума. 299 бустингов (300 деревьев решений) сравнивается с одним регрессором дерева решений. По мере увеличения количества бустингов регрессор может подогнать больше деталей.

См. Признаки в деревьях с градиентным бустингом на гистограммах для примера, демонстрирующего преимущества использования более эффективных регрессионных моделей, таких как HistGradientBoostingRegressor.

Подготовка данных#

Сначала мы подготавливаем фиктивные данные с синусоидальной зависимостью и некоторым гауссовским шумом.

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

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])

Обучение и предсказание с DecisionTree и AdaBoost Regressors#

Теперь определим классификаторы и обучим их на данных. Затем предскажем на тех же данных, чтобы увидеть, насколько хорошо они могут их аппроксимировать. Первый регрессор — это DecisionTreeRegressor с max_depth=4. Второй регрессор представляет собой AdaBoostRegressor с DecisionTreeRegressor of max_depth=4 в качестве базового обучаемого и будет построен с 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, могут соответствовать данным.

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("data")
plt.ylabel("target")
plt.title("Boosted Decision Tree Regression")
plt.legend()
plt.show()
Boosted Decision Tree Regression

Общее время выполнения скрипта: (0 минут 0.394 секунды)

Связанные примеры

Регрессия дерева решений

Регрессия дерева решений

Построить поверхности решений ансамблей деревьев на наборе данных ирисов

Построить поверхности решений ансамблей деревьев на наборе данных ирисов

Построить индивидуальные и голосующие регрессионные предсказания

Построить индивидуальные и голосующие регрессионные предсказания

Объедините предикторы с помощью стекинга

Объедините предикторы с помощью стекинга

Галерея, созданная Sphinx-Gallery