Introducción
En este laboratorio, aprenderemos a usar el algoritmo de regresión de árboles de decisión para ajustar una curva senoidal con observaciones ruidosas adicionales. Los árboles de decisión se usarán para aprender regresiones lineales locales que se aproximan a la curva senoidal. Veremos que si la profundidad máxima del árbol 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.
Consejos sobre la VM
Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Importar las bibliotecas necesarias
Importaremos las bibliotecas y módulos necesarios, incluyendo numpy, matplotlib y DecisionTreeRegressor.
import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt
Crear un conjunto de datos aleatorio
Crearemos un conjunto de datos aleatorio utilizando NumPy y le agregaremos algo de ruido.
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))
Ajustar el modelo de regresión
Ajustaremos modelos de regresión con dos profundidades máximas diferentes: 2 y 5.
regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)
Predecir
Usaremos los modelos para hacer predicciones en un rango de valores de 0 a 5.
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)
Graficar los resultados
Graficaremos los resultados para visualizar cómo los modelos se ajustan a los datos.
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()
Resumen
En este laboratorio, aprendimos cómo usar el algoritmo de regresión de árbol de decisión para ajustar una curva senoidal con observaciones ruidosas adicionales. Vimos que si la profundidad máxima del árbol 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. También aprendimos cómo graficar los resultados para visualizar cómo los modelos se ajustan a los datos.