Code : Independent Components Analysis


Purpose:

This software is used to find the independent components (or components that are as independent as possible) in multi-dimensional data sets. The general algorithm is called RADICAL, and is described in the JMLR paper below. There is a simple version of the code that works for two-dimensional data and another version that works for higher dimension. The code should work well (if you have enough data) for fewer than 20 dimensions and 100 dimensions is almost certainly too many. Between 20 and 100 dimensions you should try and see what kind of results you get (both in terms of accuracy and speed).
The algorithm is non-parametric, and does NOT rely on any specific assumptions about the data (such as the kurtosis or sparseness of components) like Jade, FastICA, and many other ICA algorithms. It can find any set of independent components as long as they are non-Gaussian (in which case ICA is provably impossible).

Source code:

All source code is provided under a (revised, advertising-clause free) BSD-style license: terms of license. Please cite the JMLR paper below if you use this code.

Download RADICAL 1.2 for MATLAB.

Change history:

2006/8/14
Version 1.2 released. Bug fix gives 30 fold speed increase for greater than two dimensions.


Publication

  • Erik Learned-Miller and John W. Fisher, III.
    ICA using spacings estimates of entropy.
    Journal of Machine Learning Research (JMLR), Volume 4, pp. 1271-1295, 2003.
    [pdf]