Revisé un documento basado en la solicitud que decía que aplicar PCA antes de aplicar ICA (usando el paquete fastICA). Mi pregunta es, ¿ICA (fastICA) requiere que PCA se ejecute primero?
Este artículo menciona que
... también se argumenta que la aplicación previa de PCA mejora el rendimiento de ICA al (1) descartar pequeños valores propios antes del blanqueamiento y (2) reducir la complejidad computacional al minimizar las dependencias por pares. PCA decorelaciona los datos de entrada; las dependencias de orden superior restantes están separadas por ICA.
También otros documentos están aplicando PCA antes de ICA, por ejemplo, este .
¿Hay otros pros y contras para ejecutar PCA antes de ICA? Proporcione la teoría con referencias.
pca
dimensionality-reduction
pattern-recognition
ica
Samo Jerom
fuente
fuente
Respuestas:
El enfoque fastICA requiere un paso previo al blanqueamiento: los datos se transforman primero utilizando PCA, lo que conduce a una matriz de covarianza diagonal, y luego cada dimensión se normaliza de modo que la matriz de covarianza sea igual a la matriz de identidad (blanqueamiento).
Hay infinitas transformaciones de los datos que resultan en una matriz de covarianza de identidad, y si sus fuentes fueran gaussianas, se detendría allí (para distribuciones multivariadas gaussianas, la media y la covarianza son estadísticas suficientes), en presencia de fuentes no gaussianas, puede minimizar algunas medida de dependencia de los datos blanqueados, por lo tanto, busca una rotación de los datos blanqueados que maximice la independencia. FastICA logra esto utilizando medidas teóricas de información y un esquema de iteración de punto fijo.
Recomendaría el trabajo de Hyvärinen para obtener una comprensión más profunda del problema:
Tenga en cuenta que hacer PCA y reducir la dimensión no son exactamente lo mismo: cuando tiene más observaciones (por señal) que señales, puede realizar un PCA que retenga el 100% de la varianza explicada, y luego continuar con el blanqueamiento y la iteración de punto fijo para obtener una estimación de los componentes independientes. Si debe realizar una reducción de dimensión o no, depende en gran medida del contexto y se basa en sus supuestos de modelado y distribución de datos.
fuente
La aplicación de PCA a sus datos tiene el único efecto de rotar los ejes de coordenadas originales. Es una transformación lineal, exactamente como, por ejemplo, la transformación de Fourier. Por lo tanto, como tal, realmente no puede hacer nada a sus datos.
Sin embargo, los datos representados en el nuevo espacio PCA tienen algunas propiedades interesantes. Después de la rotación de coordenadas con PCA, puede descartar algunas dimensiones en función de criterios establecidos, como el porcentaje de varianza total explicado por los nuevos ejes. Dependiendo de su señal, puede lograr una cantidad considerable de reducción dimensional mediante este método y esto definitivamente aumentaría el rendimiento del siguiente ICA. Hacer una ICA sin descartar ninguno de los componentes de PCA no tendrá ningún impacto en el resultado de la siguiente ICA.
Además, uno también puede blanquear fácilmente los datos en el espacio PCA debido a la ortogonalidad de los ejes de coordenadas. El blanqueamiento tiene el efecto de igualar las variaciones en todas las dimensiones. Yo diría que esto es necesario para que un ICA funcione correctamente. De lo contrario, solo unos pocos componentes de PCA con mayores variaciones dominarían los resultados de ICA.
Realmente no veo ningún inconveniente para el preprocesamiento basado en PCA antes de un ICA.
Giancarlo cita ya la mejor referencia para ICA ...
fuente
La derivación del algoritmo fastICA solo requiere blanqueamiento para un solo paso. Primero, elige la dirección del paso (como un descenso de gradiente) y esto no requiere datos blanqueados. Luego, tenemos que elegir el tamaño del paso, que depende de la inversa del Hessian. Si los datos se blanquean, entonces esta arpillera es diagonal e invertible.
Entonces, ¿se requiere? Si acaba de fijar el tamaño del paso a una constante (por lo tanto, no requiere blanqueamiento), tendría un descenso de gradiente estándar. El descenso de gradiente con un pequeño paso fijo normalmente convergerá, pero posiblemente sea mucho más lento que el método original. Por otro lado, si tiene una matriz de datos grande, el blanqueamiento podría ser bastante costoso. Es posible que esté mejor incluso con la convergencia más lenta que obtiene sin blanquear.
Me sorprendió no ver mención de esto en ninguna literatura. Un artículo analiza el problema: nuevos algoritmos Fast-ICA para la separación de fuentes ciegas sin preblanqueamiento por Jimin Ye y Ting Huang.
Sugieren una opción algo más barata para blanquear. Desearía que hubieran incluido la comparación obvia de simplemente ejecutar ICA sin blanquear como línea de base, pero no lo hicieron. Como otro punto de datos, he intentado ejecutar fastICA sin blanquear los problemas de los juguetes y funcionó bien.
Actualización: otra buena referencia para el blanqueamiento está aquí: análisis robusto de componentes independientes, Zaroso y Comon . Proporcionan algoritmos que no requieren blanqueamiento.
fuente