La 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, accordant 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: distance de Manhattan (somme des différences absolues entre les coordonnées) ;p=2: distance euclidienne (distance en ligne droite, connue 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.
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 teste toutes les combinaisons possibles pour trouver la meilleure, il essaiera 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 ensembles 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 offrant des résultats solides.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
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
La 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, accordant 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: distance de Manhattan (somme des différences absolues entre les coordonnées) ;p=2: distance euclidienne (distance en ligne droite, connue 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.
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 teste toutes les combinaisons possibles pour trouver la meilleure, il essaiera 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 ensembles 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 offrant des résultats solides.
Merci pour vos commentaires !