Régression par arbre de décision

Beginner

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

Introduction

Dans ce laboratoire, nous allons apprendre à utiliser l'algorithme de régression par arbre de décision pour ajuster une courbe sinusoïdale avec des observations bruitées supplémentaires. Les arbres de décision seront utilisés pour apprendre des régressions linéaires locales approximant la courbe sinusoïdale. Nous verrons que si la profondeur maximale de l'arbre est définie trop élevée, les arbres de décision apprennent trop de détails fins des données d'entraînement et apprennent à partir du bruit, c'est-à-dire qu'ils surapprennent.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques nécessaires

Nous allons importer les bibliothèques et les modules nécessaires, y compris numpy, matplotlib et DecisionTreeRegressor.

import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt

Créez un ensemble de données aléatoire

Nous allons créer un ensemble de données aléatoire à l'aide de NumPy et y ajouter du bruit.

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

Ajustez le modèle de régression

Nous allons ajuster des modèles de régression avec deux profondeurs maximales différentes : 2 et 5.

regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)

Prédire

Nous allons utiliser les modèles pour effectuer des prédictions sur une plage de valeurs allant de 0 à 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)

Tracez les résultats

Nous allons tracer les résultats pour visualiser la façon dont les modèles s'ajustent aux données.

plt.figure()
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="données")
plt.plot(X_test, y_1, color="cornflowerblue", label="profondeur maximale = 2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="profondeur maximale = 5", linewidth=2)
plt.xlabel("données")
plt.ylabel("cible")
plt.title("Régression par arbre de décision")
plt.legend()
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser l'algorithme de régression par arbre de décision pour ajuster une courbe sinusoïdale avec des observations bruitées supplémentaires. Nous avons vu que si la profondeur maximale de l'arbre est définie trop élevée, les arbres de décision apprennent trop de détails fins des données d'entraînement et apprennent à partir du bruit, c'est-à-dire qu'ils surapprennent. Nous avons également appris à tracer les résultats pour visualiser la façon dont les modèles s'ajustent aux données.