50 votos

El PCA y la división tren/prueba

Tengo un conjunto de datos para el que tengo múltiples conjuntos de etiquetas binarias. Para cada conjunto de etiquetas, entreno un clasificador, evaluándolo mediante 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 utilizar el nuevo conjunto de datos de menor dimensionalidad para la validación cruzada como se ha descrito anteriormente? ¿O tengo que hacer una PCA separado para cada conjunto de entrenamiento (lo que significaría hacer un PCA distinto para cada clasificador y para cada pliegue de validación cruzada)?

Por un lado, el PCA no hace ningún uso de las etiquetas. Por otro lado, sí utiliza los datos de prueba para hacer 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, tendría que visualizar cada conjunto de etiquetas por separado.

46voto

cbeleites Puntos 12461

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

A continuación, se aplica la misma transformación al conjunto de pruebas: es decir, se hace no ¡hacer un PCA separado en el conjunto de pruebas! Se resta la media (y si es necesario se divide por la desviación estándar) del conjunto de entrenamiento, como se explica aquí: Centrado en cero del conjunto de pruebas tras el PCA en el conjunto de entrenamiento . A continuación, se proyectan los datos sobre los PC del conjunto de entrenamiento.


  • Tendrá que definir un criterio automático para el número de PCs a utilizar.
    Como es sólo un primer paso de reducción de datos antes de la clasificación "real", el uso de unos pocos PCs de más probablemente no perjudicará el rendimiento. Si tienes una expectativa de cuántos PCs serían buenos por experiencia, puedes usarlos.

  • También puede comprobar después si era necesario rehacer el ACP para cada modelo sustitutivo (repitiendo el análisis con un solo modelo de ACP). Creo que vale la pena informar del resultado de esta prueba.

  • Una vez medí el sesgo de no repetir el PCA, y encontré que con mis datos de clasificación espectroscópica, detecté sólo la mitad de la tasa de error de generalización cuando no rehacía el PCA para cada modelo sustituto.

  • También es relevante: https://stats.stackexchange.com/a/240063/4598

Dicho esto, se puede construir un adicional Modelo PCA de todo el conjunto de datos con fines descriptivos (por ejemplo, de visualización). Sólo asegúrese de mantener los dos enfoques separados el uno del otro.


Me sigue resultando difícil hacerme una idea de cómo un PCA inicial en todo el conjunto de datos podría sesgar los resultados sin ver las etiquetas de las clases.

Pero sí ve los datos. Y si la varianza entre clases es grande comparada con la varianza dentro de la clase, la varianza entre clases influirá en la proyección del PCA. Por lo general, el paso del PCA se realiza porque se necesita estabilizar la clasificación. Es decir, en una situación en la que los casos adicionales hacer influyen en el modelo.

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

6voto

Kevin J. Rice Puntos 101

La respuesta a esta pregunta depende de su diseño experimental. El ACP puede realizarse en todo el conjunto de datos siempre que no sea necesario construir el modelo antes de conocer los datos que se intentan predecir. Si tiene un conjunto de datos en el que tiene un montón de muestras, algunas de las cuales son conocidas y otras desconocidas, y quiere predecir las desconocidas, incluir las desconocidas en el PCA le dará una visión más rica de la diversidad de datos y puede ayudar a mejorar el rendimiento del modelo. Dado que el PCA no está supervisado, no tiene "picos" porque se puede hacer lo mismo con las muestras desconocidas que con las conocidas.

Si, por el contrario, tiene un conjunto de datos en el que tiene que construir el modelo ahora y en algún momento en el futuro obtendrá nuevas muestras que tiene que predecir utilizando ese modelo pre-construido, debe hacer PCA por separado en cada pliegue para estar seguro de que se generalizará. Dado que en este caso no sabremos cómo podrían ser las nuevas características y no podemos reconstruir el modelo para tener en cuenta las nuevas características, hacer el PCA en los datos de prueba sería "hacer un pico". En este caso, tanto las características como los resultados de las muestras desconocidas no están disponibles cuando el modelo se utilizaría en la práctica, por lo que no deberían estar disponibles al entrenar el modelo.

0voto

Haz lo segundo, PCA en el conjunto de entrenamiento cada vez

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

En el momento de la prueba, utilizamos el mismo U aprendidas en la fase de entrenamiento y luego calcular la proyección Z_test = U x X_test

Así que, esencialmente somos proyectar el conjunto de pruebas en el espacio de características reducido obtenidos durante la formación.

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

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