FastICA es un algoritmo eficiente y popular para el análisis de componentes independientes inventado por Aapo Hyvärinen en la Universidad Tecnológica de Helsinki . [1] [2] Como la mayoría de los algoritmos ICA, FastICA busca una rotación ortogonal de datos previamente blanqueados , a través de un esquema de iteración de punto fijo , que maximiza una medida de no gaussianidad de los componentes rotados. La no gaussianidad sirve como proxy de la independencia estadística , que es una condición muy fuerte y requiere una cantidad infinita de datos para verificar. FastICA también se puede derivar alternativamente como una iteración de Newton aproximada.
Algoritmo
Preblanquear los datos
Deja el denotar la matriz de datos de entrada, el número de columnas correspondientes al número de muestras de señales mixtas y el número de filas correspondiente al número de señales fuente independientes. La matriz de datos de entradadebe ser preblanqueado , o centrado y blanqueado, antes de aplicarle el algoritmo FastICA.
- Centrar los datos implica degradar cada componente de los datos de entrada , es decir,
- para cada y . Después de centrar, cada fila de tiene un valor esperado de .
- Blanquear los datos requiere una transformación lineal de los datos centrados de modo que los componentes de no están correlacionados y tienen una varianza. Más precisamente, si es una matriz de datos centrada, la covarianza de es el -matriz de identidad dimensional, es decir,
- Un método común de blanqueamiento es realizar una descomposición de valores propios en la matriz de covarianza de los datos centrados. , , dónde es la matriz de vectores propios y es la matriz diagonal de valores propios. La matriz de datos blanqueados se define así por
Extracción de un solo componente
El algoritmo iterativo encuentra la dirección del vector de peso. que maximiza una medida de no gaussianidad de la proyección , con que denota una matriz de datos previamente blanqueada como se describe anteriormente. Tenga en cuenta quees un vector de columna. Para medir la no gaussianidad, FastICA se basa en una función no lineal no cuadrática , su primera derivada , y su segunda derivada . Hyvärinen afirma que las funciones
son útiles para fines generales, mientras que
puede ser muy robusto. [1] Los pasos para extraer el vector de peso para un solo componente en FastICA son los siguientes:
- Aleatorizar el vector de peso inicial
- Dejar , dónde significa promediar todos los vectores columna de la matriz
- Dejar
- Si no convergió, vuelva a 2
Extracción de múltiples componentes
El algoritmo iterativo de una sola unidad estima solo un vector de peso que extrae un solo componente. La estimación de componentes adicionales que son mutuamente "independientes" requiere repetir el algoritmo para obtener vectores de proyección linealmente independientes; observe que la noción de independencia aquí se refiere a maximizar la no gaussianidad en los componentes estimados. Hyvärinen proporciona varias formas de extraer múltiples componentes, siendo la más simple la siguiente. Aquí, es un vector de columna de unos de dimensión .
Algoritmo FastICA
- Aporte: Número de componentes deseados
- Aporte: Matriz preblanqueada, donde cada columna representa una -muestra dimensional, donde
- Producción: Matriz de descomposición donde se proyecta cada columna en componente independiente.
- Producción: Matriz de componentes independientes, con columnas que representan una muestra con dimensiones.
para p en 1 a C: Vector aleatorio de longitud N mientras cambios
producción
producción
Extracción ruidosa
Cabe destacar que Fast ICA es extremadamente robusto al ruido aditivo en la señal mixta. Considere el siguiente modelo ruidoso.
Al preblanquear , el impacto del ruido aditivo en la extracción se reduce drásticamente. La estimación de Reconstrucción ICA de , decir para dos casos de alto y bajo contenido de ruido se muestra en la figura que subraya claramente la robustez de Fast ICA para ruido aditivo.
Ver también
- Aprendizaje sin supervisión
- Aprendizaje automático
- La biblioteca IT ++ presenta una implementación FastICA en C ++
- Infomax
Referencias
- ↑ a b Hyvärinen, A .; Oja, E. (2000). "Análisis de componentes independientes: algoritmos y aplicaciones" (PDF) . Redes neuronales . 13 (4–5): 411–430. CiteSeerX 10.1.1.79.7003 . doi : 10.1016 / S0893-6080 (00) 00026-5 . PMID 10946390 .
- ^ Hyvarinen, A. (1999). "Algoritmos de punto fijo rápidos y robustos para el análisis de componentes independientes" (PDF) . Transacciones IEEE en redes neuronales . 10 (3): 626–634. CiteSeerX 10.1.1.297.8229 . doi : 10.1109 / 72.761722 . PMID 18252563 .
enlaces externos
- FastICA en Python
- Paquete FastICA para Matlab u Octave
- paquete fastICA en lenguaje de programación R
- FastICA en Java en SourceForge
- FastICA en Java en RapidMiner .
- FastICA en Matlab
- FastICA en MDP