¿Se debe realizar la selección de características solo en los datos de entrenamiento (o todos los datos)? Revisé algunas discusiones y documentos como Guyon (2003) y Singhi y Liu (2006) , pero aún no estoy seguro de la respuesta correcta.
La configuración de mi experimento es la siguiente:
- Conjunto de datos: 50 controles sanos y 50 pacientes con enfermedades (características de aproximadamente 200 que pueden ser relevantes para la predicción de la enfermedad).
- La tarea es diagnosticar la enfermedad según las características disponibles.
Lo que hago es
- Tome todo el conjunto de datos y realice la selección de características (FS). Mantengo solo las funciones seleccionadas para su posterior procesamiento
- Dividir para probar y entrenar, clasificador de trenes usando datos de trenes y características seleccionadas. Luego, aplique el clasificador a los datos de prueba (nuevamente utilizando solo las características seleccionadas). Se utiliza la validación de dejar uno fuera.
- obtener precisión de clasificación
- Promedio: repita 1) -3) N veces. (100).
Estoy de acuerdo en que hacer FS en todo el conjunto de datos puede introducir algún sesgo, pero mi opinión es que se "promedia" durante el promedio (paso 4). ¿Es eso correcto? (La varianza de precisión es )
1 Guyon, I. (2003) "Introducción a la selección de variables y características", The Journal of Machine Learning Research, vol. 3, págs. 1157-1182
2 Singhi, SK y Liu, H. (2006) "Sesgo de selección de subconjunto de características para el aprendizaje de clasificación", Procedimientos ICML '06 Actas de la 23ª conferencia internacional sobre aprendizaje automático, págs. 849-856
Solo como una adición a las respuestas aquí, tengo dos enlaces que realmente me ayudaron a entender por qué este no es un buen procedimiento:
http://nbviewer.jupyter.org/github/cs109/content/blob/master/lec_10_cross_val.ipynb
https://www.youtube.com/watch?v=S06JpVoNaA0
Editar: según lo solicitado, una breve explicación del contenido de los enlaces:
Supongamos que estoy entrenando a un clasificador y tengo un conjunto de datos de 1000 muestras, con 1 millón de características cada una. No puedo procesarlos a todos, por lo que necesito menos funciones (por ejemplo, puedo calcular 300 funciones). También tengo un conjunto de prueba extendido de 100 muestras para estimar con precisión mi precisión del mundo real fuera de la muestra.
Si filtro mis 1 millón de funciones hasta 300, al seleccionar aquellas funciones con una correlación más alta con los objetivos de todo mi conjunto de datos, estoy cometiendo un error (porque estoy introduciendo un sobreajuste que no puede ser detectado por Cross Validation más adelante). Mi conjunto extendido mostrará esto al escupir un valor de mala precisión.
De acuerdo con los enlaces anteriores, la forma correcta de hacerlo es dividir mi conjunto de datos en un conjunto de entrenamiento y un conjunto de Validación cruzada, y luego ajustar mi modelo (filtrar características, etc.) en función de este conjunto de entrenamiento y su puntaje CV asociado. Si estoy usando K-folds, debo ajustar desde cero cada vez que hago un split / fold y luego promediar los resultados.
Programáticamente, haces lo siguiente:
Es realmente importante que realice la ingeniería de características dentro del bucle, en el conjunto de entrenamiento secundario, Ti, en lugar de en el conjunto de entrenamiento completo, T1.
La razón de esto es que cuando usted ajusta / presenta el ingeniero para Ti, prueba en CVi, que no se ve para ese modelo. Mientras que, si encaja / presenta un ingeniero en T1, cualquier CV que elija debe ser un subconjunto T1, por lo que tendrá un sesgo optimista, es decir, se sobreajustará, porque está entrenando y probando con las mismas muestras de datos.
Una muy buena respuesta de StackExchange es esta , que realmente lo explica más en profundidad y con un ejemplo del código. También vea esto como un apéndice.
fuente
El bootstrap de "optimismo" de Efron-Gong es muy bueno para esto. La idea es utilizar todos los datos disponibles para desarrollar el modelo predictivo y utilizar todos los datos para estimar el rendimiento futuro probable de ese mismo modelo. Y el tamaño de su muestra es demasiado pequeño por un factor de 100 para que funcione cualquier enfoque de muestra dividida.
fuente