Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre La Faille de GridSearchCV | Modélisation
Introduction au ML Avec Scikit-Learn

bookLa Faille de GridSearchCV

Avant d'explorer GridSearchCV, il est important de noter que KNeighborsClassifier possède plusieurs hyperparamètres en plus de n_neighbors. Deux d'entre eux sont : weights et p.

Poids

KNeighborsClassifier effectue la prédiction en trouvant les k plus proches voisins et en attribuant la classe la plus fréquente parmi eux, sans tenir compte de la proximité de chaque voisin.

Une alternative consiste à pondérer les voisins selon leur distance, en donnant plus d'influence aux points les plus proches. Ceci s'effectue avec weights='distance'.

Par défaut, le classificateur utilise weights='uniform', où tous les voisins contribuent de manière égale.

P

L'hyperparamètre p définit la manière dont les distances sont calculées :

  • p=1 : Manhattan distance (somme des différences absolues entre les coordonnées) ;
  • p=2 : Euclidean distance (distance à vol d'oiseau, familière en géométrie).

Un paramètre p peut prendre n'importe quel entier positif. Il existe de nombreuses distances différentes, mais elles sont plus difficiles à visualiser que p=1 ou p=2.

Note
Remarque

Ne vous inquiétez pas si les détails de weights ou p ne sont pas clairs. Ils sont présentés simplement pour montrer qu'il existe plus d'un hyperparamètre pouvant influencer les prédictions du modèle. Considérez-les comme des exemples d'hyperparamètres pouvant être ajustés.

Dans le chapitre précédent, GridSearchCV a été utilisé pour ajuster uniquement n_neighbors. Pour rechercher la meilleure combinaison de n_neighbors, weights et p, le param_grid peut être défini comme suit :

param_grid = {
    'n_neighbors': [1, 3, 5, 7],
    'weights': ['distance', 'uniform'],
    'p': [1, 2]
}

GridSearchCV essaie toutes les combinaisons possibles pour trouver la meilleure, il testera donc toutes celles-ci :

Cela augmente considérablement l’espace de recherche. Par exemple :

param_grid = {
    'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
    'weights': ['distance', 'uniform'],
    'p': [1, 2, 3, 4, 5]
}

Avec 100 combinaisons d’hyperparamètres et une validation croisée à 5 plis, le modèle est entraîné et évalué 500 fois.

Pour les petits jeux de données, cela reste gérable, mais avec des jeux de données plus volumineux et des modèles plus complexes, le processus devient très lent.

Pour gérer de tels cas, RandomizedSearchCV est souvent privilégié. Il explore uniquement un sous-ensemble de toutes les combinaisons possibles, ce qui réduit considérablement le temps de calcul tout en fournissant des résultats solides.

question mark

Le principal problème de GridSearchCV est qu'il essaie toutes les combinaisons possibles (de ce qui est spécifié dans param_grid), ce qui peut prendre beaucoup de temps. Cette affirmation est-elle correcte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 7

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 3.13

bookLa Faille de GridSearchCV

Glissez pour afficher le menu

Avant d'explorer GridSearchCV, il est important de noter que KNeighborsClassifier possède plusieurs hyperparamètres en plus de n_neighbors. Deux d'entre eux sont : weights et p.

Poids

KNeighborsClassifier effectue la prédiction en trouvant les k plus proches voisins et en attribuant la classe la plus fréquente parmi eux, sans tenir compte de la proximité de chaque voisin.

Une alternative consiste à pondérer les voisins selon leur distance, en donnant plus d'influence aux points les plus proches. Ceci s'effectue avec weights='distance'.

Par défaut, le classificateur utilise weights='uniform', où tous les voisins contribuent de manière égale.

P

L'hyperparamètre p définit la manière dont les distances sont calculées :

  • p=1 : Manhattan distance (somme des différences absolues entre les coordonnées) ;
  • p=2 : Euclidean distance (distance à vol d'oiseau, familière en géométrie).

Un paramètre p peut prendre n'importe quel entier positif. Il existe de nombreuses distances différentes, mais elles sont plus difficiles à visualiser que p=1 ou p=2.

Note
Remarque

Ne vous inquiétez pas si les détails de weights ou p ne sont pas clairs. Ils sont présentés simplement pour montrer qu'il existe plus d'un hyperparamètre pouvant influencer les prédictions du modèle. Considérez-les comme des exemples d'hyperparamètres pouvant être ajustés.

Dans le chapitre précédent, GridSearchCV a été utilisé pour ajuster uniquement n_neighbors. Pour rechercher la meilleure combinaison de n_neighbors, weights et p, le param_grid peut être défini comme suit :

param_grid = {
    'n_neighbors': [1, 3, 5, 7],
    'weights': ['distance', 'uniform'],
    'p': [1, 2]
}

GridSearchCV essaie toutes les combinaisons possibles pour trouver la meilleure, il testera donc toutes celles-ci :

Cela augmente considérablement l’espace de recherche. Par exemple :

param_grid = {
    'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
    'weights': ['distance', 'uniform'],
    'p': [1, 2, 3, 4, 5]
}

Avec 100 combinaisons d’hyperparamètres et une validation croisée à 5 plis, le modèle est entraîné et évalué 500 fois.

Pour les petits jeux de données, cela reste gérable, mais avec des jeux de données plus volumineux et des modèles plus complexes, le processus devient très lent.

Pour gérer de tels cas, RandomizedSearchCV est souvent privilégié. Il explore uniquement un sous-ensemble de toutes les combinaisons possibles, ce qui réduit considérablement le temps de calcul tout en fournissant des résultats solides.

question mark

Le principal problème de GridSearchCV est qu'il essaie toutes les combinaisons possibles (de ce qui est spécifié dans param_grid), ce qui peut prendre beaucoup de temps. Cette affirmation est-elle correcte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 7
some-alt