Een korte introductie tot leave-one-out cross-validation (loocv)


Om de prestaties van een model op een dataset te evalueren, moeten we meten hoe goed de voorspellingen van het model overeenkomen met de waargenomen gegevens.

De meest gebruikelijke manier om dit te meten is met behulp van de gemiddelde kwadratische fout (MSE), die als volgt wordt berekend:

MSE = (1/n)*Σ(y i – f(x i )) 2

Goud:

  • n: totaal aantal waarnemingen
  • y i : De responswaarde van de i-de waarneming
  • f( xi ): De voorspelde responswaarde van de i- de waarneming

Hoe dichter de modelvoorspellingen bij de waarnemingen liggen, hoe lager de MSE zal zijn.

In de praktijk gebruiken we het volgende proces om de MSE van een bepaald model te berekenen:

1. Verdeel een dataset in een trainingsset en een testset.

Machine learning-training en testen

2. Maak het model met alleen de gegevens uit de trainingsset.

LOOCV in machinaal leren

3. Gebruik het model om voorspellingen te doen over de testset en de MSE te meten – dit wordt test MSE genoemd. Trainings- of testset

MSE-testen geven ons een idee van hoe goed een model presteert op gegevens die het nog niet eerder heeft gezien, dat wil zeggen gegevens die niet zijn gebruikt om het model te ‘trainen’.

Het nadeel van het gebruik van één enkele testset is echter dat de MSE-test aanzienlijk kan variëren, afhankelijk van de observaties die in de trainings- en testsets worden gebruikt.

Het is mogelijk dat als we een andere set observaties gebruiken voor de trainingsset en de testset, onze test-MSE veel groter of kleiner zou kunnen zijn.

Eén manier om dit probleem te voorkomen is door een model meerdere keren te passen, waarbij elke keer een andere trainings- en testset wordt gebruikt, en vervolgens de test-MSE te berekenen als het gemiddelde van alle test-MSE’s.

Deze algemene methode staat bekend als kruisvalidatie en een specifieke vorm ervan staat bekend als Leave-One-Out kruisvalidatie .

Leave-One-Out-kruisvalidatie

Bij Leave-one-out-kruisvalidatie wordt de volgende aanpak gebruikt om een model te evalueren:

1. Splits een dataset op in een trainingsset en een testset, waarbij op één na alle observaties worden gebruikt als onderdeel van de trainingsset:

LOOCV

Merk op dat we slechts één observatie ‘buiten’ de trainingsset laten. Dit is waar de methode de naam “leave-one-out” kruisvalidatie krijgt.

2. Maak het model met alleen de gegevens uit de trainingsset.

Een model bouwen met de LOOCV-aanpak

3. Gebruik het model om de responswaarde te voorspellen van de enkele waarneming die is uitgesloten van het model en bereken de MSE.

Hands-off kruisvalidatie

4. Herhaal het proces n keer.

Ten slotte herhalen we dit proces n keer (waarbij n het totale aantal observaties in de dataset is), waarbij we elke keer een andere observatie uit de trainingsset weglaten.

Vervolgens berekenen we de test-MSE als het gemiddelde van alle test-MSE’s:

MSE-test = (1/n)*ΣMSE i

Goud:

  • n: het totale aantal waarnemingen in de dataset
  • MSEi: de MSE-test tijdens de ide modelfittingperiode.

Voor- en nadelen van LOOCV

Leave-one-out kruisvalidatie biedt de volgende voordelen :

  • Het biedt een veel minder vertekende meting van de MSE-test vergeleken met het gebruik van een enkele testset, omdat we herhaaldelijk een model passen bij een dataset die n-1 waarnemingen bevat.
  • Het heeft de neiging de MSE van de test niet te overschatten in vergelijking met het gebruik van een enkele testset.

Hands-off kruisvalidatie heeft echter de volgende nadelen:

  • Het gebruik van dit proces kan lang duren als n groot is.
  • Het kan ook tijdrovend zijn als een model bijzonder complex is en het lang duurt om in een dataset te passen.
  • Dit kan rekenkundig duur zijn.

Gelukkig is het moderne computergebruik op de meeste gebieden zo efficiënt geworden dat LOOCV een veel redelijker methode is om te gebruiken dan vele jaren geleden.

Merk op dat LOOCV ook kan worden gebruikt in regressie- en classificatiecontexten . Voor regressieproblemen berekent het de MSE-test als het wortelgemiddelde van het verschil tussen voorspellingen en waarnemingen, terwijl het bij classificatieproblemen de MSE-test berekent als het percentage waarnemingen dat correct is geclassificeerd over de n herhaalde aanpassingen van het model.

Hoe LOOCV uit te voeren in R & Python

De volgende tutorials bieden stapsgewijze voorbeelden van het uitvoeren van LOOCV voor een bepaald model in R en Python:

Leave-One-Out kruisvalidatie in R
Leave-One-Out kruisvalidatie in Python

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert