|
I saw it referenced recently, and the explanations I'm finding online are unclear. Is it as simple as applying ICA to the original feature set, and using the ICA set instead? If so, how is that compatible with its use in This Paper about deep learning (the Coates one from this question? |
|
Whitening your data in this context essentially means rotating into space of principal components, diving each dimension by square root of variance in that direction, and rotating back to pixel space. Assume you have an NxD data array X that holds your patches. Here is how they were whitened in Coates et al paper (MATLAB):
The full code can be downloaded here: https://sites.google.com/site/kmeanslearning/home or directly from Adam's page http://www.stanford.edu/~acoates/ Alex Krizhevsky (from Toronto) also uses this procedure in his "Master's Thesis" http://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf and gives a little more details and some motivation. (see Chapter 1.3 and Appendix A) Qualitatively, this "erases" the boring stuff in your image (by subtracting the usual mean, and getting rid of the correlations in pixels that are there in almost every image), and leaves behind the "interesting" parts. I realize that's super vague but that's the intuition. 1
The Accord.NET Framework (http://accord-net.origo.ethz.ch/) also implements ICA and support the Whitening Transform. Its source code is publicly available at http://code.google.com/p/accord/
(Mar 17 '11 at 14:29)
César Souza
scikits-learn has whitening as well in its PCA module.
(Mar 18 '11 at 06:06)
Justin Bayer
Just a quick note about the whitening PCA implementation of scikit-learn: it's actually a truncating PCA and the output of the transform method stays in the truncated eigenspace instead of 'rotating' back the data into the input space. I put rotating in quotes because of the truncation.
(Mar 20 '11 at 20:03)
ogrisel
Why the +0.1 in the second in P = ...? I'm guessing numerical stability?
(Apr 30 '13 at 04:16)
Marius van Zyl
|
|
Whitening is usually done before ICA, as a preprocessing step so I'm not sure about using ICA to whiten data... Whitening a matrix x means that its components are uncorrelated and their variances equal unity. In other words, the covariance matrix of x equals the identity matrix. One method for whitening is to use the eigen-value decomposition (EVD) of the covariance matrix. I found this explanation (and the equations) useful: http://cis.legacy.ics.tkk.fi/aapo/papers/IJCNN99_tutorialweb/node26.html Whitening also entails that the mean is zero. Wikipedia has a brief but rather concise explanation (http://en.wikipedia.org/wiki/White_noise#Whitening_a_random_vector)
(Mar 02 '11 at 04:03)
Oscar Täckström
|
|
Try checking Andrew Ng's lecture on ICA, he goes over whitening quite well. In the set of notes regarding factor analysis it is pretty well explained, as soon as I get to my computer I'll post the link. can you provide a link?
(Mar 02 '11 at 11:34)
Travis Wolfe
Hey there, Sorry, but was a bit bussy. http://www.stanford.edu/class/cs229/materials.html This is the class sylabus and notes wp, check lecture notes 9, 10 and 11 and all about PCA and withening is pretty well explained.
(Mar 02 '11 at 22:29)
Leon Palafox ♦
|
|
Whitening is the same as PCA and scaling to get a set of orthonormal features. If your data is Gaussian, PCA=ICA and thus whitening is ICA. Otherwise, it is like a cheap attempt at ICA, and PCA /= ICA |