Comprendre la sortie d'une recherche sur grille

Ajustement des hyperparamètres en Python

Alex Scriven

Data Scientist

Analyser la sortie

Analysons les sorties de GridSearchCV.

Trois groupes pour les propriétés de GridSearchCV :

  • Un journal des résultats
    • cv_results_
  • Les meilleurs résultats
    • best_index_, best_params_ et best_score_
  • « Information supplémentaire »
    • scorer_, n_splits_ et refit_time_
Ajustement 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 points.

Par exemple :

grid_search_object.property

property est la propriété à récupérer

Ajustement 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, donc 12 modèles exécutés
Ajustement des hyperparamètres en Python

Les colonnes « time » de .cv_results_

Les colonnes time indiquent le temps d'ajustement (et d'évaluation) du modèle.

Souvenez-vous du couplage à 5 plis : exécution 5 fois, avec la moyenne et l'écart type des temps en secondes.

colonnes time

Ajustement des hyperparamètres en Python

Les colonnes « param_ » de .cv_results_

 

Les colonnes param_ stockent, pour chaque rangée, les paramètres testés, une colonne par paramètre.

colonnes param

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

colonne params

Ajustement des hyperparamètres en Python

Les colonnes « test_score » de .cv_results_

 

Les colonnes test_score contiennent les scores sur l'ensemble de test pour chaque pli, ainsi que des statistiques sommaires :

test score

Ajustement des hyperparamètres en Python

La colonne « rank_test_score » de .cv_results_

 

La colonne de rang ordonne mean_test_score du meilleur au pire :

rank test score

Ajustement des hyperparamètres en Python

Extraire la meilleure rangée

 

On peut repérer facilement la meilleure case de la grille dans cv_results_ avec la colonne rank_test_score

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

meilleure rangée

Ajustement des hyperparamètres en Python

Les colonnes « train_score » de .cv_results_

Les colonnes test_score sont ensuite répété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 l'entraînement, car seule la performance sur l'ensemble de test compte

Ajustement des hyperparamètres en Python

La meilleure case de la grille

 

L'information sur la meilleure case de la grille est résumée dans ces trois propriétés :

  • best_params_, le dictionnaire des paramètres ayant donné le meilleur score.

  • best_score_, le meilleur score obtenu.

  • best_index_, la rangée de cv_results_.rank_test_score correspondant au meilleur.

Ajustement des hyperparamètres en Python

La propriété best_estimator_

 

La propriété best_estimator_ est un estimateur construit avec les meilleurs paramètres de la recherche sur grille.

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.

Ajustement des hyperparamètres en Python

La propriété best_estimator_

print(grid_rf_class.best_estimator_)

affichage du meilleur estimateur

Ajustement des hyperparamètres en Python

Information supplémentaire

Des informations supplémentaires sont offertes par ces propriétés :

  • scorer_

La fonction d'évaluation utilisée sur les données de validation. (nous avons choisi AUC)

  • n_splits_

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

  • refit_time_

Nombre de secondes pour réajuster le meilleur modèle sur tout l'ensemble de données.

Ajustement des hyperparamètres en Python

Passons à la pratique !

Ajustement des hyperparamètres en Python

Preparing Video For Download...