Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Korsvalidering | Modellering
ML-introduktion Med Scikit-learn

bookKorsvalidering

I föregående kapitel användes train-test-split för modelevaluering. Denna metod har två huvudsakliga nackdelar:

  1. Begränsad träningsdata: endast en del av datamängden används för träning, medan mer data generellt förbättrar prestandan.
  2. Beroende av uppdelningen: eftersom uppdelningen är slumpmässig kan resultaten variera avsevärt mellan körningar.

För att hantera dessa problem används en alternativ utvärderingsmetod som kallas cross-validation.

Först delas hela datamängden upp i 5 lika stora delar, kallade folds.

Därefter används en fold som testmängd och de återstående foldsen kombineras för att bilda träningsmängden.

Som i alla utvärderingsprocesser används träningsuppsättningen för att träna modellen, medan testuppsättningen används för att mäta dess prestanda.

Processen upprepas så att varje delmängd fungerar som testuppsättning en gång, medan de återstående delmängderna utgör träningsuppsättningen.

Denna process ger fem noggrannhetspoäng, en från varje uppdelning. Genom att ta medelvärdet av dessa poäng erhålls modellens genomsnittliga prestanda.

I Python kan cross-validation score beräknas med cross_val_score() från modulen sklearn.model_selection.

Note
Notering

Även om exemplet använder 5 vikningar kan du välja valfritt antal vikningar för korsvalidering. Till exempel kan du använda 10 vikningar, där 9 tilldelas träningsmängden och 1 till testmängden. Detta kan justeras med parametern cv 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

Ger stabilare och mer tillförlitliga resultat än metoden med träningstestuppdelning; dock är den avsevärt långsammare eftersom modellen måste tränas och utvärderas fem gånger (eller n gånger om du anger n antal vikningar), jämfört med endast en gång vid träningstestuppdelning.

Korsvalidering används vanligtvis vid hyperparametertuning, där hela korsvalideringsprocessen körs för varje potentiellt hyperparametervärde.

Till exempel, när du bestämmer det optimala antalet grannar i en k-närmsta grannar-algoritm, utförs en fullständig omgång korsvalidering för varje kandidatvärde. Denna metod säkerställer en grundlig utvärdering av varje hyperparameterinställning över hela datamängden, vilket gör det möjligt att välja det värde som konsekvent ger bäst prestanda.

question mark

Varför kan korsvalidering föredras framför train-test-split vid utvärdering av prestandan hos en maskininlärningsmodell?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 3.13

bookKorsvalidering

Svep för att visa menyn

I föregående kapitel användes train-test-split för modelevaluering. Denna metod har två huvudsakliga nackdelar:

  1. Begränsad träningsdata: endast en del av datamängden används för träning, medan mer data generellt förbättrar prestandan.
  2. Beroende av uppdelningen: eftersom uppdelningen är slumpmässig kan resultaten variera avsevärt mellan körningar.

För att hantera dessa problem används en alternativ utvärderingsmetod som kallas cross-validation.

Först delas hela datamängden upp i 5 lika stora delar, kallade folds.

Därefter används en fold som testmängd och de återstående foldsen kombineras för att bilda träningsmängden.

Som i alla utvärderingsprocesser används träningsuppsättningen för att träna modellen, medan testuppsättningen används för att mäta dess prestanda.

Processen upprepas så att varje delmängd fungerar som testuppsättning en gång, medan de återstående delmängderna utgör träningsuppsättningen.

Denna process ger fem noggrannhetspoäng, en från varje uppdelning. Genom att ta medelvärdet av dessa poäng erhålls modellens genomsnittliga prestanda.

I Python kan cross-validation score beräknas med cross_val_score() från modulen sklearn.model_selection.

Note
Notering

Även om exemplet använder 5 vikningar kan du välja valfritt antal vikningar för korsvalidering. Till exempel kan du använda 10 vikningar, där 9 tilldelas träningsmängden och 1 till testmängden. Detta kan justeras med parametern cv 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

Ger stabilare och mer tillförlitliga resultat än metoden med träningstestuppdelning; dock är den avsevärt långsammare eftersom modellen måste tränas och utvärderas fem gånger (eller n gånger om du anger n antal vikningar), jämfört med endast en gång vid träningstestuppdelning.

Korsvalidering används vanligtvis vid hyperparametertuning, där hela korsvalideringsprocessen körs för varje potentiellt hyperparametervärde.

Till exempel, när du bestämmer det optimala antalet grannar i en k-närmsta grannar-algoritm, utförs en fullständig omgång korsvalidering för varje kandidatvärde. Denna metod säkerställer en grundlig utvärdering av varje hyperparameterinställning över hela datamängden, vilket gör det möjligt att välja det värde som konsekvent ger bäst prestanda.

question mark

Varför kan korsvalidering föredras framför train-test-split vid utvärdering av prestandan hos en maskininlärningsmodell?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4
some-alt