function | fastica
fastica - Fast Independent Component Analysis
FastICA for Matlab 7.x and 6.x
Version 2.5, October 19 2005
Copyright (c) Hugo G�vert, Jarmo Hurri, Jaakko S�rel�, and Aapo Hyv�rinen.
fastica(mixedsig) estimates the independent components from given
multidimensional signals. Each row of matrix mixedsig is one
observed signal. fastica uses Hyvarinen's fixed-point algorithm,
see http://www.cis.hut.fi/projects/ica/fastica/. Output from the
function depends on the number output arguments:
[icasig] = fastica (mixedsig); the rows of icasig contain the
estimated independent components.
[icasig, A, W] = fastica (mixedsig); outputs the estimated separating
matrix W and the corresponding mixing matrix A.
[A, W] = fastica (mixedsig); gives only the estimated mixing matrix
A and the separating matrix W.
Some optional arguments induce other output formats, see below.
A graphical user interface for fastica can be launched by the
command FASTICAG
fastica can be called with numerous optional arguments. Optional
arguments are given in parameter pairs, so that first argument is
the name of the parameter and the next argument is the value for
that parameter. Optional parameter pairs can be given in any order.
OPTIONAL PARAMETERS:
Parameter name Values and description
======================================================================
--Basic parameters in fixed-point algorithm:
'approach' (string) The decorrelation approach used. Can be
symmetric ('symm'), i.e. estimate all the
independent component in parallel, or
deflation ('defl'), i.e. estimate independent
component one-by-one like in projection pursuit.
Default is 'defl'.
'numOfIC' (integer) Number of independent components to
be estimated. Default equals the dimension of data.
======================================================================
--Choosing the nonlinearity:
'g' (string) Chooses the nonlinearity g used in
the fixed-point algorithm. Possible values:
Value of 'g': Nonlinearity used:
'pow3' (default) g(u)=u^3
'tanh' g(u)=tanh(a1*u)
'gauss g(u)=u*exp(-a2*u^2/2)
'skew' g(u)=u^2
'finetune' (string) Chooses the nonlinearity g used when
fine-tuning. In addition to same values
as for 'g', the possible value 'finetune' is:
'off' fine-tuning is disabled.
'a1' (number) Parameter a1 used when g='tanh'.
Default is 1.
'a2' (number) Parameter a2 used when g='gaus'.
Default is 1.
'mu' (number) Step size. Default is 1.
If the value of mu is other than 1, then the
program will use the stabilized version of the
algorithm (see also parameter 'stabilization').
'stabilization' (string) Values 'on' or 'off'. Default 'off'.
This parameter controls wether the program uses
the stabilized version of the algorithm or
not. If the stabilization is on, then the value
of mu can momentarily be halved if the program
senses that the algorithm is stuck between two
points (this is called a stroke). Also if there
is no convergence before half of the maximum
number of iterations has been reached then mu
will be halved for the rest of the rounds.
======================================================================
--Controlling convergence:
'epsilon' (number) Stopping criterion. Default is 0.0001.
'maxNumIterations' (integer) Maximum number of iterations.
Default is 1000.
'maxFinetune' (integer) Maximum number of iterations in
fine-tuning. Default 100.
'sampleSize' (number) [0 - 1] Percentage of samples used in
one iteration. Samples are chosen in random.
Default is 1 (all samples).
'initGuess' (matrix) Initial guess for A. Default is random.
You can now do a "one more" like this:
[ica, A, W] = fastica(mix, 'numOfIC',3);
[ica2, A2, W2] = fastica(mix, 'initGuess', A, 'numOfIC', 4);
======================================================================
--Graphics and text output:
'verbose' (string) Either 'on' or 'off'. Default is
'on': report progress of algorithm in text format.
'displayMode' (string) Plot running estimates of independent
components: 'signals', 'basis', 'filters' or
'off'. Default is 'off'.
'displayInterval' Number of iterations between plots.
Default is 1 (plot after every iteration).
======================================================================
--Controlling reduction of dimension and whitening:
Reduction of dimension is controlled by 'firstEig' and 'lastEig', or
alternatively by 'interactivePCA'.
'firstEig' (integer) This and 'lastEig' specify the range for
eigenvalues that are retained, 'firstEig' is
the index of largest eigenvalue to be
retained. Default is 1.
'lastEig' (integer) This is the index of the last (smallest)
eigenvalue to be retained. Default equals the
dimension of data.
'interactivePCA' (string) Either 'on' or 'off'. When set 'on', the
eigenvalues are shown to the user and the
range can be specified interactively. Default
is 'off'. Can also be set to 'gui'. Then the user
can use the same GUI that's in FASTICAG.
If you already know the eigenvalue decomposition of the covariance
matrix, you can avoid computing it again by giving it with the
following options:
'pcaE' (matrix) Eigenvectors
'pcaD' (matrix) Eigenvalues
If you already know the whitened data, you can give it directly to
the algorithm using the following options:
'whiteSig' (matrix) Whitened signal
'whiteMat' (matrix) Whitening matrix
'dewhiteMat' (matrix) dewhitening matrix
If values for all the 'whiteSig', 'whiteSig' and 'dewhiteMat' are
supplied, they will be used in computing the ICA. PCA and whitening
are not performed. Though 'mixedsig' is not used in the main
algorithm it still must be entered - some values are still
calculated from it.
Performing preprocessing only is possible by the option:
'only' (string) Compute only PCA i.e. reduction of
dimension ('pca') or only PCA plus whitening
('white'). Default is 'all': do ICA estimation
as well. This option changes the output
format accordingly. For example:
[whitesig, WM, DWM] = fastica(mixedsig,
'only', 'white')
returns the whitened signals, the whitening matrix
(WM) and the dewhitening matrix (DWM). (See also
WHITENV.) In FastICA the whitening matrix performs
whitening and the reduction of dimension. Dewhitening
matrix is the pseudoinverse of whitening matrix.
[E, D] = fastica(mixedsig, 'only', 'pca')
returns the eigenvector (E) and diagonal
eigenvalue (D) matrices containing the
selected subspaces.
======================================================================
EXAMPLES
[icasig] = fastica (mixedsig, 'approach', 'symm', 'g', 'tanh');
Do ICA with tanh nonlinearity and in parallel (like
maximum likelihood estimation for supergaussian data).
[icasig] = fastica (mixedsig, 'lastEig', 10, 'numOfIC', 3);
Reduce dimension to 10, and estimate only 3
independent components.
[icasig] = fastica (mixedsig, 'verbose', 'off', 'displayMode', 'off');
Don't output convergence reports and don't plot
independent components.
A graphical user interface for fastica can be launched by the
command FASTICAG
See also fasticag