Jump to content

FastICA

From Wikipedia, the free encyclopedia

FastICA is an efficient and popular algorithm for independent component analysis invented by Aapo Hyvärinen at Helsinki University of Technology.[1][2] 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.

Algorithm

[edit]

Prewhitening the data

[edit]

Let the 𝐗:=(xij)∈ℝN×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 𝐗 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 𝐗, that is,
xij←xij−1M∑j′xij′
for each i=1,…,N and j=1,…,M. After centering, each row of 𝐗 has an expected value of 0.
  • Whitening the data requires a linear transformation 𝐋:ℝN×M→ℝN×M of the centered data so that the components of 𝐋(𝐗) are uncorrelated and have variance one. More precisely, if 𝐗 is a centered data matrix, the covariance of 𝐋𝐱:=𝐋(𝐗) is the (N×N)-dimensional identity matrix, that is,
E{𝐋𝐱𝐋𝐱T}=𝐈N
A common method for whitening is by performing an eigenvalue decomposition on the covariance matrix of the centered data 𝐗, E{𝐗𝐗T}=𝐄𝐃𝐄T, where 𝐄 is the matrix of eigenvectors and 𝐃 is the diagonal matrix of eigenvalues. The whitened data matrix is defined thus by
𝐗←𝐃−1/2𝐄T𝐗.

Single component extraction

[edit]

The iterative algorithm finds the direction for the weight vector 𝐰∈ℝN that maximizes a measure of non-Gaussianity of the projection 𝐰T𝐗, with 𝐗∈ℝN×M denoting a prewhitened data matrix as described above. Note that 𝐰 is a column vector. To measure non-Gaussianity, FastICA relies on a nonquadratic nonlinear function f(u), its first derivative g(u), and its second derivative g′(u). Hyvärinen states that the functions

f(u)=log⁡cosh⁡(u),g(u)=tanh⁡(u),andg′(u)=1−tanh2(u),

are useful for general purposes, while

f(u)=−e−u2/2,g(u)=ue−u2/2,andg′(u)=(1−u2)e−u2/2

may be highly robust.[1] The steps for extracting the weight vector 𝐰 for single component in FastICA are the following:

  1. Randomize the initial weight vector 𝐰
  2. Let 𝐰+←E{𝐗g(𝐰T𝐗)T}−E{g′(𝐰T𝐗)}𝐰, where E{...} means averaging over all column-vectors of matrix 𝐗
  3. Let 𝐰←𝐰+/‖𝐰+‖
  4. If not converged, go back to 2

Multiple component extraction

[edit]

The single unit iterative algorithm estimates only one weight vector which extracts a single component. Estimating additional components that are mutually "independent" requires repeating the algorithm to obtain linearly independent projection vectors - note that the notion of independence here refers to maximizing non-Gaussianity in the estimated components. Hyvärinen provides several ways of extracting multiple components with the simplest being the following. Here, 𝟏𝐌 is a column vector of 1's of dimension M.

Algorithm FastICA

Input: C Number of desired components
Input: 𝐗∈ℝN×M Prewhitened matrix, where each column represents an N-dimensional sample, where C<=N
Output: 𝐖∈ℝN×C Un-mixing matrix where each column projects 𝐗 onto independent component.
Output: 𝐒∈ℝC×M Independent components matrix, with M columns representing a sample with C dimensions.
 for p in 1 to C:
    𝐰𝐩← Random vector of length N
    while 𝐰𝐩 changes
        𝐰𝐩←1M𝐗g(𝐰𝐩T𝐗)T−1Mg′(𝐰𝐩T𝐗)𝟏𝐌𝐰𝐩
        𝐰𝐩←𝐰𝐩−∑j=1p−1(𝐰𝐩T𝐰𝐣)𝐰𝐣
        𝐰𝐩←𝐰𝐩‖𝐰𝐩‖
output 𝐖←[𝐰𝟏,…,𝐰𝐂]
output 𝐒←𝐖𝐓𝐗

See also

[edit]

References

[edit]
  1. 1 2 Hyvärinen, A.; Oja, E. (2000). "Independent component analysis: Algorithms and applications" (PDF). Neural Networks. 13 (4–5): 411–430. doi:10.1016/S0893-6080(00)00026-5. PMID 10946390.
  2. ↑ Hyvarinen, A. (1999). "Fast and robust fixed-point algorithms for independent component analysis" (PDF). IEEE Transactions on Neural Networks. 10 (3): 626–634. doi:10.1109/72.761722. PMID 18252563.
[edit]