Kurtosis Maximization ICA

ICA in two lines of MATLAB!

Check out this kurtosis maximization trick that Yair Weiss and Eero Simoncelli showed me at NIPS01.

xx are the mixed microphone measurements (one per column)
W is the unmixing matrix.

% W = kica(xx);
yy = sqrtm(inv(cov(xx')))*(xx-repmat(mean(xx,2),1,size(xx,2)));
[W,ss,vv] = svd((repmat(sum(yy.*yy,1),size(yy,1),1).*yy)*yy');

Basically, we whiten the data to second order. This makes the unmixing matrix always orthogonal (amazing, huh?). Next we map the fourth order statistics down into a funny matrix such that the inner product of a unit vector with this matrix gives (roughly) the kurtosis in that direction. The maximal eigenvectors of this new matrix are the (orthogonal) directions of maximum kurtosis which for supergaussian sources are pretty good guesses at the unmixing directions.

[ | Information | Research | Teaching | Professional | ]

Sam Roweis, Vision, Learning and Graphics Group, NYU, www.cs.nyu.edu/~roweis