¿El uso de los mismos datos para la selección de características y la validación cruzada está sesgado o no?


8

Tenemos un pequeño conjunto de datos (alrededor de 250 muestras * 100 características) en el que queremos construir un clasificador binario después de seleccionar el mejor subconjunto de características. Digamos que dividimos los datos en:

Entrenamiento, Validación y Pruebas

Para la selección de características, aplicamos un modelo de envoltura basado en la selección de características que optimizan el rendimiento de los clasificadores X, Y y Z, por separado. En este paso de preprocesamiento, utilizamos datos de capacitación para capacitar a los clasificadores y datos de validación para evaluar cada subconjunto de características candidatas.

Al final, queremos comparar los diferentes clasificadores (X, Y y Z). Por supuesto, podemos usar la parte de prueba de los datos para tener una comparación y evaluación justas. Sin embargo, en mi caso, los datos de prueba serían realmente pequeños (alrededor de 10 a 20 muestras) y, por lo tanto, quiero aplicar la validación cruzada para evaluar los modelos.

La distribución de los ejemplos positivos y negativos está muy mal equilibrada (alrededor de 8: 2). Por lo tanto, una validación cruzada podría llevarnos erróneamente a evaluar el rendimiento. Para superar esto, planeamos tener la porción de prueba (10-20 muestras) como un segundo método de comparación y validar la validación cruzada.

En resumen, estamos dividiendo los datos en capacitación, validación y pruebas. Las piezas de capacitación y validación se utilizarán para la selección de funciones. Luego, se aplicará la validación cruzada sobre los mismos datos para estimar los modelos. Finalmente, las pruebas se utilizan para validar la validación cruzada dado el desequilibrio de los datos.

La pregunta es: si usamos los mismos datos (entrenamiento + validación) utilizados para seleccionar las características que optimizan el rendimiento de los clasificadores X, Y y Z, ¿podemos aplicar la validación cruzada sobre los mismos datos (entrenamiento + validación) utilizados para la selección de características medir el rendimiento final y comparar los clasificadores?

No sé si esta configuración podría conducir a una medida de validación cruzada sesgada y resultar en una comparación no justificada o no.


44
Crossvalidated.com trata exactamente este tipo de preguntas. Sugiero que esta Q se traslade allí.
Roman Luštrik

Una sugerencia es aplicar bootstrapping (solo de entrenamiento + validación) en los datos en lugar de la validación cruzada. ¿Resolvería esto el problema de sesgo establecido en la pregunta? Todavía no estoy seguro !!
soufanom

3
Sí, está sesgado: busque Q en la etiqueta de selección de funciones de este sitio, especialmente en este , o incluso en la página de Wikipedia sobre CV .

1
Convenido. Puede aplicar el diseño a conjuntos de datos simulados aleatoriamente y estimar cuánto sesgo hay. Pero recomendaría LOOCV como sugiere una respuesta.
Steve P

Respuestas:


5

Creo que es parcial. ¿Qué pasa con la aplicación de FS en la partición N-1 y prueba en la última partición? y combine las características de todos los pliegues de alguna manera (unión / intersección / o alguna forma específica del problema).


Dejar una parte para probar se ha explicado en la publicación. Además, como se explicó, se necesita validación cruzada para comparar los modelos. Por lo tanto, no es posible aplicarlo para la selección de características a menos que usemos la idea de validación cruzada anidada. Sin embargo, el conjunto de datos es muy pequeño y es difícil aplicar la validación cruzada anidada.
soufanom

6

La respuesta simple es que debe hacer la selección de características en un conjunto de datos diferente al que entrena (ya lo está haciendo, así que no cambie esto): el efecto de no hacerlo es que sobreajustará sus datos de entrenamiento. Tampoco debe hacer una selección de funciones en su conjunto de pruebas, ya que esto aumentará las estimaciones del rendimiento de sus modelos (creo que ya se da cuenta de esto también, pero me resultó un poco difícil entender la pregunta con precisión).

Si ya ha dividido su conjunto de pruebas en capacitación, validación y pruebas, entonces no hay ninguna razón particular para hacer una validación cruzada a menos que tenga tan pocos datos que su conjunto de pruebas sea demasiado pequeño para sacar conclusiones sólidas. A muchos investigadores no les gusta la validación cruzada porque si se usa para impulsar el desarrollo del modelo (con lo que quiero decir, modifica las cosas, luego ejecuta la validación cruzada para ver cómo funcionan, luego las ajusta un poco más, etc.) efectivamente tiene acceso a su prueba datos y esto puede llevarlo a sobreestimar su rendimiento en datos realmente invisibles. Si sus datos son tan pequeños que no tiene más remedio que hacer una validación cruzada, la forma correcta de hacerlo con los conjuntos de entrenamiento, desarrollo y prueba es dividir explícitamente sus datos en tres partes para cada pliegue, la mayoría debe usarse para entrenamiento, algunos para el desarrollo (selección de características en su caso, más cualquier otro parámetro libre que necesite ajuste) y finalmente debe probar en la parte de prueba. Luego puede promediar los puntajes en estas porciones de prueba para obtener una estimación del rendimiento del modelo: sin embargo, como dije, tenga en cuenta que si estos puntajes se usan para guiarlo hacia los enfoques que desea usar para su problema, no debe esperar obtener el mismo puntaje en datos invisibles que obtuvo de su validación cruzada.


