18 votos

Uso de la validación cruzada anidada

Scikit Learn Página sobre la selección de modelos menciona el uso de la validación cruzada anidada:

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

Se realizan dos bucles de validación cruzada en paralelo: uno por el estimador GridSearchCV para establecer gamma y el otro por cross_val_score para medir el rendimiento de predicción del estimador. Las puntuaciones resultantes son estimaciones insesgadas de la puntuación de la predicción en los nuevos datos.

Por lo que tengo entendido, clf.fit utilizará la validación cruzada de forma nativa para determinar la mejor gamma. En ese caso, ¿por qué tendríamos que utilizar cv anidado como se indica más arriba? La nota menciona que cv anidado produce "estimaciones insesgadas" de la puntuación de predicción. ¿No ocurre lo mismo con clf.fit ?

Además, no he podido obtener las mejores estimaciones clf del cross_validation.cross_val_score(clf, X_digits, y_digits) procedimiento. ¿Podría indicarme cómo hacerlo?

23voto

John Richardson Puntos 1197

La validación cruzada anidada se utiliza para evitar estimaciones del rendimiento sesgadas de forma optimista que resultan de utilizar la misma validación cruzada para establecer los valores de los hiperparámetros del modelo (por ejemplo, el parámetro de regularización, $C$ y los parámetros del núcleo de una SVM) y la estimación del rendimiento. Escribí un artículo sobre este tema después de alarmarme bastante por la magnitud del sesgo introducido por un atajo aparentemente benigno utilizado a menudo en la evaluación de máquinas de núcleo. Investigué este tema para descubrir por qué mis resultados eran peores que los de otros grupos de investigación que utilizaban métodos similares en los mismos conjuntos de datos; la razón resultó ser que yo utilizaba la validación cruzada anidada y, por tanto, no me beneficiaba del sesgo optimista.

G. C. Cawley y N. L. C. Talbot, Over-fitting in model selection and subsequent selection bias in performance evaluation, Journal of Machine Learning Research, 2010. Research, vol. 11, pp. 2079-2107, julio de 2010. ( http://jmlr.org/papers/volume11/cawley10a/cawley10a.pdf )

Las razones del sesgo con ejemplos ilustrativos y evaluación experimental pueden encontrarse en el documento, pero esencialmente la cuestión es que si el criterio de evaluación del rendimiento se utiliza en cualquier forma de tomar decisiones sobre el modelo, entonces esas decisiones se basan en (i) auténticas mejoras en el rendimiento de la generalización y (ii) las peculiaridades estadísticas de la muestra concreta de datos sobre la que se evalúa el criterio de evaluación del rendimiento. En otras palabras, el sesgo surge porque es posible (demasiado fácil) sobreajustar el error de validación cruzada al ajustar los hiperparámetros.

5voto

Vijay G Puntos 11

Con un conjunto de pruebas retenido clf.fit produce un estimación insesgada mientras que la validación cruzada anidada con cross_val_score produce varios estimaciones insesgadas. La ventaja de la validación cruzada anidada es una mejor evaluación del rendimiento real utilizando datos que el algoritmo aún no ha visto. Mejor evaluación porque se obtienen, por ejemplo, tres puntuaciones de prueba con la cv anidada en lugar de sólo una.

La respuesta a tu segunda pregunta sobre las mejores estimaciones es que actualmente (v0.14) no es posible obtener los parámetros de los modelos ajustados utilizando cv anidados cross_val_score . Ver mi respuesta aquí con un ejemplo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X