Boosting par gradient
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 43 sur 58.
Une forêt fait pousser ses arbres côte à côte. Le Gradient Boosting les fait pousser les uns après les autres : chaque nouvel arbre apprend ce que les arbres précédents continuent de prédire incorrectement.
Ici, il ajuste les ventes d’un bar à smoothies, arbre par arbre :
Pour les classes, le modèle est GradientBoostingClassifier :
from sklearn.ensemble import GradientBoostingClassifier
boost = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=0)
boost.fit(X_train, y_train)learning_rate définit la part de chaque correction à conserver. Les petits pas sont prudents, ils nécessitent donc davantage d’arbres.
Défi
MoyenUn producteur d’orchidées veut savoir quelles plantes vont fleurir. Le code de départ divise orchids.csv, évalue une forêt et lit un nombre d’arbres.
- Pour chaque taux dans
rates, entraînez un modèle de boosting avec ce nombre d’arbres (random_state=0) et affichez sa précision sur le jeu de test. - Affichez le meilleur taux. En cas d’égalité, gardez le premier.
Pour un autre producteur et 20 :
Forest: 0.860
Boosting at rate 0.01: 0.600
Boosting at rate 0.1: 0.860
Boosting at rate 1.0: 0.900
Best rate for 20 trees: 1.0Essayez ensuite quelques nombres d’arbres : à partir de quand le boosting fait-il mieux que la forêt ?
Essayez vous-même
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
# Orchidées sur les étagères d'un horticulteur : ont fleuri cette année (1) ou non (0)
orchids = pd.read_csv("orchids.csv")
X = orchids.drop(columns="bloomed")
y = orchids["bloomed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
rates = [0.01, 0.1, 1.0]
# Ne modifiez pas les lignes ci-dessous : la forêt servant de comparaison
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(f"Forest: {forest.score(X_test, y_test):.3f}")
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage supervisé
1Votre premier modèle
Apprendre à partir d’exemplesJeux d’entraînement et de testAjuster et prédireÉvaluer un modèleRécapitulatif : trieur de graines4Régression logistique
Prédictions oui ou nonLe seuil de décisionLes poids comme indicesPlusieurs classesRécapitulatif : filtre anti-spam2Plus proches voisins
Comment k-NN prend ses décisionsChoisir kFrontières de décisionMettre les voisins à l’échelleRécapitulatif : voisins et vin5Évaluer les classificateurs
La matrice de confusionPrécision et rappelLe score F1Classes déséquilibréesCourbes ROCRécapitulatif : test de dépistage8Validation croisée
Validation K-foldComparer les modèles équitablementRecherche par grilleRécapitulatif : réparations de skateboard11Projet : espèces de manchots
À la rencontre des manchotsPréparer les donnéesChoisir un modèleOptimiser le modèle gagnantDéployer le modèle3Régression linéaire
Prédire des nombresPlusieurs caractéristiquesMesurer les erreursGraphiques des résidusRécapitulatif : locations de vélos6Arbres de décision
Les arbres posent des questionsLire un arbreProfondeur de l’arbreImportance des caractéristiquesRécapitulatif : décisions de prêt9Ensembles
Forêts aléatoiresPourquoi les forêts fonctionnentBoosting par gradientRécapitulatif : le garde forestierEntraînez-vous par vous-même : Compilateur Python en ligne