28 votos

¿La selección de características debe realizarse sólo en los datos de entrenamiento (o en todos los datos)?

¿Debería realizarse la selección de características sólo en los datos de entrenamiento (o en todos los datos)? He leído algunos debates y artículos 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 (unas 200 características que pueden ser relevantes para la predicción de enfermedades).
  • La tarea consiste en diagnosticar la enfermedad basándose en las características disponibles.

Lo que hago es

  1. Tomar todo el conjunto de datos y realizar la selección de características (FS). Mantengo sólo las características seleccionadas para su posterior procesamiento
  2. Dividir para probar y entrenar, entrenar el clasificador utilizando los datos de entrenamiento y las características seleccionadas. A continuación, aplique el clasificador a los datos de prueba (de nuevo utilizando sólo las características seleccionadas). Se utiliza la validación de exclusión única.
  3. obtener precisión de clasificación
  4. Promedio: repetir 1)-3) N veces. $N=50$ (100).

Estoy de acuerdo en que realizar el FS en todo el conjunto de datos puede introducir algún sesgo, pero mi opinión es que se "promedia" durante el promediado (paso 4). ¿Es correcto? (La varianza de la precisión es $<2\%$ )

1 Guyon, I. (2003) "An Introduction to Variable and Feature Selection", The Journal of Machine Learning Research, Vol. 3, pp. 1157-1182
2 Singhi, S.K. y Liu, H. (2006) "Feature Subset Selection Bias for Classification Learning", Proceeding ICML '06 Proceedings of the 23rd international conference on Machine learning, pp. 849-856

29voto

John Richardson Puntos 1197

El procedimiento que está utilizando dará lugar a estimaciones de rendimiento con un sesgo optimista, ya que utiliza los datos del conjunto de prueba utilizados en los pasos 2 y 3 para decidir qué características se utilizan en el paso 1. La repetición del ejercicio reduce la varianza de la estimación del rendimiento, no el sesgo, por lo que el sesgo no se compensará. Para obtener una estimación de rendimiento insesgada, los datos de prueba no deben utilizarse en modo alguno para tomar decisiones sobre el modelo, incluida la selección de características.

Un enfoque mejor es utilizar la validación cruzada anidada, de forma que la validación cruzada externa proporcione una estimación del rendimiento obtenible utilizando un método de construcción del modelo (incluida la selección de características) y la validación cruzada interna se utilice para seleccionar las características de forma independiente en cada pliegue de la validación cruzada externa. A continuación, construya su modelo predictivo final utilizando todos los datos.

Al tener más características que casos, es muy probable que se sobreajusten los datos simplemente mediante la selección de características. Es un mito que la selección de características mejore el rendimiento predictivo, así que si eso es lo que le interesa (en lugar de identificar las características relevantes como un fin en sí mismo), probablemente sea mejor utilizar la regresión ridge y no realizar ninguna selección de características. Esto probablemente proporcionará un mejor rendimiento predictivo que la selección de características, siempre que el parámetro de la cresta se seleccione cuidadosamente (yo utilizo la minimización de la estadística PRESS de Allen, es decir, la estimación del error cuadrático medio).

Para más información, consulte Ambroise y McLachlan y mi respuesta a esta pregunta .

8voto

abhi divekar Puntos 188

Como complemento a las respuestas aquí, tengo dos enlaces que realmente me ayudaron a entender por qué este no es un buen procedimiento:

Edito: como se pedía, una breve explicación del contenido de los enlaces:

Supongamos que estoy entrenando un clasificador, y tengo un conjunto de datos de 1000 muestras, con 1 millón de características cada una. No puedo procesarlas todas, así que necesito menos características (digamos que puedo calcular 300 características). También tengo un conjunto de prueba de 100 muestras para estimar con precisión mi precisión fuera de la muestra, en el mundo real.

Si filtro mi millón de características hasta 300, seleccionando aquellas características con una mayor correlación con los objetivos de todo mi conjunto de datos, estoy cometiendo un error (porque estoy introduciendo un sobreajuste que no puede ser detectado posteriormente por la Validación Cruzada). Mi conjunto retenido mostrará esto escupiendo un mal valor de precisión.

Según 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 (filtrando características, etc.) basándome en este conjunto de entrenamiento y su puntuación CV asociada. Si utilizo K pliegues, debo ajustar desde cero cada vez que realice una división/pliegue y, a continuación, promediar los resultados.

Programáticamente, se hace lo siguiente:

  • Reserve una parte de su conjunto de datos como conjunto de reserva.
  • Divida el resto del conjunto de datos (en adelante, T1) en K pliegues.
  • En un bucle for de i=1 a K, haz lo siguiente:
    • seleccione el pliegue i como conjunto CV y el resto de muestras como conjunto de entrenamiento (en adelante, Ti).
    • Realice la ingeniería y selección de características que desee: filtre características, combínelas, etc.
    • Convierta tanto su conjunto CV (el pliegue actual, llamado CVi) como su conjunto de entrenamiento actual Ti en uno con las características adecuadas.
    • Entrene su modelo en el conjunto de entrenamiento Ti
    • Obtener la puntuación del pliegue actual, CVi. Añade esta puntuación a una lista que contenga todas las puntuaciones.
  • Ahora, tu lista tiene la puntuación de cada pliegue, así que lo promedias, obteniendo la puntuación de K pliegues.

Es muy importante que realice la ingeniería de características dentro del bucle, en el subconjunto de entrenamiento, Ti, en lugar de en el conjunto de entrenamiento completo, T1.

Esto se debe a que cuando se realiza la ingeniería de ajuste/característica para Ti, se prueba en CVi, que no se ve para ese modelo. En cambio, si realizas el ajuste/ingeniería de características en T1, cualquier CV que elijas tiene que ser un subconjunto de T1, por lo que tendrás un sesgo optimista, es decir, realizarás un ajuste excesivo, porque estás entrenando y probando en las mismas muestras de datos.

Una respuesta muy buena de StackExchange es ce que lo explica más a fondo y con un ejemplo de código. Véase también ce como anexo.

4voto

dan90266 Puntos 609

El modelo 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.

Para utilizar correctamente el bootstrap hay que programar todos pasos que utilizaron $Y$ y repetirlos de nuevo en cada remuestreo. Excepto para la selección de características, aquí hay un buen ejemplo: Interpretación de un modelo de regresión logística con múltiples predictores

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