Svakheten Ved Gridsearchcv
Før vi diskuterer GridSearchCV
, bør det bemerkes at KNeighborsClassifier
har flere enn én hyperparameter som kan justeres. Til nå har vi kun brukt n_neighbors
.
La oss kort diskutere to andre hyperparametere: weights
og p
.
weights
Som du kanskje husker, fungerer KNeighborsClassifier
ved å finne de k nærmeste naboene. Deretter tildeles den mest vanlige klassen blant disse naboene, uavhengig av hvor nær hver enkelt er.
En annen tilnærming er å også ta hensyn til avstanden til naboen, slik at klassene til de nærmeste naboene får større vekt. Dette kan gjøres ved å sette weights='distance'
.
Som standard brukes den første tilnærmingen, som settes med weights='uniform'
.
p
Det finnes også ulike måter å beregne avstanden på. Hyperparameteren p
styrer dette. La oss illustrere hvordan avstanden beregnes for p=1
og p=2
:
p=1
er en Manhattan-avstand;p=2
er en Euklidsk avstand som du lærte om på skolen.
En p
-parameter kan ha enhver positiv heltallverdi. Det finnes mange ulike avstander, men de er vanskeligere å visualisere enn p=1
eller p=2
.
I forrige kapittel brukte vi GridSeachCV
for å finne den beste verdien for n_neighbors
.
Hva om vi ønsket å finne den beste kombinasjonen av n_neighbors
, weights
og p
?
Da ville param_grid
sett slik ut:
param_grid = {'n_neighbors': [1, 3, 5, 7],
'weights': ['distance', 'uniform'],
'p': [1, 2]}
GridSearchCV
prøver alle mulige kombinasjoner for å finne den beste, så den vil prøve alle disse:
Det er allerede mye arbeid. Men hva om vi ønsker å prøve flere verdier?
param_grid = {'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
'weights': ['distance', 'uniform'],
'p': [1, 2, 3, 4, 5]}
Nå finnes det 100 kombinasjoner. Og husk at vi må trene og evaluere en modell 5 ganger for å få dens kryssvalideringsscore, så denne prosessen gjentas 500 ganger.
Dette er ikke et problem for vårt lille datasett, men vanligvis er datasett mye større, og trening kan ta mye tid. Å gjennomføre denne prosessen 500 ganger er smertefullt tregt i slike tilfeller.
Derfor brukes RandomizedSearchCV
oftere for større datasett.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.13
Svakheten Ved Gridsearchcv
Sveip for å vise menyen
Før vi diskuterer GridSearchCV
, bør det bemerkes at KNeighborsClassifier
har flere enn én hyperparameter som kan justeres. Til nå har vi kun brukt n_neighbors
.
La oss kort diskutere to andre hyperparametere: weights
og p
.
weights
Som du kanskje husker, fungerer KNeighborsClassifier
ved å finne de k nærmeste naboene. Deretter tildeles den mest vanlige klassen blant disse naboene, uavhengig av hvor nær hver enkelt er.
En annen tilnærming er å også ta hensyn til avstanden til naboen, slik at klassene til de nærmeste naboene får større vekt. Dette kan gjøres ved å sette weights='distance'
.
Som standard brukes den første tilnærmingen, som settes med weights='uniform'
.
p
Det finnes også ulike måter å beregne avstanden på. Hyperparameteren p
styrer dette. La oss illustrere hvordan avstanden beregnes for p=1
og p=2
:
p=1
er en Manhattan-avstand;p=2
er en Euklidsk avstand som du lærte om på skolen.
En p
-parameter kan ha enhver positiv heltallverdi. Det finnes mange ulike avstander, men de er vanskeligere å visualisere enn p=1
eller p=2
.
I forrige kapittel brukte vi GridSeachCV
for å finne den beste verdien for n_neighbors
.
Hva om vi ønsket å finne den beste kombinasjonen av n_neighbors
, weights
og p
?
Da ville param_grid
sett slik ut:
param_grid = {'n_neighbors': [1, 3, 5, 7],
'weights': ['distance', 'uniform'],
'p': [1, 2]}
GridSearchCV
prøver alle mulige kombinasjoner for å finne den beste, så den vil prøve alle disse:
Det er allerede mye arbeid. Men hva om vi ønsker å prøve flere verdier?
param_grid = {'n_neighbors': [1, 3, 5, 7, 9, 12, 15, 17, 20, 25],
'weights': ['distance', 'uniform'],
'p': [1, 2, 3, 4, 5]}
Nå finnes det 100 kombinasjoner. Og husk at vi må trene og evaluere en modell 5 ganger for å få dens kryssvalideringsscore, så denne prosessen gjentas 500 ganger.
Dette er ikke et problem for vårt lille datasett, men vanligvis er datasett mye større, og trening kan ta mye tid. Å gjennomføre denne prosessen 500 ganger er smertefullt tregt i slike tilfeller.
Derfor brukes RandomizedSearchCV
oftere for større datasett.
Takk for tilbakemeldingene dine!