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

bookKryssvalidering

I forrige kapittel ble train-test-splitt brukt for å evaluere modellen. Denne metoden har to hovedulemper:

  1. Begrenset treningsdata: kun en del av datasettet brukes til trening, mens mer data vanligvis gir bedre ytelse.
  2. Avhengighet av splittet: fordi splittet er tilfeldig, kan resultatene variere merkbart mellom kjøringer.

For å løse disse problemene brukes en alternativ evalueringsmetode kalt kryssvalidering.

Først deles hele datasettet inn i 5 like store deler, kjent som folds.

Deretter brukes én fold som testsett, og de gjenværende foldene kombineres for å danne treningssettet.

Som i enhver evalueringsprosess brukes treningssettet til å trene modellen, mens testsettet brukes til å måle ytelsen.

Prosessen gjentas slik at hvert fold fungerer som testsett én gang, mens de resterende foldene utgjør treningssettet.

Denne prosessen gir fem nøyaktighetspoeng, ett fra hvert delsett. Ved å ta gjennomsnittet av disse poengene får man gjennomsnittlig modellprestasjon.

I Python kan kryssvalideringsscore beregnes med cross_val_score() fra sklearn.model_selection-modulen.

Note
Merk

Selv om eksemplet bruker 5 fold, kan du velge valgfritt antall fold for kryssvalidering. For eksempel kan du bruke 10 fold, hvor 9 brukes til treningssettet og 1 til testsettet. Dette kan justeres med cv-parameteren i funksjonen cross_val_score().

1234567891011
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
copy

Gir mer stabile og pålitelige resultater enn metoden med trenings- og testdeling; den er imidlertid betydelig tregere fordi modellen må trenes og evalueres fem ganger (eller n ganger hvis du angir n antall fold), sammenlignet med kun én gang ved trenings- og testdeling.

Kryssvalidering brukes vanligvis ved hyperparameterjustering, hvor hele kryssvalideringsprosessen kjøres for hver mulig hyperparameterverdi.

For eksempel, når du skal finne optimalt antall naboer i en k-nærmeste nabo-algoritme, utfører du en full runde med kryssvalidering for hver kandidatverdi. Denne metoden sikrer grundig evaluering av hver hyperparameterinnstilling på hele datasettet, slik at du kan velge verdien som konsekvent gir best ytelse.

question mark

Hvorfor kan kryssvalidering foretrekkes fremfor trenings-test-deling for å evaluere ytelsen til en maskinlæringsmodell?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 4

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

Suggested prompts:

Can you explain how cross-validation improves model evaluation compared to train-test split?

What are some common use cases for cross-validation in machine learning?

How do I choose the number of folds for cross-validation?

Awesome!

Completion rate improved to 3.13

bookKryssvalidering

Sveip for å vise menyen

I forrige kapittel ble train-test-splitt brukt for å evaluere modellen. Denne metoden har to hovedulemper:

  1. Begrenset treningsdata: kun en del av datasettet brukes til trening, mens mer data vanligvis gir bedre ytelse.
  2. Avhengighet av splittet: fordi splittet er tilfeldig, kan resultatene variere merkbart mellom kjøringer.

For å løse disse problemene brukes en alternativ evalueringsmetode kalt kryssvalidering.

Først deles hele datasettet inn i 5 like store deler, kjent som folds.

Deretter brukes én fold som testsett, og de gjenværende foldene kombineres for å danne treningssettet.

Som i enhver evalueringsprosess brukes treningssettet til å trene modellen, mens testsettet brukes til å måle ytelsen.

Prosessen gjentas slik at hvert fold fungerer som testsett én gang, mens de resterende foldene utgjør treningssettet.

Denne prosessen gir fem nøyaktighetspoeng, ett fra hvert delsett. Ved å ta gjennomsnittet av disse poengene får man gjennomsnittlig modellprestasjon.

I Python kan kryssvalideringsscore beregnes med cross_val_score() fra sklearn.model_selection-modulen.

Note
Merk

Selv om eksemplet bruker 5 fold, kan du velge valgfritt antall fold for kryssvalidering. For eksempel kan du bruke 10 fold, hvor 9 brukes til treningssettet og 1 til testsettet. Dette kan justeres med cv-parameteren i funksjonen cross_val_score().

1234567891011
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
copy

Gir mer stabile og pålitelige resultater enn metoden med trenings- og testdeling; den er imidlertid betydelig tregere fordi modellen må trenes og evalueres fem ganger (eller n ganger hvis du angir n antall fold), sammenlignet med kun én gang ved trenings- og testdeling.

Kryssvalidering brukes vanligvis ved hyperparameterjustering, hvor hele kryssvalideringsprosessen kjøres for hver mulig hyperparameterverdi.

For eksempel, når du skal finne optimalt antall naboer i en k-nærmeste nabo-algoritme, utfører du en full runde med kryssvalidering for hver kandidatverdi. Denne metoden sikrer grundig evaluering av hver hyperparameterinnstilling på hele datasettet, slik at du kan velge verdien som konsekvent gir best ytelse.

question mark

Hvorfor kan kryssvalidering foretrekkes fremfor trenings-test-deling for å evaluere ytelsen til en maskinlæringsmodell?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 4
some-alt