Kreuzvalidierung
Der Train-Test-Split hat zwei Nachteile:
- Weniger Trainingsdaten, was die Modellqualität verringern kann;
- Abhängigkeit von der zufälligen Aufteilung, was zu instabilen Ergebnissen führt. Um dies zu überwinden, verwenden wir die Kreuzvalidierung.
Zuerst wird der gesamte Datensatz in 5 gleich große Teile unterteilt, sogenannte Folds.
Anschließend wird ein Fold als Testmenge verwendet und die verbleibenden Folds werden zum Trainingssatz zusammengefasst.
Wie bei jedem Evaluierungsprozess wird das Trainingsset verwendet, um das Modell zu trainieren, während das Testset zur Messung der Leistungsfähigkeit dient.
Der Prozess wird wiederholt, sodass jeder Fold einmal als Testset dient, während die verbleibenden Folds das Trainingsset bilden.
Die Kreuzvalidierung erzeugt mehrere Genauigkeitswerte—je einen pro Aufteilung.
Ihr Mittelwert repräsentiert die durchschnittliche Leistungsfähigkeit des Modells.
In Python wird dies mit cross_val_score() berechnet.
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.
1234567891011import 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.
Sie 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 auszuwählen, die konsequent am besten abschneidet.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain why cross-validation is more reliable than a simple train-test split?
How does cross-validation help with hyperparameter tuning?
What are some common variations of cross-validation besides k-fold?
Awesome!
Completion rate improved to 3.13
Kreuzvalidierung
Swipe um das Menü anzuzeigen
Der Train-Test-Split hat zwei Nachteile:
- Weniger Trainingsdaten, was die Modellqualität verringern kann;
- Abhängigkeit von der zufälligen Aufteilung, was zu instabilen Ergebnissen führt. Um dies zu überwinden, verwenden wir die Kreuzvalidierung.
Zuerst wird der gesamte Datensatz in 5 gleich große Teile unterteilt, sogenannte Folds.
Anschließend wird ein Fold als Testmenge verwendet und die verbleibenden Folds werden zum Trainingssatz zusammengefasst.
Wie bei jedem Evaluierungsprozess wird das Trainingsset verwendet, um das Modell zu trainieren, während das Testset zur Messung der Leistungsfähigkeit dient.
Der Prozess wird wiederholt, sodass jeder Fold einmal als Testset dient, während die verbleibenden Folds das Trainingsset bilden.
Die Kreuzvalidierung erzeugt mehrere Genauigkeitswerte—je einen pro Aufteilung.
Ihr Mittelwert repräsentiert die durchschnittliche Leistungsfähigkeit des Modells.
In Python wird dies mit cross_val_score() berechnet.
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.
1234567891011import 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.
Sie 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 auszuwählen, die konsequent am besten abschneidet.
Danke für Ihr Feedback!