Machine Learning avec des modèles à base d'arbres en Python
Elie Kawerk
Data Scientist
Estimateur de base : arbre de décision, régression logistique, réseau de neurones, …
Chaque estimateur est entraîné sur un échantillon bootstrap distinct de l'ensemble d'entraînement
Les estimateurs utilisent toutes les caractéristiques pour l'entraînement et la prédiction
Estimateur de base : arbre de décision
Chaque estimateur est entraîné sur un échantillon bootstrap de même taille que l'ensemble d'entraînement
La RF ajoute une autre part d'aléa lors de l'entraînement des arbres
$d$ caractéristiques sont échantillonnées à chaque nœud, sans remise
( $d < \text{nombre total de caractéristiques}$ )


Classification :
RandomForestClassifier dans scikit-learn Régression :
RandomForestRegressor dans scikit-learn# Basic imports
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error as MSE
# Set seed for reproducibility
SEED = 1
# Split dataset into 70% train and 30% test
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.3,
random_state=SEED)
# Instancier un régressseur « random forests » 'rf' avec 400 estimateurs rf = RandomForestRegressor(n_estimators=400, min_samples_leaf=0.12, random_state=SEED)# Ajuster 'rf' sur l'ensemble d'entraînement rf.fit(X_train, y_train) # Prédire les étiquettes du jeu de test 'y_pred' y_pred = rf.predict(X_test)
# Évaluer la RMSE du jeu de test
rmse_test = MSE(y_test, y_pred)**(1/2)
# Afficher la RMSE du jeu de test
print('Test set RMSE of rf: {:.2f}'.format(rmse_test))
Test set RMSE of rf: 3.98
Méthodes à base d'arbres : permettent de mesurer l'importance de chaque caractéristique dans la prédiction.
Dans sklearn :
feature_importance_import pandas as pd
import matplotlib.pyplot as plt
# Créer une pd.Series des importances des caractéristiques
importances_rf = pd.Series(rf.feature_importances_, index = X.columns)
# Trier importances_rf
sorted_importances_rf = importances_rf.sort_values()
# Tracer un diagramme à bandes horizontal
sorted_importances_rf.plot(kind='barh', color='lightgreen'); plt.show()

Machine Learning avec des modèles à base d'arbres en Python