RobustICA algorithm for independent component analysis
RobustICA is based on the normalized kurtosis contrast function, which is optimized by a
computationally efficient iterative technique. This technique computes algebraically
the step size (adaption coefficient) globally optimizing the contrast in the search direction
at each iteration. Any independent component with non-zero kurtosis can be extracted in this
manner.
The present implementation performs the deflationary separation of statistically independent
sources under the instantaneous linear mixture model. Full separation is achieved if at most
one source has zero kurtosis.
Some advantages of RobustICA are:
- Real- and complex-valued signals are treated by exactly the same algorithm. Both type of
source signals can be present simultaneously in a given mixture. Complex sources need not be
circular. The mixing matrix coefficients may be real or complex, regardless of the source type.
- Prewhitening is not required, so that the performance limitations it imposes can be avoided.
In particular, the absence of prewhitening improves asymptotic performance. In that case,
sequential extraction (deflation) can be performed via linear regression.
- The algorithm can target sub-Gaussian or super-Gaussian sources in the order defined by a
by a kurtosis-sign vector provided by the user. Full separation, as well as the consequent
increase in complexity and estimation error, can be spared if the Gaussianity character of
the source(s) of interest is known in advance.
- The optimal step-size technique provides some robustness to the presence of saddle points and
spurious local extrema in the contrast function, which tend to appear when processing short
data sizes.
- The method shows a very high convergence speed measured in terms of source extraction quality
versus number of operations. In the real-valued two-signal case, the algorithm theoretically
converges in a single iteration, even without prewhitening.
More details about the RobustICA algorithm and its comparative performance analysis can be found
in references [1]-[3] below. A similar optimization technique is used in the OS-CMA.
References
[1] V. Zarzoso and P. Comon, "Robust Independent
Component Analysis by Iterative Maximization of the Kurtosis Contrast
with Algebraic Optimal Step Size", IEEE Transactions on Neural
Networks, Vol. 21, No. 2, February 2010, pp. 248-261. (721KB)
[2] V. Zarzoso and P. Comon, "Comparative Speed Analysis of FastICA",
in: Proceedings ICA-2007, 7th International Conference on Independent Component Analysis
and Signal Separation, London, UK, September 9-12, 2007,
pp. 293-300. (336KB)
[3] V. Zarzoso, P. Comon and M. Kallel, "How Fast is FastICA?",
in: Proceedings EUSIPCO-2006, XIV European Signal Processing Conference,
Florence, Italy, September 4-8, 2006. (172KB)
Download the RobustICA package
(Release 3, November 21, 2014; Matlab version; 27KB
).
What's new in Release 3:
- If required, the user can force the separating matrix to be real-valued. This is useful, e.g.,
when the mixing matrix is known to take real values but the separation is carried out in a complex domain
(e.g., after Fourier transform).
- The calling syntax has been simplified by using a cell-array
input argument.
- The code is now licensed under a Creative Commons Non-Commercial License
(see Conditions of use for details).
What was new in Release 2 (Feb. 16, 2010):
- The optimal step-size computation has been refined (
kurt_gradient_optstep.m
function).
- Circular and noncircular complex sources are now included in the
demonstration (
robustica_demo.m
function).
- For the sake of reproducible research, the code used to generate
some of the results reported in reference [1] has been added to the
package (
robustica_tnn_fig3_sim.m
and related
functions).
Download and installation instructions:
- Download the zip-file by clicking on the above link.
- Extract the files into
robustica_package
directory.
- From Matlab's command line, set current directory to
robustica_package
.
- Type
help robustica_package
or doc robustica_package
for details about the algorithm
and the different functions contained in the package.
- Type
robustica_demo
to run a simple demo.
Conditions of use:
This is open-source code. Please, feel free to edit the M-files and
modify them as you wish. It is only requested that original authorship
be acknowledged and modifications be clearly indicated in the code
(history section and elsewhere as appropriate).
If you use this package to generate results in your publications,
please cite at least reference [1] above.
The RobustICA algorithm by Vicente Zarzoso and Pierre
Comon is licensed under a Creative
Commons Attribution-NonCommercial 4.0 International License.
Compatibility:
The package has been tested on Matlab 7.14.
Feedback:
Please, report any bugs, comments or suggestions to <>.
Back to software