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, 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
.
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.
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, 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
.
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.
Merci pour vos commentaires !