Kreuzvalidierung in StackingClassifier Scikit-Learn

Aug 20 2020

In der Scikit-Learn- StackingClassifier Dokumentation steht geschrieben:

Beachten Sie, dass estimators_vollständig angepasst wird, Xwährend final_estimator_mithilfe von kreuzvalidierten Vorhersagen der Basisschätzer trainiert wird cross_val_predict.

... die standardmäßige 5-fache Kreuzvalidierung

Meine Frage, warum die 5-fache Kreuzvalidierung nur im endgültigen Schätzer verwenden? Warum wird der endgültige Schätzer nicht auf das volle X' (Ausgabe von Basisschätzern) angepasst?

Antworten

1 RobbytheBelgian Aug 26 2020 at 13:03

Dazu gehören 2 Fragen, ich werde auf jede von ihnen eingehen.

  1. Wir könnten die Kreuzvalidierung auf das gesamte System anwenden, aber das würde uns ein bisschen zu sehr behindern.

Der Zweck der Kreuzvalidierung besteht darin, die optimalen Parameter zu finden, die es dem Modell ermöglichen, die Daten ohne Überanpassung gut anzupassen. Es reicht aus, dass unser letzter Schätzer dies tut; Es besteht keine Notwendigkeit, die Einstellungen aller Basisschätzer einzeln herauszufinden. Die Basisschätzer können zum Beispiel eine Menge unterschiedlicher Parametereinstellungen beinhalten; sowie eine Auswahl an verschiedenen Arten von Klassifikatoren. Wenn einer von ihnen zu Überanpassung neigt, sollte dies durch andere ausgeglichen werden, die dieses Problem nicht haben. Solange der endgültige Schätzer nicht alle Eier in den falschen Korb legt, sollte es uns gut gehen (und deshalb brauchen wir hier eine Kreuzvalidierung, um sicherzustellen, dass dies nicht passiert).

  1. Wir werden den endgültigen Schätzer mit dem vollständigen Trainingssatz trainieren – dies geschieht, nachdem wir die optimalen Parameter oder den Satz von Basisschätzern mithilfe von Kreuzvalidierung gefunden haben. Wie der Name schon sagt, dient die Kreuzvalidierung der Validierung der Methode. Nicht um das endgültige Modell zu erstellen.