Verwendung von verschachtelter Kreuzvalidierung

14

Die Seite von Scikit Learn zur Modellauswahl erwähnt die Verwendung von verschachtelter Kreuzvalidierung:

>>> clf = GridSearchCV(estimator=svc, param_grid=dict(gamma=gammas),
  ...                    n_jobs=-1)  
>>> cross_validation.cross_val_score(clf, X_digits, y_digits)

Zwei Kreuzvalidierungsschleifen werden parallel ausgeführt: eine vom GridSearchCV-Schätzer zum Festlegen von Gamma und eine vom cross_val_score zum Messen der Vorhersageleistung des Schätzers. Die resultierenden Scores sind unvoreingenommene Schätzungen des Vorhersage-Scores für neue Daten.

Soweit ich weiß, clf.fitwird die Kreuzvalidierung nativ verwendet, um das beste Gamma zu bestimmen. Warum sollten wir in diesem Fall verschachtelten Lebenslauf wie oben angegeben verwenden? In der Anmerkung wird erwähnt, dass verschachtelter Lebenslauf "unvoreingenommene Schätzungen" des Vorhersagewertes liefert. Ist das nicht auch so clf.fit?

Außerdem war ich nicht in der Lage, die besten Schätzungen für den CLF aus dem cross_validation.cross_val_score(clf, X_digits, y_digits)Verfahren zu erhalten. Könnten Sie uns bitte mitteilen, wie das gemacht werden kann?

xbsd
quelle

Antworten:

18

C

GC Cawley und NLC Talbot, Überanpassung bei der Modellauswahl und anschließende Auswahlverzerrung bei der Leistungsbewertung, Journal of Machine Learning Research, 2010. Research, vol. 11, S. 2079-2107, Juli 2010. ( http://jmlr.org/papers/volume11/cawley10a/cawley10a.pdf )

Die Gründe für die Verzerrung durch veranschaulichende Beispiele und experimentelle Bewertung sind in der Veröffentlichung zu finden, aber im Wesentlichen geht es darum, dass, wenn das Leistungsbewertungskriterium in irgendeiner Weise verwendet wird, um Entscheidungen über das Modell zu treffen, diese Entscheidungen auf (i) basieren. echte Verbesserungen der Generalisierungsleistung und (ii) der statistischen Besonderheiten der jeweiligen Stichprobe von Daten, anhand derer das Leistungsbewertungskriterium bewertet wird. Mit anderen Worten, die Verzerrung entsteht, weil es möglich ist (allzu leicht), den Kreuzvalidierungsfehler beim Abstimmen der Hyperparameter zu überdecken.

Dikran Beuteltier
quelle
5

Mit einem gehaltenen-out Test - Set clf.fiterzeugt eine unvoreingenommene Schätzung während verschachtelte Kreuzvalidierung mit cross_val_scoreproduziert mehrere unverzerrte Schätzungen. Der Vorteil der verschachtelten Kreuzvalidierung ist eine bessere Beurteilung der tatsächlichen Leistung anhand von Daten, die der Algorithmus noch nicht gesehen hat. Bessere Einschätzung, weil Sie beispielsweise drei Testergebnisse mit verschachteltem Lebenslauf anstelle von nur einem erhalten.

Die Antwort auf Ihre zweite Frage zu den besten Schätzungen lautet, dass es derzeit (v0.14) nicht möglich ist, die Parameter der angepassten Modelle mithilfe von verschachteltem Lebenslauf abzurufen cross_val_score. Siehe meine Antwort hier mit einem Beispiel.

tobip
quelle