Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Kreuzvalidierung | Modellierung
Einführung in das Maschinelle Lernen mit Python

Kreuzvalidierung

Swipe um das Menü anzuzeigen

Die Aufteilung in Trainings- und Testdaten hat zwei Nachteile:

  1. Weniger Trainingsdaten, was die Modellqualität verringern kann;
  2. Abhängigkeit von der zufälligen Aufteilung, was zu instabilen Ergebnissen führt. Um dies zu vermeiden, wird Cross-Validation verwendet.

Zuerst wird der gesamte Datensatz in 5 gleich große Teile unterteilt, sogenannte Folds.

folds_split

Als Nächstes wird ein Fold als Testmenge verwendet und die verbleibenden Folds werden zur Bildung der Trainingsmenge kombiniert.

CV Schritt 2

Wie bei jedem Evaluierungsprozess wird die Trainingsmenge zum Trainieren des Modells verwendet, während die Testmenge zur Messung der Modellleistung dient.

CrossValStep3

Der Vorgang wird wiederholt, sodass jeder Fold einmal als Testmenge dient, während die verbleibenden Folds die Trainingsmenge bilden.

CV Schritt 3

Die Kreuzvalidierung liefert mehrere Genauigkeitswerte – einen pro Aufteilung. Ihr Mittelwert repräsentiert die durchschnittliche Leistung des Modells. In Python wird dies mit cross_val_score() berechnet.

Note
Hinweis

Es kann beliebig viele Folds gewählt werden. Beispielsweise bedeutet die Verwendung von 10 Folds, dass auf 9 Teilen trainiert und auf 1 Teil getestet wird. Dies wird über den Parameter cv in cross_val_score() festgelegt.

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())

Cross-Validation ist zuverlässiger, aber langsamer, da das Modell n-mal trainiert und bewertet wird. Es wird häufig beim Hyperparameter-Tuning eingesetzt, wobei die Kreuzvalidierung für jeden Hyperparameterwert wiederholt wird – zum Beispiel beim Testen mehrerer k-Werte im k-NN. Dies hilft, die Option zu wählen, die konsequent am besten abschneidet.

question mark

Warum wird die Kreuzvalidierung gegenüber dem Train-Test-Split bevorzugt, um die Leistung eines Machine-Learning-Modells zu bewerten?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 4. Kapitel 4
some-alt