Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Kruisvalidering | Modelleren
ML-Introductie met Scikit-learn

bookKruisvalidering

In het vorige hoofdstuk werd de train-test-split gebruikt voor modelbeoordeling. Deze methode heeft twee belangrijke nadelen:

  1. Beperkte trainingsdata: slechts een deel van de dataset wordt gebruikt voor training, terwijl meer data doorgaans de prestaties verbetert.
  2. Afhankelijkheid van de splitsing: omdat de splitsing willekeurig is, kunnen de resultaten merkbaar variëren tussen verschillende runs.

Om deze problemen aan te pakken, wordt een alternatieve evaluatiemethode gebruikt, genaamd cross-validatie.

Verdeel eerst de volledige dataset in 5 gelijke delen, bekend als folds.

Gebruik vervolgens één fold als testset en combineer de overige folds om de trainingsset te vormen.

Zoals bij elk evaluatieproces wordt de trainingsset gebruikt om het model te trainen, terwijl de testset wordt gebruikt om de prestaties ervan te meten.

Het proces wordt herhaald zodat elke fold één keer als testset fungeert, terwijl de overige folds de trainingsset vormen.

Dit proces levert vijf nauwkeurigheidsscores op, één uit elke splitsing. Het nemen van het gemiddelde van deze scores geeft de gemiddelde modelprestatie.

In Python kan de cross-validatiescore worden berekend met cross_val_score() uit de module sklearn.model_selection.

Note
Opmerking

Hoewel het voorbeeld 5 vouwen gebruikt, kunt u elke gewenste hoeveelheid vouwen kiezen voor cross-validatie. U kunt bijvoorbeeld 10 vouwen gebruiken, waarbij 9 worden toegewezen aan de trainingsset en 1 aan de testset. Dit is aanpasbaar via de cv parameter in de cross_val_score() functie.

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

Het levert stabielere en betrouwbaardere resultaten op dan de train-test split methode; echter, het is aanzienlijk trager omdat het model vijf keer (of n keer als u n vouwen instelt) getraind en geëvalueerd moet worden, in tegenstelling tot slechts één keer bij de train-test split.

Cross-validatie wordt doorgaans gebruikt bij hyperparameterafstemming, waarbij het volledige cross-validatieproces wordt uitgevoerd voor elke mogelijke hyperparameterwaarde.

Bijvoorbeeld, bij het bepalen van het optimale aantal buren in een k-nearest neighbors algoritme, voert u een volledige ronde cross-validatie uit voor elke kandidaatwaarde. Deze methode zorgt voor een grondige evaluatie van elke hyperparameterinstelling over de gehele dataset, waardoor u de waarde kunt selecteren die consistent de beste prestaties oplevert.

question mark

Waarom kan kruisvalidatie de voorkeur hebben boven een train-test-splitsing voor het evalueren van de prestaties van een machine learning-model?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 3.13

bookKruisvalidering

Veeg om het menu te tonen

In het vorige hoofdstuk werd de train-test-split gebruikt voor modelbeoordeling. Deze methode heeft twee belangrijke nadelen:

  1. Beperkte trainingsdata: slechts een deel van de dataset wordt gebruikt voor training, terwijl meer data doorgaans de prestaties verbetert.
  2. Afhankelijkheid van de splitsing: omdat de splitsing willekeurig is, kunnen de resultaten merkbaar variëren tussen verschillende runs.

Om deze problemen aan te pakken, wordt een alternatieve evaluatiemethode gebruikt, genaamd cross-validatie.

Verdeel eerst de volledige dataset in 5 gelijke delen, bekend als folds.

Gebruik vervolgens één fold als testset en combineer de overige folds om de trainingsset te vormen.

Zoals bij elk evaluatieproces wordt de trainingsset gebruikt om het model te trainen, terwijl de testset wordt gebruikt om de prestaties ervan te meten.

Het proces wordt herhaald zodat elke fold één keer als testset fungeert, terwijl de overige folds de trainingsset vormen.

Dit proces levert vijf nauwkeurigheidsscores op, één uit elke splitsing. Het nemen van het gemiddelde van deze scores geeft de gemiddelde modelprestatie.

In Python kan de cross-validatiescore worden berekend met cross_val_score() uit de module sklearn.model_selection.

Note
Opmerking

Hoewel het voorbeeld 5 vouwen gebruikt, kunt u elke gewenste hoeveelheid vouwen kiezen voor cross-validatie. U kunt bijvoorbeeld 10 vouwen gebruiken, waarbij 9 worden toegewezen aan de trainingsset en 1 aan de testset. Dit is aanpasbaar via de cv parameter in de cross_val_score() functie.

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

Het levert stabielere en betrouwbaardere resultaten op dan de train-test split methode; echter, het is aanzienlijk trager omdat het model vijf keer (of n keer als u n vouwen instelt) getraind en geëvalueerd moet worden, in tegenstelling tot slechts één keer bij de train-test split.

Cross-validatie wordt doorgaans gebruikt bij hyperparameterafstemming, waarbij het volledige cross-validatieproces wordt uitgevoerd voor elke mogelijke hyperparameterwaarde.

Bijvoorbeeld, bij het bepalen van het optimale aantal buren in een k-nearest neighbors algoritme, voert u een volledige ronde cross-validatie uit voor elke kandidaatwaarde. Deze methode zorgt voor een grondige evaluatie van elke hyperparameterinstelling over de gehele dataset, waardoor u de waarde kunt selecteren die consistent de beste prestaties oplevert.

question mark

Waarom kan kruisvalidatie de voorkeur hebben boven een train-test-splitsing voor het evalueren van de prestaties van een machine learning-model?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 4
some-alt