Réglage des hyperparamètres

Apprentissage supervisé avec scikit-learn

George Boorman

Core Curriculum Manager

Réglage des hyperparamètres

  • Régression de crête/lasso : choisir alpha

  • KNN : choisir n_neighbors

  • Hyperparamètres : paramètres spécifiés avant l’ajustement du modèle

    • Comme alpha et n_neighbors
Apprentissage supervisé avec scikit-learn

Choisir les bons hyperparamètres

  1. Essayez un grand nombre de valeurs d’hyperparamètres

  2. Ajustez toutes les valeurs séparément

  3. Examinez leurs performances

  4. Choisissez les valeurs les plus performantes

 

  • C’est ce qu’on appelle le réglage des hyperparamètres

  • Il est essentiel d’utiliser la validation croisée pour éviter un surajustement de l’ensemble de test

  • Nous pouvons diviser les données et effectuer une validation croisée sur l’ensemble d’apprentissage

  • Nous conservons l’ensemble de test pour l’évaluation finale

Apprentissage supervisé avec scikit-learn

Validation croisée par recherche de grille

grille de valeurs potentielles de n voisins de 2 à 11 par incréments de 3, et options de métrique euclidienne ou de manhattan

Apprentissage supervisé avec scikit-learn

Validation croisée par recherche de grille

scores de validation croisée à k blocs pour chaque combinaison d’hyperparamètres dans la grille

Apprentissage supervisé avec scikit-learn

Validation croisée par recherche de grille

5 voisins et la métrique euclidienne mis en évidence, avec un score de 0,8748

Apprentissage supervisé avec scikit-learn

GridSearchCV dans scikit-learn

from sklearn.model_selection import GridSearchCV

kf = KFold(n_splits=5, shuffle=True, random_state=42)
param_grid = {"alpha": np.arange(0.0001, 1, 10), "solver": ["sag", "lsqr"]}
ridge = Ridge()
ridge_cv = GridSearchCV(ridge, param_grid, cv=kf)
ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'alpha': 0.0001, 'solver': 'sag'}
0.7529912278705785
Apprentissage supervisé avec scikit-learn

Limites et approche alternative

  • Validation croisée à 3 blocs, 1 hyperparamètre, 10 valeurs totales = 30 ajustements
  • Validation croisée à 10 blocs, 3 hyperparamètres, 30 valeurs totales = 900 ajustements
Apprentissage supervisé avec scikit-learn

RandomizedSearchCV

from sklearn.model_selection import RandomizedSearchCV

kf = KFold(n_splits=5, shuffle=True, random_state=42) param_grid = {'alpha': np.arange(0.0001, 1, 10), "solver": ['sag', 'lsqr']} ridge = Ridge()
ridge_cv = RandomizedSearchCV(ridge, param_grid, cv=kf, n_iter=2) ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'solver': 'sag', 'alpha': 0.0001}
0.7529912278705785
Apprentissage supervisé avec scikit-learn

Évaluation sur l’ensemble de test

test_score = ridge_cv.score(X_test, y_test)

print(test_score)
0.7564731534089224
Apprentissage supervisé avec scikit-learn

Passons à la pratique !

Apprentissage supervisé avec scikit-learn

Preparing Video For Download...