FastICA

Uses your system voice; voice and rate in settings.

Snapshot

≈ 4 min read

Names in other languages

No names in other languages are held for this entry yet.

Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.

FastICA is an efficient and popular algorithm for independent component analysis invented by Aapo Hyvärinen at Helsinki University of Technology. Like most ICA algorithms, FastICA seeks an orthogonal rotation of prewhitened data, through a fixed-point iteration scheme, that maximizes a measure of non-Gaussianity of the rotated components. Non-gaussianity serves as a proxy for statistical independence, which is a very strong condition and requires infinite data to verify. FastICA can also be alternatively derived as an approximative Newton iteration.

FastICA is an efficient and popular algorithm for independent component analysis invented by Aapo Hyvärinen at Helsinki University of Technology. Like most ICA algorithms, FastICA seeks an orthogonal rotation of prewhitened data, through a fixed-point iteration scheme, that maximizes a measure of non-Gaussianity of the rotated components. Non-gaussianity serves as a proxy for statistical independence, which is a very strong condition and requires infinite data to verify. FastICA can also be alternatively derived as an approximative Newton iteration. Let the \mathbf{X} := (x_{ij}) \in \mathbb{R}^{N \times M} denote the input data matrix, M the number of columns corresponding with the number of samples of mixed signals and N the number of rows corresponding with the number of independent source signals. The input data matrix \mathbf{X} must be prewhitened, or centered and whitened, before applying the FastICA algorithm to it. Centering the data entails demeaning each component of the input data \mathbf{X} , that is, x_{ij} \leftarrow x_{ij} - \frac{1}{M} \sum_{j^{\prime}} x_{ij^{\prime}} for each i =1,\ldots,N and j = 1, \ldots, M . After centering, each row of \mathbf{X} has an expected value of 0 . Whitening the data requires a linear transformation \mathbf{L}: \mathbb{R}^{N \times M} \to \mathbb{R}^{N \times M} of the centered data so that the components of \mathbf{L}(\mathbf{X}) are uncorrelated and have variance one. More precisely, if \mathbf{X} is a centered data matrix, the covariance of \mathbf{L}_{\mathbf{x}} := \mathbf{L}(\mathbf{X}) is the (N \times N) -dimensional identity matrix, that is, \mathrm{E}\left \{ \mathbf{L}_{\mathbf{x}} \mathbf{L}_{\mathbf{x}}^{T} \right \} = \mathbf{I}_N A common method for whitening is by performing an eigenvalue decomposition on the covariance matrix of the centered data \mathbf{X} , E\left \{ \mathbf{X} \mathbf{X}^{T} \right \} = \mathbf{E}\mathbf{D}\mathbf{E}^T , where \mathbf{E} is the matrix of eigenvectors and \mathbf{D} is the diagonal matrix of eigenvalues. The whitened data matrix is defined thus by \mathbf{X} \leftarrow \mathbf{D}^{-1/2}\mathbf{E}^T\mathbf{X}. f(u) = \log \cosh (u), \quad g(u) = \tanh (u), \quad \text{and} \quad {g}'(u) = 1-\tanh^2(u), are useful for general purposes, while f(u) = -e^{-u^2/2}, \quad g(u) = u e^{-u^2/2}, \quad \text{and} \quad {g}'(u) = (1-u^2) e^{-u^2/2} may be highly robust. The steps for extracting the weight vector \mathbf{w} for single component in FastICA are the following: Randomize the initial weight vector \mathbf{w} Let \mathbf{w}^+ \leftarrow E\left\{\mathbf{X} g(\mathbf{w}^T \mathbf{X})^T\right\} - E\left\{g'(\mathbf{w}^T \mathbf{X})\right\}\mathbf{w} , where E\left\{...\right\} means averaging over all column-vectors of matrix \mathbf{X} Let \mathbf{w} \leftarrow \mathbf{w}^+ / \|\mathbf{w}^+\| If not converged, go back to 2 Input: \mathbf{X} \in \mathbb{R}^{N \times M} Prewhitened matrix, where each column represents an N -dimensional sample, where C Output: \mathbf{W} \in \mathbb{R}^{N \times C} Un-mixing matrix where each column projects \mathbf{X} onto independent component. Output: \mathbf{S} \in \mathbb{R}^{C \times M} Independent components matrix, with M columns representing a sample with C dimensions. for p in 1 to C: \mathbf{w_p} \leftarrow Random vector of length N while \mathbf{w_p} changes \mathbf{w_p} \leftarrow \frac{1}{M}\mathbf{X} g(\mathbf{w_p}^T \mathbf{X})^T - \frac{1}{M}g'(\mathbf{w_p}^T\mathbf{X})\mathbf{1_{M}} \mathbf{w_p} \mathbf{w_p} \leftarrow \mathbf{w_p} - \sum_{j = 1}^{p-1} (\mathbf{w_p}^T\mathbf{w_j})\mathbf{w_j} \mathbf{w_p} \leftarrow \frac{\mathbf{w_p}}{\|\mathbf{w_p}\|} output \mathbf{W} \leftarrow \begin{bmatrix} \mathbf{w_1}, \dots, \mathbf{w_C} \end{bmatrix} output \mathbf{S} \leftarrow \mathbf{W^T}\mathbf{X} ==References== ==External links== FastICA in Python FastICA package for Matlab or Octave fastICA package in R programming language FastICA in Java on SourceForge FastICA in Java in RapidMiner. FastICA in Matlab FastICA in MDP FastICA in Julia

Text derived from https://en.wikipedia.org/w/index.php?oldid=1375083643 under CC BY-SA 4.0; modifications have been made.