Entscheidungsbaum-Regression mit AdaBoost#

Ein Entscheidungsbaum wird mit dem AdaBoost.R2 [1] Algorithmus auf einem 1D-sinusförmigen Datensatz mit einer geringen Menge Gaußschen Rauschens verstärkt. 299 Boosts (300 Entscheidungsbäume) werden mit einem einzelnen Entscheidungsbaum-Regressor verglichen. Mit zunehmender Anzahl von Boosts kann der Regressor mehr Details erfassen.

Siehe Merkmale in Histogramm-Gradienten-Boosting-Bäumen für ein Beispiel, das die Vorteile der Verwendung effizienterer Regressionsmodelle wie HistGradientBoostingRegressor zeigt.

Vorbereitung der Daten#

Zuerst bereiten wir Dummy-Daten mit einer sinusförmigen Beziehung und etwas Gaußschem Rauschen vor.

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

Training und Vorhersage mit Entscheidungsbaum- und AdaBoost-Regressoren#

Nun definieren wir die Klassifikatoren und passen sie an die Daten an. Dann machen wir Vorhersagen für dieselben Daten, um zu sehen, wie gut sie passen könnten. Der erste Regressor ist ein DecisionTreeRegressor mit max_depth=4. Der zweite Regressor ist ein AdaBoostRegressor mit einem DecisionTreeRegressor von max_depth=4 als Basis-Lerner und wird mit n_estimators=300 dieser Basis-Lerner aufgebaut.

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)

Ergebnisse plotten#

Schließlich plattformen wir, wie gut unsere beiden Regressoren, der einzelne Entscheidungsbaum-Regressor und der AdaBoost-Regressor, die Daten anpassen konnten.

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

Gesamtlaufzeit des Skripts: (0 Minuten 0,382 Sekunden)

Verwandte Beispiele

Entscheidungsbaum-Regression

Entscheidungsbaum-Regression

Entscheidungsflächen von Ensembles von Bäumen auf dem Iris-Datensatz plotten

Entscheidungsflächen von Ensembles von Bäumen auf dem Iris-Datensatz plotten

Vorhersagen von einzelnen und abstimmenden Regressionsmodellen plotten

Vorhersagen von einzelnen und abstimmenden Regressionsmodellen plotten

Prädiktoren mit Stacking kombinieren

Prädiktoren mit Stacking kombinieren

Galerie generiert von Sphinx-Gallery