Bristen Med 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 gör förutsägelser 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 endast justera 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 undersöker endast ett 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
Awesome!
Completion rate improved to 3.13
Bristen Med 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 gör förutsägelser 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 endast justera 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 undersöker endast ett delmängd av alla möjliga kombinationer, vilket minskar beräkningstiden avsevärt samtidigt som starka resultat uppnås.
Tack för dina kommentarer!