Regresión de árboles de decisión potenciados

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, usaremos la biblioteca Scikit-Learn de Python para realizar la regresión de árboles de decisión potenciados en un conjunto de datos sinusoidal unidimensional. Compararemos el rendimiento de un solo regresor de árboles de decisión con el de un regresor AdaBoost con 300 regresores de árboles de decisión como aprendices base.

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 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 su retroalimentación después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/tree("Decision Trees") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/tree -.-> lab-49057{{"Regresión de árboles de decisión potenciados"}} sklearn/ensemble -.-> lab-49057{{"Regresión de árboles de decisión potenciados"}} ml/sklearn -.-> lab-49057{{"Regresión de árboles de decisión potenciados"}} end

Preparando los datos

Comenzamos preparando datos ficticios con una relación sinusoidal y algo de ruido gaussiano. Usamos la función linspace() de Numpy para crear una matriz unidimensional de 100 valores espaciados uniformemente entre 0 y 6. Luego usamos el atributo np.newaxis para convertir la matriz unidimensional en una matriz bidimensional de forma (100,1). Aplicamos la función sin() a esta matriz y agregamos una segunda onda sinusoidal obtenida multiplicando la matriz por 6. Luego agregamos algo de ruido gaussiano con una media de 0 y una desviación estándar de 0.1 usando la función normal() de Numpy.

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

Entrenamiento y predicción con regresores DecisionTree y AdaBoost

Ahora definimos los clasificadores y los ajustamos a los datos. Definimos el primer regresor como un DecisionTreeRegressor con max_depth = 4. Definimos el segundo regresor como un AdaBoostRegressor con un DecisionTreeRegressor de max_depth = 4 como aprendiz base. Construimos el regresor AdaBoost con n_estimators = 300 de esos aprendices base. Luego ajustamos ambos regresores a los datos y hacemos predicciones en los mismos datos para ver qué tan bien se ajustan a ellos.

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)

Graficando los resultados

Finalmente, graficamos qué tan bien se ajustan a los datos nuestros dos regresores, el regresor de árbol de decisión simple y el regresor AdaBoost. Usamos la función scatter() de Matplotlib para graficar las muestras de entrenamiento y los valores predichos por ambos regresores. Usamos la función plot() de Matplotlib para graficar los valores predichos en función de los datos para ambos regresores. Agregamos una leyenda al gráfico para distinguir entre los dos regresores.

import matplotlib.pyplot as plt
import seaborn as sns

colors = sns.color_palette("colorblind")

plt.figure()
plt.scatter(X, y, color=colors[0], label="muestras de entrenamiento")
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("datos")
plt.ylabel("objetivo")
plt.title("Regresión de árboles de decisión potenciados")
plt.legend()
plt.show()

Resumen

En este laboratorio, aprendimos cómo realizar la regresión de árboles de decisión potenciados en un conjunto de datos sinusoidal unidimensional usando la biblioteca Scikit-Learn de Python. Comparamos el rendimiento de un solo regresor de árboles de decisión con el de un regresor AdaBoost con 300 regresores de árboles de decisión como aprendices base. Visualizamos el rendimiento de ambos regresores usando Matplotlib.