Welche zwei Genauigkeiten vergleiche ich, um festzustellen, ob das Modell überpasst oder nicht?
Sie sollten die Trainings- und Testgenauigkeiten vergleichen, um eine Überanpassung festzustellen. Eine Trainingsgenauigkeit, die subjektiv weit über der Testgenauigkeit liegt, weist auf eine Überanpassung hin.
Hier wird "Genauigkeit" im weitesten Sinne verwendet, sie kann durch F1, AUC, Fehler (Zunahme wird Abnahme, höhere wird niedriger) usw. ersetzt werden.
Ich schlage "Bias and Variance" - und "Learning Curves" -Teile von " Machine Learning Yearning - Andrew Ng " vor. Es präsentiert Handlungen und Interpretationen für alle Fälle mit einer klaren Erzählung.
Wenn ich eine 10-fache Kreuzvalidierung durchführen kann, erhalte ich 10 Genauigkeiten, deren Durchschnitt / Mittelwert ich nehmen kann. sollte ich diesen Mittelwert als Validierungsgenauigkeit bezeichnen?
Nein. Es handelt sich um eine [Schätzung der] Testgenauigkeit.
Der Unterschied zwischen der Validierung und Testsätze (und ihre entsprechenden Genauigkeiten) ist , dass Validierungssatz zu bauen / wählen ein besseres Modell verwendet wird, das heißt , es wirkt sich das endgültige Modell. Da jedoch das 10-fache CV - Tests immer eine bereits gebaute Modell auf seine 10% gehalten, und es wird nicht verwendet , hier zu wählen zwischen Modellen, seine 10% gehalten-out ist ein Test - Set kein Validierungssatz.
Danach teste ich das Modell mit 30% Testdaten und erhalte die Testgenauigkeit.
Wenn Sie das K-Fold nicht verwenden, um zwischen mehreren Modellen zu wählen, wird dieser Teil nicht benötigt. Führen Sie K-Fold für 100% der Daten aus, um die Testgenauigkeit zu erhalten. Andernfalls sollten Sie diesen Testsatz beibehalten, da das Ergebnis von K-Fold eine Validierungsgenauigkeit wäre.
Was ist in diesem Fall die Trainingsgenauigkeit?
Aus jeder der 10 Falten können Sie eine Testgenauigkeit für 10% der Daten und eine Trainingsgenauigkeit für 90% der Daten erhalten. In Python cross_val_score
berechnet die Methode nur die Testgenauigkeiten. So berechnen Sie beide:
from sklearn import model_selection
from sklearn import datasets
from sklearn import svm
iris = datasets.load_iris()
clf = svm.SVC(kernel='linear', C=1)
scores = model_selection.cross_validate(clf, iris.data, iris.target, cv=5, return_train_score=True)
print('Train scores:')
print(scores['train_score'])
print('Test scores:')
print(scores['test_score'])
Stellen Sie ein return_estimator = True
, um auch die trainierten Modelle zu erhalten.
Mehr zum Validierungssatz
Der Validierungssatz wird in zwei allgemeinen Fällen angezeigt: (1) Erstellen eines Modells und (2) Auswählen zwischen mehreren Modellen,
Zwei Beispiele für die Erstellung eines Modells: (a) Beenden des Trainings eines neuronalen Netzwerks oder (b) Beenden des Beschneidens eines Entscheidungsbaums, wenn die Genauigkeit des Modells im Validierungssatz abnimmt. Anschließend testen wir das endgültige Modell an einem herausgehaltenen Set, um die Testgenauigkeit zu erhalten.
Zwei Beispiele für die Auswahl zwischen mehreren Modellen:
ein. Wir führen einen K-fachen CV in einem neuronalen Netzwerk mit 3 Schichten und einem mit 5 Schichten durch (um jeweils K Modelle zu erhalten), und wählen dann die NN mit der höchsten Validierungsgenauigkeit aus, gemittelt über K Modelle. Angenommen, die 5-Schicht NN. Schließlich trainieren wir das 5-Schicht-NN in einem 80% igen Zug, 20% igen Validierungssplit der kombinierten K-Falten und testen es dann an einem gehaltenen Satz, um die Testgenauigkeit zu erhalten.
b. Wir wenden zwei bereits erstellte SVM- und Entscheidungsbaummodelle auf einen Validierungssatz an und wählen dann das Modell mit der höchsten Validierungsgenauigkeit aus. Schließlich testen wir das ausgewählte Modell an einem gehaltenen Set, um die Testgenauigkeit zu erhalten.
Die Kreuzvalidierung teilt Ihre Daten in K-Falten auf. Jede Falte enthält einen Satz von Trainingsdaten und Testdaten. Sie haben Recht, dass Sie K verschiedene Fehlerraten erhalten, von denen Sie dann den Mittelwert nehmen. Diese Fehlerraten stammen aus dem Testsatz jeder Ihrer K-Falten. Wenn Sie die Trainingsfehlerrate erhalten möchten, berechnen Sie die Fehlerrate für den Trainingsteil jeder dieser K-Falten und nehmen dann den Durchschnitt.
quelle