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 à l'Apprentissage Automatique avec Python

bookLa Faille de GridSearchCV

Avant d'utiliser GridSearchCV, il est important de noter que KNeighborsClassifier possède plus d'hyperparamètres que n_neighbors. Deux paramètres importants sont weights et p.

Poids

Par défaut, le classificateur utilise weights='uniform', ce qui signifie que tous les k voisins votent de manière égale. Définir weights='distance' accorde plus d'influence aux voisins les plus proches, ce qui améliore souvent les prédictions lorsque les points proches sont plus pertinents.

P

Le paramètre p contrôle la métrique de distance :

  • p=1 : distance de Manhattan ;
  • p=2 : distance euclidienne.

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.

Auparavant, seul n_neighbors était ajusté. Pour effectuer une recherche sur les trois hyperparamètres, utilisez :

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 :

Une grille plus grande comme :

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

crée 100 combinaisons. Avec une validation croisée à 5 plis, le modèle est entraîné 500 fois. Cela convient pour les petits jeux de données, mais devient trop lent pour les plus volumineux.

Pour réduire le temps de calcul, RandomizedSearchCV teste uniquement un sous-ensemble aléatoire de combinaisons, trouvant généralement des résultats solides beaucoup plus rapidement qu'une recherche exhaustive sur grille.

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

Suggested prompts:

Can you explain how RandomizedSearchCV selects the combinations to test?

What are some best practices for choosing the range of hyperparameters?

How do I interpret the results from GridSearchCV or RandomizedSearchCV?

bookLa Faille de GridSearchCV

Glissez pour afficher le menu

Avant d'utiliser GridSearchCV, il est important de noter que KNeighborsClassifier possède plus d'hyperparamètres que n_neighbors. Deux paramètres importants sont weights et p.

Poids

Par défaut, le classificateur utilise weights='uniform', ce qui signifie que tous les k voisins votent de manière égale. Définir weights='distance' accorde plus d'influence aux voisins les plus proches, ce qui améliore souvent les prédictions lorsque les points proches sont plus pertinents.

P

Le paramètre p contrôle la métrique de distance :

  • p=1 : distance de Manhattan ;
  • p=2 : distance euclidienne.

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.

Auparavant, seul n_neighbors était ajusté. Pour effectuer une recherche sur les trois hyperparamètres, utilisez :

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 :

Une grille plus grande comme :

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

crée 100 combinaisons. Avec une validation croisée à 5 plis, le modèle est entraîné 500 fois. Cela convient pour les petits jeux de données, mais devient trop lent pour les plus volumineux.

Pour réduire le temps de calcul, RandomizedSearchCV teste uniquement un sous-ensemble aléatoire de combinaisons, trouvant généralement des résultats solides beaucoup plus rapidement qu'une recherche exhaustive sur grille.

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