Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Svakheten Ved GridSearchCV | Modellering
ML-Introduksjon med Scikit-learn

bookSvakheten Ved GridSearchCV

Før du utforsker GridSearchCV, er det viktig å merke seg at KNeighborsClassifier har flere hyperparametere utover n_neighbors. To av disse er: weights og p.

Weights

KNeighborsClassifier predikerer ved å finne de k nærmeste naboene og tildele den mest vanlige klassen blant dem, uavhengig av hvor nær hver nabo er.

Et alternativ er å vekte naboene etter deres avstand, slik at nærmere punkter får større innflytelse. Dette gjøres med weights='distance'.

Som standard bruker klassifiseringen weights='uniform', der alle naboer bidrar likt.

P

Hyperparameteren p definerer hvordan avstander beregnes:

  • p=1: Manhattan distance (summen av de absolutte forskjellene mellom koordinater);
  • p=2: Euclidean distance (rettlinjet avstand, kjent fra geometri).

En p-parameter kan ha enhver positiv heltallverdi. Det finnes mange ulike avstander, men de er vanskeligere å visualisere enn p=1 eller p=2.

Note
Merk

Ikke bekymre deg hvis detaljene rundt weights eller p er uklare. De introduseres kun for å vise at det finnes flere hyperparametere som kan påvirke modellens prediksjoner. Se på dem som eksempler på hyperparametere som kan justeres.

I forrige kapittel ble GridSearchCV brukt til å justere kun n_neighbors. For å søke etter den beste kombinasjonen av n_neighbors, weights og p, kan param_grid defineres slik:

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 øker søkeområdet betydelig. For eksempel:

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 hyperparameter-kombinasjoner og 5-fold kryssvalidering blir modellen trent og evaluert 500 ganger.

For små datasett er dette håndterbart, men med større datasett og mer komplekse modeller blir prosessen svært treg.

For slike tilfeller foretrekkes ofte RandomizedSearchCV. Den undersøker kun et utvalg av alle mulige kombinasjoner, noe som reduserer beregningstiden betydelig samtidig som den gir gode resultater.

question mark

Hovedproblemet med GridSearchCV er at den prøver alle mulige kombinasjoner (av det som er spesifisert i param_grid), noe som kan ta mye tid. Er denne påstanden korrekt?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 7

Spør AI

expand

Spør AI

ChatGPT

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

bookSvakheten Ved GridSearchCV

Sveip for å vise menyen

Før du utforsker GridSearchCV, er det viktig å merke seg at KNeighborsClassifier har flere hyperparametere utover n_neighbors. To av disse er: weights og p.

Weights

KNeighborsClassifier predikerer ved å finne de k nærmeste naboene og tildele den mest vanlige klassen blant dem, uavhengig av hvor nær hver nabo er.

Et alternativ er å vekte naboene etter deres avstand, slik at nærmere punkter får større innflytelse. Dette gjøres med weights='distance'.

Som standard bruker klassifiseringen weights='uniform', der alle naboer bidrar likt.

P

Hyperparameteren p definerer hvordan avstander beregnes:

  • p=1: Manhattan distance (summen av de absolutte forskjellene mellom koordinater);
  • p=2: Euclidean distance (rettlinjet avstand, kjent fra geometri).

En p-parameter kan ha enhver positiv heltallverdi. Det finnes mange ulike avstander, men de er vanskeligere å visualisere enn p=1 eller p=2.

Note
Merk

Ikke bekymre deg hvis detaljene rundt weights eller p er uklare. De introduseres kun for å vise at det finnes flere hyperparametere som kan påvirke modellens prediksjoner. Se på dem som eksempler på hyperparametere som kan justeres.

I forrige kapittel ble GridSearchCV brukt til å justere kun n_neighbors. For å søke etter den beste kombinasjonen av n_neighbors, weights og p, kan param_grid defineres slik:

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 øker søkeområdet betydelig. For eksempel:

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 hyperparameter-kombinasjoner og 5-fold kryssvalidering blir modellen trent og evaluert 500 ganger.

For små datasett er dette håndterbart, men med større datasett og mer komplekse modeller blir prosessen svært treg.

For slike tilfeller foretrekkes ofte RandomizedSearchCV. Den undersøker kun et utvalg av alle mulige kombinasjoner, noe som reduserer beregningstiden betydelig samtidig som den gir gode resultater.

question mark

Hovedproblemet med GridSearchCV er at den prøver alle mulige kombinasjoner (av det som er spesifisert i param_grid), noe som kan ta mye tid. Er denne påstanden korrekt?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 7
some-alt