Comprendre la sortie d'une recherche sur grille

Optimisation des hyperparamètres en Python

Alex Scriven

Data Scientist

Analyser la sortie

Analysons les sorties de GridSearchCV.

Trois groupes de propriétés pour GridSearchCV :

  • Un journal de résultats
    • cv_results_
  • Les meilleurs résultats
    • best_index_, best_params_ et best_score_
  • « Informations supplémentaires »
    • scorer_, n_splits_ et refit_time_
Optimisation des hyperparamètres en Python

Accéder aux propriétés d'un objet

 

On accède aux propriétés avec la notation par point.

Par exemple :

grid_search_object.property

Où property est la propriété à récupérer.

Optimisation des hyperparamètres en Python

La propriété .cv_results_

La propriété cv_results_ :

Lisez-la dans un DataFrame pour l'afficher et l'analyser :

cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)

print(cv_results_df.shape)

(12, 23)

  • 12 lignes pour les 12 cases de notre grille, ou les 12 modèles exécutés
Optimisation des hyperparamètres en Python

Les colonnes « time » de .cv_results_

Les colonnes time indiquent le temps nécessaire pour entraîner (et évaluer) le modèle.

Souvenez-vous : nous avons fait une validation croisée en 5 plis. Cela s'exécute 5 fois et stocke la moyenne et l'écart type des temps en secondes.

time columns

Optimisation des hyperparamètres en Python

Les colonnes « param_ » de .cv_results_

 

Les colonnes param_ stockent les hyperparamètres testés sur chaque ligne, une colonne par paramètre.

param columns

Optimisation des hyperparamètres en Python

La colonne « param » de .cv_results_

La colonne params contient le dictionnaire de tous les paramètres :

pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

params column

Optimisation des hyperparamètres en Python

Les colonnes « test_score » de .cv_results_

 

Les colonnes test_score contiennent les scores sur notre jeu de test pour chaque pli, ainsi que des statistiques récapitulatives :

test score

Optimisation des hyperparamètres en Python

La colonne « rank_test_score » de .cv_results_

 

La colonne de rang ordonne mean_test_score du meilleur au moins bon :

rank test score

Optimisation des hyperparamètres en Python

Extraire la meilleure ligne

 

On peut sélectionner facilement la meilleure case de la grille depuis cv_results_ via la colonne rank_test_score

best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

meilleure ligne

Optimisation des hyperparamètres en Python

Les colonnes « train_score » de .cv_results_

Les colonnes test_score sont ensuite dupliquées pour les training_scores.

Points importants à retenir :

  • return_train_score doit être à True pour inclure les colonnes d'entraînement.

  • Il n'y a pas de colonne de rang pour les scores d'entraînement, car seule la performance sur le test compte.

Optimisation des hyperparamètres en Python

La meilleure case de la grille

 

Les infos sur la meilleure case de grille sont résumées dans ces trois propriétés :

  • best_params_, le dictionnaire des paramètres donnant le meilleur score.

  • best_score_, le meilleur score obtenu.

  • best_index_, la ligne de cv_results_.rank_test_score correspondant au meilleur.

Optimisation des hyperparamètres en Python

La propriété best_estimator_

 

La propriété best_estimator_ est un estimateur entraîné avec les meilleurs paramètres trouvés.

Ici, c'est un estimateur Random Forest :

type(grid_rf_class.best_estimator_)

sklearn.ensemble.forest.RandomForestClassifier

Vous pouvez aussi utiliser directement cet objet comme estimateur si vous le souhaitez.

Optimisation des hyperparamètres en Python

La propriété best_estimator_

print(grid_rf_class.best_estimator_)

affichage du code du meilleur estimateur

Optimisation des hyperparamètres en Python

Informations supplémentaires

Des informations supplémentaires sont disponibles via :

  • scorer_

Fonction d'évaluation utilisée sur les données de validation (nous l'avons réglée sur l'AUC).

  • n_splits_

Nombre de divisions de validation croisée (réglé à 5).

  • refit_time_

Temps (en secondes) pour réentraîner le meilleur modèle sur tout le jeu de données.

Optimisation des hyperparamètres en Python

Passons à la pratique !

Optimisation des hyperparamètres en Python

Preparing Video For Download...