PCA y la división tren / prueba


35

Tengo un conjunto de datos para el que tengo múltiples conjuntos de etiquetas binarias. Para cada conjunto de etiquetas, entreno a un clasificador, evaluándolo por validación cruzada. Quiero reducir la dimensionalidad utilizando el análisis de componentes principales (PCA). Mi pregunta es:

¿Es posible hacer el PCA una vez para todo el conjunto de datos y luego usar el nuevo conjunto de datos de menor dimensionalidad para la validación cruzada como se describió anteriormente? ¿O necesito hacer un PCA separado para cada conjunto de entrenamiento (lo que significaría hacer un PCA separado para cada clasificador y para cada pliegue de validación cruzada)?

Por un lado, el PCA no hace uso de las etiquetas. Por otro lado, utiliza los datos de prueba para realizar la transformación, por lo que me temo que podría sesgar los resultados.

Debo mencionar que, además de ahorrarme algo de trabajo, hacer el PCA una vez en todo el conjunto de datos me permitiría visualizar el conjunto de datos para todos los conjuntos de etiquetas a la vez. Si tengo un PCA diferente para cada conjunto de etiquetas, necesitaría visualizar cada conjunto de etiquetas por separado.


Para futura referencia. Consulte esta pregunta sobre cómo hacer la validación cruzada con PCA en R con el caretpaquete: PCA y validación cruzada k-fold en Caret .
ameba dice Reinstate Monica


Respuestas:


34

Para medir el error de generalización, es necesario hacer esto último: un PCA separada para cada conjunto de entrenamiento (lo que significaría hacer un PCA separada para cada clasificador y para cada CV veces).

A continuación, aplica la misma transformación al equipo de prueba, es decir que usted no hace un PCA separada en la prueba! Se resta la media (y si es necesario se divide por la desviación estándar) del conjunto de entrenamiento, como se explica aquí: Zero-centrado el conjunto de pruebas después de PCA en el conjunto de entrenamiento . Entonces usted proyecta los datos en los ordenadores del conjunto de entrenamiento.


  • Tendrá que definir un criterio automático para el número de PC para su uso.
    Ya que es sólo un primer paso de reducción de datos antes de la clasificación "real", el uso de demasiadas PC es probable que no lastimar al rendimiento. Si usted tiene una expectativa de cómo muchas PC sería bueno de la experiencia, se puede utilizar tal vez sólo eso.

  • También puede probar si después rehacer la PCA para cada modelo sustituto era necesario (repetición de los análisis con el modelo único PCA). Creo que el resultado de esta prueba es digno de mención.

  • Una vez medido el sesgo de no repetir la PCA, y se encontró que con mis datos de clasificación espectroscópicas, he detectado sólo la mitad de la tasa de error de generalización cuando no rehacer la PCA para cada modelo sustituto.

Dicho esto, puede crear un modelo PCA adicional del conjunto de datos completo con fines descriptivos (por ejemplo, visualización). Solo asegúrese de mantener los dos enfoques separados uno del otro.


Todavía me resulta difícil tener una idea de cómo un PCA inicial en todo el conjunto de datos sesgaría los resultados sin ver las etiquetas de clase.

Pero sí ve los datos. Y si la varianza entre clases es grande en comparación con la varianza dentro de clase, la varianza entre clases influirá en la proyección de PCA. Normalmente el paso de PCA se hace porque es necesario para estabilizar la clasificación. Es decir, en una situación en la que los casos adicionales hacen influir en el modelo.

Si la varianza entre clases es pequeña, este sesgo no será mucho, pero en ese caso tampoco PCA ayudaría a la clasificación: la proyección de PCA no puede ayudar a enfatizar la separación entre las clases.


Gracias, esto es exactamente lo que pensé, así que es bueno escucharlo de una fuente independiente. Todavía me resulta difícil tener una idea de cómo un PCA inicial en todo el conjunto de datos sesgaría los resultados sin ver las etiquetas de clase.
Bitwise

@Bitwise: mira mi edición
cbeleites apoya a Monica el

Hola @cbeleites, quiero hacer de este hilo un hilo "canónico" para las preguntas sobre PCA y la división de entrenamiento / prueba (¡hay muchas!) Y marcarlas como duplicadas. Me tomé la libertad de agregar una oración a su respuesta que podría aclarar un malentendido que a menudo surge en las preguntas duplicadas. Espero que estés contento con mi edición, ¡pero por favor verifica! +1, por cierto.
ameba dice Reinstate Monica

@amoeba, muchas gracias. Sí, ese es un punto importante que agregó. Muchas gracias por el trabajo que dedicaste a limpiar la colección de preguntas.
cbeleites apoya a Monica el

1
@FelipeAlmeida: sí
cbeleites apoya a Monica el

2

La respuesta a esta pregunta depende de su diseño experimental. La PCA se puede realizar en todo el conjunto de datos siempre que no necesite construir su modelo antes de conocer los datos que está tratando de predecir. Si tiene un conjunto de datos en el que tiene un montón de muestras, algunas de las cuales son conocidas y otras son desconocidas y desea predecir las incógnitas, incluidas las incógnitas en el PCA le brindarán una visión más rica de la diversidad de datos y pueden ayudar a mejorar el rendimiento del modelo. Dado que la PCA no está supervisada, no está en "pico" porque puede hacer lo mismo con las muestras desconocidas que con las conocidas.

Si, por otro lado, tiene un conjunto de datos donde tiene que construir el modelo ahora y en algún momento en el futuro obtendrá nuevas muestras que debe predecir usando ese modelo preconstruido, debe hacer PCA por separado en cada pliegue para estar seguro de que se generalizará. Dado que en este caso no sabremos cómo se verían las nuevas características y no podemos reconstruir el modelo para tener en cuenta las nuevas características, hacer PCA en los datos de prueba sería "máximo". En este caso, tanto las características como los resultados para las muestras desconocidas no están disponibles cuando el modelo se usaría en la práctica, por lo que no deberían estar disponibles cuando se entrena el modelo.


0

Haga esto último, PCA en entrenamiento establecido cada vez

En PCA, aprendemos la matriz reducida: U que nos ayuda a obtener la proyecciónZ_train = U x X_train

En el momento de la prueba, usamos la misma U aprendida de la fase de entrenamiento y luego calculamos la proyecciónZ_test = U x X_test

Entonces, esencialmente estamos proyectando el conjunto de prueba en el espacio de características reducido obtenido durante el entrenamiento.

La suposición subyacente es que la prueba y el conjunto de trenes deben provenir de la misma distribución, lo que explica el método anterior.

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.