Regresión del árbol de decisión

Una regresión 1D con árbol de decisión.

Los árboles de decisión se utilizan para adaptarse a una curva sinusoidal con observación ruidosa adicional. Como resultado, aprende regresiones lineales locales aproximando la curva sinusoidal.

Podemos ver que si la profundidad máxima del árbol (controlada por el parámetro max_depth) se establece demasiado alta, los árboles de decisión aprenden detalles demasiado finos de los datos de entrenamiento y aprenden del ruido, es decir, se sobreajustan.

Regresión del árbol de decisión
print(__doc__)

# Import the necessary modules and libraries
import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt

# Create a random dataset
rng = np.random.RandomState(1)
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))

# Fit regression model
regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)

# Predict
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)

# Plot the results
plt.figure()
plt.scatter(X, y, s=20, edgecolor="black",
            c="darkorange", label="data")
plt.plot(X_test, y_1, color="cornflowerblue",
         label="max_depth=2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()

Tiempo total de ejecución del script: ( 0 minutos 0.209 segundos)

Galería generada por Sphinx-Gallery