<p>As Nilay pointed out in his blog post: <a href="http://mlpack.org/gsocblog/we-need-to-go-deeper-googlenet-week-5-highlights.html">http://mlpack.org/gsocblog/we-need-to-go-deeper-googlenet-week-5-highlights.html</a></p>

<p>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:</p>

<pre><code>* @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},
* }
</code></pre>

<p>I refactored the PCA class, that is now able to use different decomposition methods including the already existing QUIC-SVD technique.</p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>&nbsp;&nbsp;<a href='https://github.com/mlpack/mlpack/pull/716'>https://github.com/mlpack/mlpack/pull/716</a></p>

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

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-0">src/mlpack/core/tree/cosine_tree/cosine_tree.cpp</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-1">src/mlpack/methods/CMakeLists.txt</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-2">src/mlpack/methods/pca/CMakeLists.txt</a>
    (4)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-3">src/mlpack/methods/pca/decomposition_policies/CMakeLists.txt</a>
    (16)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-4">src/mlpack/methods/pca/decomposition_policies/exact_svd_method.hpp</a>
    (72)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-5">src/mlpack/methods/pca/decomposition_policies/quic_svd_method.hpp</a>
    (92)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-6">src/mlpack/methods/pca/decomposition_policies/randomized_svd_method.hpp</a>
    (97)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-7">src/mlpack/methods/pca/pca.hpp</a>
    (42)
  </li>
  <li>
    <strong>R</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-8">src/mlpack/methods/pca/pca_impl.hpp</a>
    (89)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-9">src/mlpack/methods/pca/pca_main.cpp</a>
    (69)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-10">src/mlpack/methods/quic_svd/CMakeLists.txt</a>
    (2)
  </li>
  <li>
    <strong>R</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-11">src/mlpack/methods/quic_svd/quic_svd.cpp</a>
    (9)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-12">src/mlpack/methods/quic_svd/quic_svd.hpp</a>
    (7)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-13">src/mlpack/methods/randomized_svd/CMakeLists.txt</a>
    (15)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-14">src/mlpack/methods/randomized_svd/randomized_svd.cpp</a>
    (128)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-15">src/mlpack/methods/randomized_svd/randomized_svd.hpp</a>
    (133)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-16">src/mlpack/tests/CMakeLists.txt</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-17">src/mlpack/tests/pca_test.cpp</a>
    (118)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-18">src/mlpack/tests/quic_svd_test.cpp</a>
    (34)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/716/files#diff-19">src/mlpack/tests/randomized_svd_test.cpp</a>
    (62)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/mlpack/mlpack/pull/716.patch'>https://github.com/mlpack/mlpack/pull/716.patch</a></li>
  <li><a href='https://github.com/mlpack/mlpack/pull/716.diff'>https://github.com/mlpack/mlpack/pull/716.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/716">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe/AJ4bFIjgVyNCiGUnSPwd7yIqJZJK-TmQks5qSPuqgaJpZM4JEUwr">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFC4EWFEcLz1WrNkYu6eBUmsudDsJks5qSPuqgaJpZM4JEUwr.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/716"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>