finally you should test on the test portion. You can then average scores across these test portions to get an estimate of model performance Para tener algún sentido del rendimiento de un clasificador, debe usarse en datos de prueba que no se hayan visto ni usado antes. De la forma en que lo veo, si toma una decisión basada en el rendimiento del algoritmo en algún conjunto de datos, este conjunto de datos es de capacitación o de validación cruzada, bajo ninguna circunstancia debería llamarse conjunto de datos de prueba.
Ivan

Tenga en cuenta que no dije que debería hacer una selección de características en sus datos de prueba --- para cada pliegue, crea porciones de capacitación, desarrollo y prueba. Usted entrena en su entrenamiento, establece parámetros libres y realiza una selección de características en su desarrollo, y luego aplica modelos aprendidos finales a los datos de la prueba. Como mencioné anteriormente, esta práctica no es ideal, pero no está utilizando explícitamente los datos de prueba para establecer los parámetros (para cada doblez, los datos de la prueba son ciegos hasta que se arreglen los modelos, simplemente se arrastran entre los pliegues)

Creo que estamos de acuerdo en lo mismo, solo quería aclarar la distinción entre datos de prueba y C / V. La selección del modelo es similar a la selección de parámetros, por lo que es mejor si los datos de prueba se dejan de lado y no se utilizan en absoluto. Una vez hecho esto, podrá informar de forma segura sobre el rendimiento esperado del modelo elegido en cualquier dato nuevo no visto.
Ivan

1

¿Intentaste LOOCV? Creo que es apto para entrenar, cuando tienes muy pocos datos de entrenamiento. Para responder a su pregunta, eso no le daría los mejores resultados simplemente porque podría sobreajustar y darle resultados engañosos, de modo que su clasificador no funcionaría bien en otros datos, que no ha visto.


LOOCV al final es solo una especie de validación cruzada. Necesitamos una solución para el problema en el que tenemos datos pequeños, queremos seleccionar buenas características y finalmente tener una medida representativa para evaluar el rendimiento.
soufanom

0

Puede hacer lo siguiente para comparar el rendimiento de los clasificadores.

Tome su conjunto de entrenamiento y capacítelo en cada conjunto de características posibles. Para cada conjunto de características, minimice los parámetros y cree el modelo de manera que se ajuste bien al conjunto de entrenamiento. Ahora, una vez que los modelos se hayan creado para todos los conjuntos de características, es decir, que tenga un modelo para cada conjunto de características, valide los modelos (basados ​​en diferentes conjuntos de características) en el conjunto de validación y seleccione ese modelo (creado para un subconjunto particular de conjunto de características ) que proporciona el error mínimo en el conjunto de validación. De esta manera, se asegura de que el modelo construido se ajuste bien no solo al conjunto de entrenamiento sino también al conjunto de validación.

Ahora, tome este modelo construido y pruébelo en el conjunto de prueba. Esto le dirá qué tan bien se desempeña el clasificador una vez que se ejecuta en un conjunto de datos que no se utilizó ni para entrenamiento ni para validación. Además, ha seleccionado ese conjunto de características que se ajusta al conjunto de entrenamiento y también al conjunto de validación.


1
Para el modelo envolvente de selección de características, se deben admitir los conjuntos de datos de capacitación y validación. En el modelo de envoltura, estamos entrenando y probando un clasificador dado un subconjunto de características candidato. Por lo tanto, dar solo un conjunto de entrenamiento a este modelo no es suficiente. La pregunta es: si los mismos datos usados ​​para la selección de características se usan para la comparación pero usando CV, ¿estamos sesgados y en qué grado?
soufanom

0

Si es posible, es mejor retener algunos datos para una validación cruzada adicional. Por ejemplo, puede usarlo para validar sus algoritmos construyendo curvas de aprendizaje. Estas curvas deben construirse sobre un conjunto de datos que no se haya utilizado antes.

Incluso si desea simplemente seleccionar un algoritmo que le brinde la puntuación F1 más alta, necesitaría usar un conjunto de datos de validación cruzada adicional para hacerlo. El conjunto de pruebas debe reservarse para informar la precisión final de su solución (rendimiento esperado del clasificador elegido en datos no vistos).


Su respuesta se indica en mi pregunta como una técnica que conozco. ¡La pregunta es sobre el uso de los mismos datos para la selección de características y validación cruzada!
soufanom

@soufanom Escribí que necesita un conjunto adicional de datos de validación cruzada para seleccionar el mejor clasificador, de lo contrario sus resultados no serán confiables. ¿Cómo puede juzgar el rendimiento de un modelo ejecutándolo en un conjunto de datos que se utilizó para entrenar el modelo o para seleccionar parámetros? En mi humilde opinión, la única forma confiable de juzgar el rendimiento de cualquier clasificador es ejecutarlo en datos no vistos previamente. Espero que esto responda a su pregunta, si no, refínelo y agregue más información.
Ivan

0

Puede estar muy sesgado, consulte el capítulo de validación del modelo en "Elementos de aprendizaje estadístico". Puede hacer que la precisión del modelo cv sea superior al 70%, mientras que la tasa de error real de cualquier modelo debe ser del 50% (las características son independientes de la clase )

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.