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
Independence is a fundamental notion in probability theory, as in statistics and the theory of stochastic processes. Two events are independent, statistically independent, or stochastically independent if, informally speaking, the occurrence of ...
, which is a very strong condition and requires infinite data to verify. FastICA can also be alternatively derived as an approximative Newton iteration.
Algorithm
''Prewhitening'' the data
Let the
denote the input data matrix,
the number of columns corresponding with the number of samples of mixed signals and
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,
:for each
and
. After centering, each row of
has an
expected value
In probability theory, the expected value (also called expectation, expectancy, mathematical expectation, mean, average, or first moment) is a generalization of the weighted average. Informally, the expected value is the arithmetic mean of a l ...
of
.
*''Whitening'' the data requires a
linear transformation 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
-dimensional identity matrix, that is,
: A common method for whitening is by performing an
eigenvalue decomposition on the
covariance matrix
In probability theory and statistics, a covariance matrix (also known as auto-covariance matrix, dispersion matrix, variance matrix, or variance–covariance matrix) is a square matrix giving the covariance between each pair of elements of ...
of the centered data
,
, where
is the matrix of eigenvectors and
is the diagonal matrix of eigenvalues. The whitened data matrix is defined thus by
Single component extraction
The iterative algorithm finds the direction for the weight vector
that maximizes a measure of non-Gaussianity of the projection
,
with
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 , its first derivative
, and its second derivative
. Hyvärinen states that the functions
are useful for general purposes, while
may be highly robust.
The steps for extracting the weight vector
for single component in FastICA are the following:
# Randomize the initial weight vector
# Let
, where
means averaging over all column-vectors of matrix
# Let
# If not converged, go back to 2
Multiple component extraction
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
.
Algorithm FastICA
:Input:
Number of desired components
:Input:
Prewhitened matrix, where each column represents an
-dimensional sample, where
:Output:
Un-mixing matrix where each column projects
onto independent component.
:Output:
Independent components matrix, with
columns representing a sample with
dimensions.
for p in 1 to C:
''
Random vector of length N''
while
changes
output
output
See also
*
Unsupervised learning
*
Machine learning
* The
IT++
IT++ is a C++ library of classes and functions for linear algebra, numerical optimization, signal processing, communications, and statistics. It is being developed by researchers in these areas and is widely used by researchers, both in the commu ...
library features a FastICA implementation in
C++
*
Infomax
References
{{Reflist
External links
FastICA in PythonFastICA package for Matlab or Octavein
R programming language
FastICA in Javaon
SourceForge
FastICA in Javain
RapidMiner.
FastICA in Matlab Factor analysis
Computational statistics
Machine learning algorithms