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

bookKreuzvalidierung

Der Train-Test-Split 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 ü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.

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.

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

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.

question mark

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

Select the correct answer

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

Suggested prompts:

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

bookKreuzvalidierung

Swipe um das Menü anzuzeigen

Der Train-Test-Split 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 ü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.

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.

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

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.

question mark

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

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4
some-alt