[mlpack-git] [mlpack/mlpack] Refactor PCA class: able to use different decomposition techniques (exact, randomized, QUIC SVD). (#716)

Marcus Edel notifications at github.com
Mon Jul 4 08:25:14 EDT 2016


As Nilay pointed out in his blog post: http://mlpack.org/gsocblog/we-need-to-go-deeper-googlenet-week-5-highlights.html

the discretize function that uses the PCA class, wasn't what we expected runtime wise, so we decided to use the another PCA approach: Randomized SVD as proposed in:

```
* @article{Halko2011,
*   author  = {Halko, N. and Martinsson, P. G. and Tropp, J. A.},
*   title   = {Finding Structure with Randomness: Probabilistic Algorithms for
                Constructing Approximate Matrix Decompositions},
*   journal = {SIAM Rev.},
*   volume  = {53},
*   year    = {2011},
* }
*
* @article{Szlam2014,
*   author  = {Arthur Szlam Yuval Kluger and Mark Tygert},
*   title   = {An implementation of a randomized algorithm for principal
            component analysis},
*   journal = {CoRR},
*   volume  = {abs/1412.3510},
*   year    = {2014},
* }
```
I refactored the PCA class, that is now able to use different decomposition methods including the already existing QUIC-SVD technique.

You can view, comment on, or merge this pull request online at:

  https://github.com/mlpack/mlpack/pull/716

-- Commit Summary --

  * Fix explicitly specialized template issue.
  * Merge remote-tracking branch 'upstream/master'
  * Properly resetting auxBound. Start using a Reset() method, to avoid futures errors like this.
  * edge_boxes: feature extraction
  * backported ind2sub and sub2ind
  * backported ind2sub and sub2ind
  * Revert "edge_boxes: feature extraction"
  * backported sub2ind & ind2sub
  * Minor style fixes for ind2sub() test.
  * Add new contributors.
  * Try debugging symbols for AppVeyor build to see if it is faster.
  * Use appveyor cache (nuget and armadillo).
  * added test for ind2sub and sub2ind
  * fix doc tutorial
  * fix typo
  * Merge remote-tracking branch 'upstream/master'
  * Add QUIC-SVD singular values test.
  * Remove implementation from header file to avoid duplicate symbol error.
  * Add randomized SVD method.
  * Add randomized SVd test suite.
  * Add exact, randomized and QUIC SVD decomposition policies; meant to be used in conjunction with the PCA class.
  * Refactor PCA class; able to use different decomposition methods.
  * Merge remote-tracking branch 'upstream/master'
  * Merge with master.

-- File Changes --

    M src/mlpack/core/tree/cosine_tree/cosine_tree.cpp (4)
    M src/mlpack/methods/CMakeLists.txt (1)
    M src/mlpack/methods/pca/CMakeLists.txt (4)
    A src/mlpack/methods/pca/decomposition_policies/CMakeLists.txt (16)
    A src/mlpack/methods/pca/decomposition_policies/exact_svd_method.hpp (72)
    A src/mlpack/methods/pca/decomposition_policies/quic_svd_method.hpp (92)
    A src/mlpack/methods/pca/decomposition_policies/randomized_svd_method.hpp (97)
    M src/mlpack/methods/pca/pca.hpp (42)
    R src/mlpack/methods/pca/pca_impl.hpp (89)
    M src/mlpack/methods/pca/pca_main.cpp (69)
    M src/mlpack/methods/quic_svd/CMakeLists.txt (2)
    R src/mlpack/methods/quic_svd/quic_svd.cpp (9)
    M src/mlpack/methods/quic_svd/quic_svd.hpp (7)
    A src/mlpack/methods/randomized_svd/CMakeLists.txt (15)
    A src/mlpack/methods/randomized_svd/randomized_svd.cpp (128)
    A src/mlpack/methods/randomized_svd/randomized_svd.hpp (133)
    M src/mlpack/tests/CMakeLists.txt (3)
    M src/mlpack/tests/pca_test.cpp (118)
    M src/mlpack/tests/quic_svd_test.cpp (34)
    A src/mlpack/tests/randomized_svd_test.cpp (62)

-- Patch Links --

https://github.com/mlpack/mlpack/pull/716.patch
https://github.com/mlpack/mlpack/pull/716.diff

---
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/mlpack/mlpack/pull/716
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.cc.gatech.edu/pipermail/mlpack-git/attachments/20160704/c570a0eb/attachment.html>


More information about the mlpack-git mailing list