Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Kreuzvalidierung | Modellierung
ML-Einführung Mit Scikit-Learn

bookKreuzvalidierung

Im vorherigen Kapitel haben wir den Ansatz des Train-Test-Splits zur Bewertung des Modells untersucht. Dieser Ansatz hat jedoch einige Nachteile:

  1. Nur ein Teil des Datensatzes wird zum Training verwendet: Je mehr Daten dem Modell zur Verfügung stehen, desto mehr kann es daraus lernen und desto besser wird die Modellleistung;
  2. Das Ergebnis kann stark von der Aufteilung abhängen: Wie im vorherigen Kapitel gezeigt, kann das zufällige Aufteilen des Datensatzes bei mehrmaligem Ausführen des Codes zu deutlich unterschiedlichen Ergebnissen führen.

Daher gibt es einen anderen Ansatz zur Modellbewertung, bekannt als Cross-Validation.

Zunächst wird der gesamte Datensatz in 5 gleich große Teile, sogenannte Folds, aufgeteilt.

Anschließend wird ein Fold als Testmenge und die übrigen Folds als Trainingsmenge verwendet.

Wie immer verwenden wir den Trainingssatz, um das Modell zu trainieren, und den Testsatz, um das Modell zu evaluieren.

Nun wird der Prozess wiederholt, wobei jede Falte der Reihe nach als Testsatz verwendet wird.

Als Ergebnis erhalten wir fünf Genauigkeitswerte, jeweils einen aus jedem Split. Anschließend können wir den Mittelwert dieser Werte berechnen, um die durchschnittliche Leistung des Modells zu messen.

Um den Cross-Validation-Score in Python zu berechnen, können wir die Funktion cross_val_score() aus dem Modul sklearn.model_selection verwenden.

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

Sie liefert stabilere und verlässlichere Ergebnisse als die Train-Test-Split-Methode; allerdings ist sie deutlich langsamer, da das Modell fünfmal (oder n-mal, wenn Sie n Folds festlegen) trainiert und bewertet werden muss, im Vergleich zu nur einmal beim Train-Test-Split.

Cross-Validation wird typischerweise beim Hyperparameter-Tuning eingesetzt, wobei der gesamte Cross-Validation-Prozess für jeden möglichen Hyperparameterwert ausgeführt wird.

Beispielsweise wird zur Bestimmung der optimalen Anzahl an Nachbarn im k-Nearest-Neighbors-Algorithmus für jeden Kandidatenwert eine vollständige Cross-Validation durchgeführt. Diese Methode gewährleistet eine umfassende Bewertung jeder Hyperparameter-Einstellung über den gesamten Datensatz hinweg und ermöglicht die Auswahl des Wertes, der konsequent die beste Leistung erzielt.

question mark

Warum könnte Cross-Validation gegenüber dem Train-Test-Split bevorzugt werden, 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

Awesome!

Completion rate improved to 3.13

bookKreuzvalidierung

Swipe um das Menü anzuzeigen

Im vorherigen Kapitel haben wir den Ansatz des Train-Test-Splits zur Bewertung des Modells untersucht. Dieser Ansatz hat jedoch einige Nachteile:

  1. Nur ein Teil des Datensatzes wird zum Training verwendet: Je mehr Daten dem Modell zur Verfügung stehen, desto mehr kann es daraus lernen und desto besser wird die Modellleistung;
  2. Das Ergebnis kann stark von der Aufteilung abhängen: Wie im vorherigen Kapitel gezeigt, kann das zufällige Aufteilen des Datensatzes bei mehrmaligem Ausführen des Codes zu deutlich unterschiedlichen Ergebnissen führen.

Daher gibt es einen anderen Ansatz zur Modellbewertung, bekannt als Cross-Validation.

Zunächst wird der gesamte Datensatz in 5 gleich große Teile, sogenannte Folds, aufgeteilt.

Anschließend wird ein Fold als Testmenge und die übrigen Folds als Trainingsmenge verwendet.

Wie immer verwenden wir den Trainingssatz, um das Modell zu trainieren, und den Testsatz, um das Modell zu evaluieren.

Nun wird der Prozess wiederholt, wobei jede Falte der Reihe nach als Testsatz verwendet wird.

Als Ergebnis erhalten wir fünf Genauigkeitswerte, jeweils einen aus jedem Split. Anschließend können wir den Mittelwert dieser Werte berechnen, um die durchschnittliche Leistung des Modells zu messen.

Um den Cross-Validation-Score in Python zu berechnen, können wir die Funktion cross_val_score() aus dem Modul sklearn.model_selection verwenden.

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

Sie liefert stabilere und verlässlichere Ergebnisse als die Train-Test-Split-Methode; allerdings ist sie deutlich langsamer, da das Modell fünfmal (oder n-mal, wenn Sie n Folds festlegen) trainiert und bewertet werden muss, im Vergleich zu nur einmal beim Train-Test-Split.

Cross-Validation wird typischerweise beim Hyperparameter-Tuning eingesetzt, wobei der gesamte Cross-Validation-Prozess für jeden möglichen Hyperparameterwert ausgeführt wird.

Beispielsweise wird zur Bestimmung der optimalen Anzahl an Nachbarn im k-Nearest-Neighbors-Algorithmus für jeden Kandidatenwert eine vollständige Cross-Validation durchgeführt. Diese Methode gewährleistet eine umfassende Bewertung jeder Hyperparameter-Einstellung über den gesamten Datensatz hinweg und ermöglicht die Auswahl des Wertes, der konsequent die beste Leistung erzielt.

question mark

Warum könnte Cross-Validation gegenüber dem Train-Test-Split bevorzugt werden, 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