Utilizzo della convalida incrociata nidificata


14

La pagina di Scikit Learn sulla selezione del modello menziona l'uso della validazione incrociata nidificata:

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

Due cicli di validazione incrociata vengono eseguiti in parallelo: uno dallo stimatore GridSearchCV per impostare la gamma e l'altro da cross_val_score per misurare le prestazioni di previsione dello stimatore. I punteggi risultanti sono stime imparziali del punteggio di previsione su nuovi dati.

Da quello che ho capito, clf.fituserò la validazione incrociata in modo nativo per determinare la gamma migliore. In tal caso, perché dovremmo usare il cv nidificato come indicato sopra? La nota menziona che il cv nidificato produce "stime imparziali" del punteggio di previsione. Non è così anche per clf.fit?

Inoltre, non sono stato in grado di ottenere le migliori stime di clf dalla cross_validation.cross_val_score(clf, X_digits, y_digits)procedura. Potresti per favore consigliarti come farlo?

Risposte:


18

C

GC Cawley e NLC Talbot, Over-fitting nella selezione dei modelli e conseguente errore di selezione nella valutazione delle prestazioni, Journal of Machine Learning Research, 2010. Research, vol. 11, pp. 2079-2107, luglio 2010. ( http://jmlr.org/papers/volume11/cawley10a/cawley10a.pdf )

Le ragioni del bias con esempi illustrativi e valutazione sperimentale possono essere trovate nel documento, ma essenzialmente il punto è che se il criterio di valutazione delle prestazioni viene utilizzato in qualche modo per fare delle scelte sul modello, tali scelte si basano su (i) autentici miglioramenti nelle prestazioni di generalizzazione e (ii) le peculiarità statistiche del particolare campione di dati su cui viene valutato il criterio di valutazione delle prestazioni. In altre parole, la distorsione deriva dal fatto che è possibile (fin troppo facile) sovrapporre l'errore di convalida incrociata durante l'ottimizzazione degli iperparametri.


5

Con un set di test tenuto fuori clf.fitproduce una stima imparziale mentre la convalida incrociata nidificata con cross_val_scoreproduce diverse stime imparziali. Il vantaggio della convalida incrociata nidificata è una migliore valutazione delle prestazioni effettive utilizzando dati che l'algoritmo non ha ancora visto. Migliore valutazione perché ottieni, ad esempio, tre punteggi di test con cv nidificato anziché solo uno.

La risposta alla tua seconda domanda riguardo alle migliori stime è che attualmente (v0.14) non è possibile ottenere i parametri dei modelli montati usando cv nidificato cross_val_score. Vedi la mia risposta qui con un esempio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.