Kernel
Independent Component Analysis
Last updated: July 17th, 2003
Description
Matlab code - version 1.2
Future improvements
Demos
The kernel-ica package is a Matlab program that implements the Kernel ICA algorithm for independent component analysis (ICA).
The Kernel ICA algorithm is
based on the minimization of a contrast function based on kernel ideas. A
contrast function measures the statistical dependence between components, thus
when applied to estimated components and minimized over possible demixing
matrices, components that are as independent as possible are found. For more
information, please read the following paper:
Francis R. Bach, Michael I. Jordan. Kernel
Independent Component Analysis,
Journal of Machine Learning Research, 3, 1-48, 2002. [ps.gz] [pdf]
Version 1.2 is a an implementation of the Kernel ICA algorithm presented in the previous paper. It performs linear ICA with the same number of sources and mixtures. It can be efficiently utilized for any number of components and any number of training samples. Precise instructions on how to use the package are included in the archive file.
Note that some routines (incomplete Cholesky decomposition) are implemented in C and for optimal performance should be precompiled at the matlab prompt (using the mex command ) the first time you use the package. Instructions are included in the distribution. If you don't want to use the C code, the package will still work, though slower.
The kernel-ica package is Copyright (c) 2002 by Francis Bach. If you have any questions or comments regarding this package, or if you want to report any bugs, please send an e-mail to fbach@cs.berkeley.edu. The current version 1.2 has been released on July 17th, 2003. Check this web page regularly for newer versions.
The package now also
includes a Matlab function to sample from the distributions used in the JMLR
paper.
-Under-complete ICA: it is straightforward to generalize our algorithm to the under-complete ICA case (i.e. more sources than observed mixtures).
-Multidimensional ICA:
our framework applies equally well to univariate and multivariate components. A
new algorithm to look for clusters in ICA can be found here. It uses the tree-dependent component analysis
framework, as described in the following paper:
Francis R. Bach, Michael I. Jordan. Finding clusters in independent
component analysis,
Fourth International Symposium on Independent Component Analysis and
Blind Signal
Separation, 2003. [ps] [pdf]
-Tree-dependent component analysis (TCA): we generalized the ICA
framework to richer graphical models (see here for a
tutorial on graphical models), where instead of looking for a linear transform
that makes the data components independent, we are looking for components that
can be best fitted in a tree structured graphical model. The TCA model can be
applied in any situation where the data can be assumed to have been transformed
by an unknown linear transformation. A Matlab implementation can be found here and the algorithms are
described in the following paper:
Francis R. Bach, Michael I. Jordan. Tree-dependent component analysis,
Uncertainty in Artificial Intelligence (UAI): Proceedings of the
Eighteenth Conference, 2002.
[ps.gz]
[pdf]
Demos
-Synthetic examples: in our paper we provide simulation results on a
wide range of synthetic distributions. In the simple 2 sources / 2 mixtures
setting, we illustrate the performance of our algorithms and in particular its
robustness to source distributions, "Gaussianity" and outliers, with
a significant improvement over currently available algorithms. Detailed results
can be found in the paper.
-Audio blind source separation: we also ran some experiments with real sounds that were artificially mixed. They can be found here.