9 votos

¿Cómo se aplica adecuadamente la validación cruzada en el contexto de la selección de parámetros de aprendizaje para máquinas de vectores de soporte?

El maravilloso paquete libsvm proporciona una interfaz de python y un archivo "easy.py" que busca automáticamente los parámetros de aprendizaje (costo y gamma) que maximizan la precisión del clasificador. Dentro de un conjunto de candidatos de parámetros de aprendizaje, la precisión se opera mediante la validación cruzada, pero siento que esto socava el propósito de la validación cruzada. Es decir, en la medida en que los propios parámetros de aprendizaje pueden ser elegidos de una manera que podría causar un sobreajuste de los datos, siento que un enfoque más apropiado sería aplicar la validación cruzada a nivel de la búsqueda en sí misma: realizar la búsqueda en un conjunto de datos de entrenamiento y luego evaluar la precisión final del SVM resultante de los parámetros de aprendizaje finalmente elegidos mediante evaluación dentro de un conjunto de datos de prueba separado. ¿O estoy pasando por alto algo aquí?

10voto

John Richardson Puntos 1197

Si aprendes los hiperparámetros en los datos completos de entrenamiento y luego haces una validación cruzada, obtendrás una estimación de rendimiento optimista sesgada, porque los datos de prueba en cada pliegue ya se habrán utilizado para establecer los hiperparámetros, por lo que los hiperparámetros seleccionados son seleccionados en parte porque se ajustan a los datos en el conjunto de prueba. El sesgo optimista introducido de esta manera puede ser inesperadamente grande. Ver Cawley and Talbot, "On Over-fitting in Model Selection and Subsequent Selection Bias in Performance Evaluation", JMLR 11(Jul):2079−2107, 2010. (Particularmente sección 5.3). Lo mejor que puedes hacer es la validación cruzada anidada. La idea básica es que validas cruzadamente todo el método utilizado para generar el modelo, por lo que tratas la selección del modelo (elegir los hiperparámetros) como simplemente parte del procedimiento de ajuste del modelo (donde se determinan los parámetros) y no puedes cometer un error grave.

Si usas la validación cruzada en el conjunto de entrenamiento para determinar los hiperparámetros y luego evalúas el rendimiento de un modelo entrenado usando esos parámetros en todo el conjunto de entrenamiento, utilizando un conjunto de datos de prueba separado, eso también está bien (si tienes suficientes datos para ajustar el modelo de forma fiable y estimar el rendimiento utilizando particiones disjuntas).

0voto

MalColi Puntos 36

No creo que la validación cruzada se esté utilizando de manera incorrecta en el caso de LIBSVM porque se realiza a nivel de los datos de prueba. Todo lo que hace es validación cruzada k-fold y busca el mejor parámetro para el kernel RBF. Avísame si no estás de acuerdo.

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