Olivier Grisel

2010-12-07 20:33:08 UTC

Hi all,

I noticed that the PCA module did not divide by S hence the projected

signal still had varying component-wise variances. I have added a

"whiten" boolean parameter to PCA to do just that. whiten is now True

by default. You can set it explicitly to False to get the old

behavior.

I have also updated the hyperparameters of the SVM in the face

recognition module and I know get 0.88 as F1 score on my 5

people-closed-world face recognition example (using 150 eigenfaces

without any fancy alignment)!

https://github.com/scikit-learn/scikit-learn/commit/ea494a0a275a8b5660fd479a6edab5c0127b2fab

Open questions:

- maybe "scale" would be a better name for that parameter?

- the variance of the output is not always 1.0: in the test case I

wrote all outpout components have variance 0.1. Is that a result of

taking only the top n_comp singular values and ignoring the remaining

dimensions? Should we further scale the output to get 1.0 instead?

- fastica is doing whitening using by computing the empirical

covariance matrix and taking the 1 / square root of the eigen vectors.

Wouldn't SVD be better/faster there? Would it make sense to try an

factorize both implementation (pca and fastica whitening), or it is

better like that? If so why?

I noticed that the PCA module did not divide by S hence the projected

signal still had varying component-wise variances. I have added a

"whiten" boolean parameter to PCA to do just that. whiten is now True

by default. You can set it explicitly to False to get the old

behavior.

I have also updated the hyperparameters of the SVM in the face

recognition module and I know get 0.88 as F1 score on my 5

people-closed-world face recognition example (using 150 eigenfaces

without any fancy alignment)!

https://github.com/scikit-learn/scikit-learn/commit/ea494a0a275a8b5660fd479a6edab5c0127b2fab

Open questions:

- maybe "scale" would be a better name for that parameter?

- the variance of the output is not always 1.0: in the test case I

wrote all outpout components have variance 0.1. Is that a result of

taking only the top n_comp singular values and ignoring the remaining

dimensions? Should we further scale the output to get 1.0 instead?

- fastica is doing whitening using by computing the empirical

covariance matrix and taking the 1 / square root of the eigen vectors.

Wouldn't SVD be better/faster there? Would it make sense to try an

factorize both implementation (pca and fastica whitening), or it is

better like that? If so why?

--

Olivier

http://twitter.com/ogrisel - http://github.com/ogrisel

Olivier

http://twitter.com/ogrisel - http://github.com/ogrisel