Bristen Hos Gridsearchcv
Innan du utforskar GridSearchCV
är det viktigt att notera att KNeighborsClassifier
har flera hyperparametrar utöver n_neighbors
. Två av dessa är: weights
och p
.
Weights
KNeighborsClassifier
förutspår genom att hitta de k närmaste grannarna och tilldela den mest frekventa klassen bland dem, oavsett hur nära varje granne är.
Ett alternativ är att vikta grannarna efter deras avstånd, vilket ger mer inflytande till närmare punkter. Detta görs med weights='distance'
.
Som standard använder klassificeraren weights='uniform'
, där alla grannar bidrar lika mycket.
P
Hyperparametern p
definierar hur avstånd beräknas:
p=1
: Manhattan-avstånd (summan av de absoluta skillnaderna mellan koordinater);p=2
: Euklidiskt avstånd (fågelvägen, välkänd från geometrin).
En p
-parameter kan anta vilket positivt heltal som helst. Det finns många olika avstånd, men de är svårare att visualisera än p=1
eller p=2
.
Oroa dig inte om detaljerna kring weights
eller p
är oklara. De introduceras enbart för att visa att det finns fler än en hyperparameter som kan påverka modellens prediktioner. Betrakta dem som exempel på hyperparametrar som kan justeras.
I föregående kapitel användes GridSearchCV
för att justera endast n_neighbors
.
För att söka efter bästa kombinationen av n_neighbors
, weights
och p
, kan param_grid
definieras som:
param_grid = {
'n_neighbors': [1, 3, 5, 7],
'weights': ['distance', 'uniform'],
'p': [1, 2]
}
GridSearchCV
testar alla möjliga kombinationer för att hitta den bästa, så den kommer att prova alla dessa:
Det ökar sökutrymmet avsevärt. Till exempel:
param_grid = {
'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
'weights': ['distance', 'uniform'],
'p': [1, 2, 3, 4, 5]
}
Med 100 hyperparameterkombinationer och 5-faldig korsvalidering tränas och utvärderas modellen 500 gånger.
För små datamängder är detta hanterbart, men med större datamängder och mer komplexa modeller blir processen mycket långsam.
För att hantera sådana fall föredras ofta RandomizedSearchCV
. Den utforskar endast en delmängd av alla möjliga kombinationer, vilket minskar beräkningstiden avsevärt samtidigt som starka resultat uppnås.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain how RandomizedSearchCV works compared to GridSearchCV?
What are some best practices for choosing hyperparameter ranges?
How do I interpret the results from GridSearchCV or RandomizedSearchCV?
Awesome!
Completion rate improved to 3.13
Bristen Hos Gridsearchcv
Svep för att visa menyn
Innan du utforskar GridSearchCV
är det viktigt att notera att KNeighborsClassifier
har flera hyperparametrar utöver n_neighbors
. Två av dessa är: weights
och p
.
Weights
KNeighborsClassifier
förutspår genom att hitta de k närmaste grannarna och tilldela den mest frekventa klassen bland dem, oavsett hur nära varje granne är.
Ett alternativ är att vikta grannarna efter deras avstånd, vilket ger mer inflytande till närmare punkter. Detta görs med weights='distance'
.
Som standard använder klassificeraren weights='uniform'
, där alla grannar bidrar lika mycket.
P
Hyperparametern p
definierar hur avstånd beräknas:
p=1
: Manhattan-avstånd (summan av de absoluta skillnaderna mellan koordinater);p=2
: Euklidiskt avstånd (fågelvägen, välkänd från geometrin).
En p
-parameter kan anta vilket positivt heltal som helst. Det finns många olika avstånd, men de är svårare att visualisera än p=1
eller p=2
.
Oroa dig inte om detaljerna kring weights
eller p
är oklara. De introduceras enbart för att visa att det finns fler än en hyperparameter som kan påverka modellens prediktioner. Betrakta dem som exempel på hyperparametrar som kan justeras.
I föregående kapitel användes GridSearchCV
för att justera endast n_neighbors
.
För att söka efter bästa kombinationen av n_neighbors
, weights
och p
, kan param_grid
definieras som:
param_grid = {
'n_neighbors': [1, 3, 5, 7],
'weights': ['distance', 'uniform'],
'p': [1, 2]
}
GridSearchCV
testar alla möjliga kombinationer för att hitta den bästa, så den kommer att prova alla dessa:
Det ökar sökutrymmet avsevärt. Till exempel:
param_grid = {
'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
'weights': ['distance', 'uniform'],
'p': [1, 2, 3, 4, 5]
}
Med 100 hyperparameterkombinationer och 5-faldig korsvalidering tränas och utvärderas modellen 500 gånger.
För små datamängder är detta hanterbart, men med större datamängder och mer komplexa modeller blir processen mycket långsam.
För att hantera sådana fall föredras ofta RandomizedSearchCV
. Den utforskar endast en delmängd av alla möjliga kombinationer, vilket minskar beräkningstiden avsevärt samtidigt som starka resultat uppnås.
Tack för dina kommentarer!