Suponga que tengo un conjunto de datos para una tarea de clasificación estadística supervisada, por ejemplo, a través de un clasificador de Bayes. Este conjunto de datos consta de 20 características y quiero reducirlo a 2 características mediante técnicas de reducción de dimensionalidad como el Análisis de componentes principales (PCA) y / o el Análisis discriminante lineal (LDA).
Ambas técnicas están proyectando los datos en un subespacio de características más pequeño: con PCA, encontraría las direcciones (componentes) que maximizan la varianza en el conjunto de datos (sin considerar las etiquetas de clase), y con LDA tendría los componentes que maximizan el intervalo -separación de clase.
Ahora, me pregunto si, cómo y por qué estas técnicas se pueden combinar y si tiene sentido.
Por ejemplo:
- transformando el conjunto de datos a través de PCA y proyectándolo en un nuevo subespacio 2D
- transformando el conjunto de datos (ya transformado por PCA) a través de LDA para un máx. separación en clase
o
- omitiendo el paso PCA y usando los 2 componentes principales de un LDA.
o cualquier otra combinación que tenga sentido.
fuente
best practice
. PCA y LDA, como técnicas de reducción de dimensionalidad, son muy diferentes. A veces las personas hacen PCA antes de LDA, pero tiene el riesgo de tirar (con las PC descartadas) importantes dimensiones discriminatorias. La pregunta que usted hace realmente se ha hecho de alguna forma varias veces en este sitio. Busque "PCA LDA" para leer lo que la gente le dijo.Respuestas:
Resumen: PCA se puede realizar antes de LDA para regularizar el problema y evitar un ajuste excesivo.
Recuerde que las proyecciones LDA se calculan mediante la descomposición propia de , donde y son matrices de covarianza dentro y entre clases. Si hay menos de puntos de datos (donde es la dimensionalidad de su espacio, es decir, el número de características / variables), entonces será singular y, por lo tanto, no se puede invertir. En este caso, simplemente no hay forma de realizar LDA directamente, pero si uno aplica PCA primero, funcionará. @Aaron hizo este comentario en los comentarios a su respuesta, y estoy de acuerdo con eso (pero no estoy de acuerdo con su respuesta en general, como verá ahora).Σ W Σ B N N Σ WΣ−1WΣB ΣW ΣB N N ΣW
Sin embargo, esto es solo una parte del problema. La imagen más grande es que LDA tiende muy fácilmente a sobreajustar los datos. Tenga en cuenta que la matriz de covarianza dentro de la clase se invierte en los cálculos de LDA; para matrices de alta dimensión, la inversión es una operación realmente sensible que solo puede realizarse de manera confiable si la estimación de es realmente buena. Pero en altas dimensiones N ≫ 1 , es realmente difícil obtener una estimación precisa de Σ W , y en la práctica a menudo hay que tener mucho más que N puntos de datos para comenzar a esperar que la estimación sea buena. De lo contrario Σ WΣW N≫1 ΣW N ΣW será casi singular (es decir, algunos de los valores propios serán muy bajos), y esto causará un ajuste excesivo, es decir, una separación de clase casi perfecta en los datos de entrenamiento con un rendimiento casual en los datos de prueba.
Para abordar este problema, uno necesita regularizar el problema. Una forma de hacerlo es usar PCA para reducir primero la dimensionalidad. Hay otros, posiblemente mejores, por ejemplo, el método LDA regularizado (rLDA) que simplemente usa con λ pequeño en lugar de Σ W (esto se llama estimador de contracción ), pero conceptualmente es PCA enfoque más simple y, a menudo, funciona bien.(1−λ)ΣW+λI λ ΣW
Ilustración
Aquí hay una ilustración del problema de ajuste excesivo. Generé 60 muestras por clase en 3 clases a partir de la distribución gaussiana estándar (media cero, varianza unitaria) en espacios de 10, 50, 100 y 150 dimensiones, y apliqué LDA para proyectar los datos en 2D:
Observe cómo a medida que crece la dimensionalidad, las clases se vuelven cada vez mejores, mientras que en realidad no hay diferencia entre las clases.
Podemos ver cómo PCA ayuda a prevenir el sobreajuste si hacemos clases ligeramente separadas. Agregué 1 a la primera coordenada de la primera clase, 2 a la primera coordenada de la segunda clase y 3 a la primera coordenada de la tercera clase. Ahora están ligeramente separados, vea la subtrama superior izquierda:
El sobreajuste (fila superior) sigue siendo obvio. Pero si preproceso los datos con PCA, siempre manteniendo 10 dimensiones (fila inferior), el sobreajuste desaparece mientras las clases permanecen casi óptimamente separadas.
PD. Para evitar malentendidos: no estoy afirmando que PCA + LDA sea una buena estrategia de regularización (por el contrario, recomendaría usar rLDA), simplemente estoy demostrando que es una estrategia posible .
Actualizar. Un tema muy similar se ha discutido previamente en los siguientes hilos con respuestas interesantes y completas proporcionadas por @cbeleites:
Vea también esta pregunta con algunas buenas respuestas:
fuente
Si tiene un problema de dos clases, LDA lo llevará a 1 dimensión. No hay razón para hacer PCA primero.
fuente
assume we have 3 classes
. @SebastianRaschka: Entonces LDA le permitirá un máximo de 2 funciones discriminantes. El número de valores propios en LDA es min (num_groups-1, num_features).min(num_groups-1,num_features)
viene el ...