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

bookKrydsvalidering

I det foregående kapitel blev train-test split anvendt til model-evaluering. Denne metode har to hovedulemper:

  1. Begrænset træningsdata: kun en del af datasættet bruges til træning, selvom mere data generelt forbedrer ydeevnen.
  2. Afhængighed af split: fordi split er tilfældigt, kan resultaterne variere mærkbart mellem kørsler.

For at imødegå disse problemer anvendes en alternativ evalueringsmetode kaldet cross-validation.

Først opdeles hele datasættet i 5 lige store dele, kendt som folds.

Dernæst bruges én fold som testdatasæt, og de resterende fold kombineres for at danne træningsdatasættet.

Som i enhver evalueringsproces bruges træningssættet til at træne modellen, mens testsættet bruges til at måle dens ydeevne.

Processen gentages, så hver fold fungerer som testsæt én gang, mens de resterende folds udgør træningssættet.

Denne proces giver fem nøjagtighedsscorer, én fra hver opdeling. Ved at tage gennemsnittet af disse scorer opnås modellens gennemsnitlige ydeevne.

I Python kan cross-validation score beregnes med cross_val_score() fra modulet sklearn.model_selection.

Note
Bemærk

Selvom eksemplet bruger 5 fold, kan du vælge ethvert antal fold til krydsvalidering. For eksempel kan du bruge 10 fold, hvor 9 bruges til træningssættet og 1 til test-sættet. Dette kan justeres via cv-parameteren i funktionen 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

Denne metode giver mere stabile og pålidelige resultater end train-test split-metoden; dog er den væsentligt langsommere, da modellen skal trænes og evalueres fem gange (eller n gange, hvis du vælger n antal fold), sammenlignet med kun én gang ved train-test split.

Krydsvalidering anvendes typisk ved hyperparameter-tuning, hvor hele krydsvalideringsprocessen udføres for hver mulig hyperparameterværdi.

For eksempel, når det optimale antal naboer i en k-nearest neighbors-algoritme skal bestemmes, udføres en fuld runde krydsvalidering for hver kandidatværdi. Denne metode sikrer en grundig evaluering af hver hyperparameterindstilling på hele datasættet, hvilket gør det muligt at vælge den værdi, der konsekvent giver den bedste ydeevne.

question mark

Hvorfor kan krydsvalidering foretrækkes frem for trænings-test-opdeling til evaluering af ydeevnen for en maskinlæringsmodel?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookKrydsvalidering

Stryg for at vise menuen

I det foregående kapitel blev train-test split anvendt til model-evaluering. Denne metode har to hovedulemper:

  1. Begrænset træningsdata: kun en del af datasættet bruges til træning, selvom mere data generelt forbedrer ydeevnen.
  2. Afhængighed af split: fordi split er tilfældigt, kan resultaterne variere mærkbart mellem kørsler.

For at imødegå disse problemer anvendes en alternativ evalueringsmetode kaldet cross-validation.

Først opdeles hele datasættet i 5 lige store dele, kendt som folds.

Dernæst bruges én fold som testdatasæt, og de resterende fold kombineres for at danne træningsdatasættet.

Som i enhver evalueringsproces bruges træningssættet til at træne modellen, mens testsættet bruges til at måle dens ydeevne.

Processen gentages, så hver fold fungerer som testsæt én gang, mens de resterende folds udgør træningssættet.

Denne proces giver fem nøjagtighedsscorer, én fra hver opdeling. Ved at tage gennemsnittet af disse scorer opnås modellens gennemsnitlige ydeevne.

I Python kan cross-validation score beregnes med cross_val_score() fra modulet sklearn.model_selection.

Note
Bemærk

Selvom eksemplet bruger 5 fold, kan du vælge ethvert antal fold til krydsvalidering. For eksempel kan du bruge 10 fold, hvor 9 bruges til træningssættet og 1 til test-sættet. Dette kan justeres via cv-parameteren i funktionen 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

Denne metode giver mere stabile og pålidelige resultater end train-test split-metoden; dog er den væsentligt langsommere, da modellen skal trænes og evalueres fem gange (eller n gange, hvis du vælger n antal fold), sammenlignet med kun én gang ved train-test split.

Krydsvalidering anvendes typisk ved hyperparameter-tuning, hvor hele krydsvalideringsprocessen udføres for hver mulig hyperparameterværdi.

For eksempel, når det optimale antal naboer i en k-nearest neighbors-algoritme skal bestemmes, udføres en fuld runde krydsvalidering for hver kandidatværdi. Denne metode sikrer en grundig evaluering af hver hyperparameterindstilling på hele datasættet, hvilket gør det muligt at vælge den værdi, der konsekvent giver den bedste ydeevne.

question mark

Hvorfor kan krydsvalidering foretrækkes frem for trænings-test-opdeling til evaluering af ydeevnen for en maskinlæringsmodel?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 4
some-alt