¿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?

9

El maravilloso paquete libsvm proporciona una interfaz 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 determinado de parámetros de aprendizaje, la precisión se operacionaliza mediante validación cruzada, pero creo que esto socava el propósito de la validación cruzada. Es decir, en la medida en que los parámetros de aprendizaje en sí pueden elegirse de una manera que pueda causar un sobreajuste de los datos, creo que un enfoque más apropiado sería aplicar la validación cruzada en el nivel de la búsqueda en sí: realizar la búsqueda en un conjunto de datos de entrenamiento y luego evalúe la precisión final de SVM resultante de los parámetros de aprendizaje finalmente elegidos mediante evaluación dentro de un conjunto de datos de prueba por separado. ¿O me estoy perdiendo algo aquí?

Mike Lawrence
fuente

Respuestas:

10

Si aprende los hiperparámetros en los datos de entrenamiento completos y luego realiza una validación cruzada, obtendrá una estimación de rendimiento sesgada de manera optimista, ya que los datos de prueba en cada pliegue ya se habrán utilizado para establecer los hiperparámetros, por lo que los parámetros seleccionados se seleccionan 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 y Talbot, "Sobre el ajuste excesivo en la selección del modelo y el sesgo de selección posterior en la evaluación del desempeño", JMLR 11 (julio): 2079-2107, 2010.(Particularmente la sección 5.3). Lo mejor que puede hacer es la validación cruzada anidada. La idea básica es validar de forma cruzada todo el método utilizado para generar el modelo, así que trate 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 puede ir Demasiado equivocado.

Si usa la validación cruzada en el conjunto de entrenamiento para determinar los hiperparámetros y luego evalúa el rendimiento de un modelo entrenado usando esos parámetros en todo el conjunto de entrenamiento, usando un conjunto de prueba separado, eso también está bien (siempre que tenga suficientes datos para ajustar de manera confiable el modelo y estimar el rendimiento utilizando particiones disjuntas).

Dikran Marsupial
fuente
Buena referencia!
Andrew
En el segundo párrafo, ¿cómo incorporarías también la selección de funciones? Estaría bien: i) hacer una optimización de hiperparámetros como dijiste anteriormente (obtener hiperparámetros óptimos) ii) ejecutar la selección de características en otra ronda de validación cruzada para obtener un conjunto de predictores principales (la selección de características se ejecuta en datos de entrenamiento particionados en un conjunto de subentrenamiento y validación utilizando cualquier método de remuestreo utilizado en la optimización de hiperparámetros). iii) entrenar un modelo con el hiperparámetro superior y el conjunto de predictores superiores en datos de entrenamiento completos. Prueba en un conjunto de prueba separado.
sma
para ser un poco más claro en ii) ejecutar la selección de características en otra ronda de validación cruzada para obtener un conjunto de predictores principales (los datos de entrenamiento se dividen en subentrenamiento y conjunto de validación mediante el método de remuestreo utilizado en la optimización de hiperparámetros. Luego, la selección de características se ejecuta en sustracción de datos).
sma
Alternativamente, ¿podría uno hacer la selección de características primero a través de la validación cruzada para obtener el conjunto de características superior, luego hacer un ajuste de hiperparámetros de los modelos de interés que utilicen el conjunto de características superior (como se indicó anteriormente en la validación cruzada)? Luego, ¿entrena los modelos con sus hiperparámetros óptimos en datos de entrenamiento completos con solo el conjunto de características principales ya determinado y prueba en un conjunto de prueba separado?
sma
0

No creo que la validación cruzada se use incorrectamente en el caso de LIBSVM porque se realiza en el nivel de datos de prueba. Todo lo que hace es la validación cruzada k-fold y buscar el mejor parámetro para el kernel RBF. Hazme saber que no estás de acuerdo.

usuario20350
fuente
La selección de los hiperparámetros no debe involucrar los datos de prueba de ninguna manera, ya que esto conducirá a una estimación de rendimiento sesgada de manera optimista. Esencialmente, la elección de los hiperparámetros debe tratarse como una parte integral del ajuste de la SVM, por lo que el procedimiento de prueba también debe probar el error debido a la selección de los hiperparámetros, consulte mi documento al que me refiero en mi respuesta a la pregunta (es de acceso abierto).
Dikran Marsupial