mlpack  master
Public Member Functions | Private Attributes | List of all members
mlpack::svd::RandomizedSVD Class Reference

Randomized SVD is a matrix factorization that is based on randomized matrix approximation techniques, developed in in "Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions". More...

Public Member Functions

 RandomizedSVD (const arma::mat &data, arma::mat &u, arma::vec &s, arma::mat &v, const size_t iteratedPower=0, const size_t maxIterations=2, const size_t rank=0, const double eps=1e-7)
 Create object for the randomized SVD method. More...
 
 RandomizedSVD (const size_t iteratedPower=0, const size_t maxIterations=2, const double eps=1e-7)
 Create object for the randomized SVD method. More...
 
void Apply (const arma::mat &data, arma::mat &u, arma::vec &s, arma::mat &v, const size_t rank)
 Apply Principal Component Analysis to the provided data set using the randomized SVD. More...
 
double Epsilon () const
 Get the value used for decomposition stability. More...
 
double & Epsilon ()
 Modify the value used for decomposition stability. More...
 
size_t IteratedPower () const
 Get the size of the normalized power iterations. More...
 
size_t & IteratedPower ()
 Modify the size of the normalized power iterations. More...
 
size_t MaxIterations () const
 Get the number of iterations for the power method. More...
 
size_t & MaxIterations ()
 Modify the number of iterations for the power method. More...
 

Private Attributes

double eps
 The value used for numerical stability. More...
 
size_t iteratedPower
 Locally stored size of the normalized power iterations. More...
 
size_t maxIterations
 Locally stored number of iterations for the power method. More...
 

Detailed Description

Randomized SVD is a matrix factorization that is based on randomized matrix approximation techniques, developed in in "Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions".

For more information, see the following.

@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},
}

An example of how to use the interface is shown below:

arma::mat data; // Rating data in the form of coordinate list.
const size_t rank = 20; // Rank used for the decomposition.
// Make a RandomizedSVD object.
arma::mat u, s, v;
// Use the Apply() method to get a factorization.
rSVD.Apply(data, u, s, v, rank);

Definition at line 66 of file randomized_svd.hpp.

Constructor & Destructor Documentation

mlpack::svd::RandomizedSVD::RandomizedSVD ( const arma::mat &  data,
arma::mat &  u,
arma::vec &  s,
arma::mat &  v,
const size_t  iteratedPower = 0,
const size_t  maxIterations = 2,
const size_t  rank = 0,
const double  eps = 1e-7 
)

Create object for the randomized SVD method.

Parameters
dataData matrix.
uFirst unitary matrix.
vSecond unitary matrix.
sigmaDiagonal matrix of singular values.
iteratedPowerSize of the normalized power iterations (Default: rank + 2).
maxIterationsNumber of iterations for the power method (Default: 2).
rankRank of the approximation (Default: number of rows.)
epsThe eps coefficient to avoid division by zero (numerical stability).
mlpack::svd::RandomizedSVD::RandomizedSVD ( const size_t  iteratedPower = 0,
const size_t  maxIterations = 2,
const double  eps = 1e-7 
)

Create object for the randomized SVD method.

Parameters
iteratedPowerSize of the normalized power iterations (Default: rank + 2).
maxIterationsNumber of iterations for the power method (Default: 2).
epsThe eps coefficient to avoid division by zero (numerical stability).

Member Function Documentation

void mlpack::svd::RandomizedSVD::Apply ( const arma::mat &  data,
arma::mat &  u,
arma::vec &  s,
arma::mat &  v,
const size_t  rank 
)

Apply Principal Component Analysis to the provided data set using the randomized SVD.

Parameters
dataData matrix.
uFirst unitary matrix.
vSecond unitary matrix.
sigmaDiagonal matrix of singular values.
rankRank of the approximation.

Referenced by mlpack::pca::RandomizedSVDPolicy::Apply().

double mlpack::svd::RandomizedSVD::Epsilon ( ) const
inline

Get the value used for decomposition stability.

Definition at line 134 of file randomized_svd.hpp.

References eps.

double& mlpack::svd::RandomizedSVD::Epsilon ( )
inline

Modify the value used for decomposition stability.

Definition at line 136 of file randomized_svd.hpp.

References eps.

size_t mlpack::svd::RandomizedSVD::IteratedPower ( ) const
inline

Get the size of the normalized power iterations.

Definition at line 124 of file randomized_svd.hpp.

References iteratedPower.

size_t& mlpack::svd::RandomizedSVD::IteratedPower ( )
inline

Modify the size of the normalized power iterations.

Definition at line 126 of file randomized_svd.hpp.

References iteratedPower.

size_t mlpack::svd::RandomizedSVD::MaxIterations ( ) const
inline

Get the number of iterations for the power method.

Definition at line 129 of file randomized_svd.hpp.

References maxIterations.

size_t& mlpack::svd::RandomizedSVD::MaxIterations ( )
inline

Modify the number of iterations for the power method.

Definition at line 131 of file randomized_svd.hpp.

References maxIterations.

Member Data Documentation

double mlpack::svd::RandomizedSVD::eps
private

The value used for numerical stability.

Definition at line 146 of file randomized_svd.hpp.

Referenced by Epsilon().

size_t mlpack::svd::RandomizedSVD::iteratedPower
private

Locally stored size of the normalized power iterations.

Definition at line 140 of file randomized_svd.hpp.

Referenced by IteratedPower().

size_t mlpack::svd::RandomizedSVD::maxIterations
private

Locally stored number of iterations for the power method.

Definition at line 143 of file randomized_svd.hpp.

Referenced by MaxIterations().


The documentation for this class was generated from the following file: