mlpack  master
Public Member Functions | Private Attributes | List of all members
mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType > Class Template Reference

This class implements AMF (alternating matrix factorization) on the given matrix V. More...

Public Member Functions

 AMF (const TerminationPolicyType &terminationPolicy=TerminationPolicyType(), const InitializationRuleType &initializeRule=InitializationRuleType(), const UpdateRuleType &update=UpdateRuleType())
 Create the AMF object and (optionally) set the parameters which AMF will run with. More...
 
template<typename MatType >
double Apply (const MatType &V, const size_t r, arma::mat &W, arma::mat &H)
 Apply Alternating Matrix Factorization to the provided matrix. More...
 
const InitializationRuleType & InitializeRule () const
 Access the initialization rule. More...
 
InitializationRuleType & InitializeRule ()
 Modify the initialization rule. More...
 
const TerminationPolicyType & TerminationPolicy () const
 Access the termination policy. More...
 
TerminationPolicyType & TerminationPolicy ()
 Modify the termination policy. More...
 
const UpdateRuleType & Update () const
 Access the update rule. More...
 
UpdateRuleType & Update ()
 Modify the update rule. More...
 

Private Attributes

InitializationRuleType initializationRule
 Instantiated initialization Rule. More...
 
TerminationPolicyType terminationPolicy
 Termination policy. More...
 
UpdateRuleType update
 Instantiated update rule. More...
 

Detailed Description

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
class mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >

This class implements AMF (alternating matrix factorization) on the given matrix V.

Alternating matrix factorization decomposes V in the form $ V \approx WH $ where W is called the basis matrix and H is called the encoding matrix. V is taken to be of size n x m and the obtained W is n x r and H is r x m. The size r is called the rank of the factorization.

The implementation requires three template types; the first contains the policy used to determine when the algorithm has converged; the second contains the initialization rule for the W and H matrix; the last contains the update rule to be used during each iteration. This templatization allows the user to try various update rules, initialization rules, and termination policies (including ones not supplied with mlpack) for factorization. By default, the template parameters to AMF implement non-negative matrix factorization with the multiplicative distance update.

A simple example of how to run AMF (or NMF) is shown below.

extern arma::mat V; // Matrix that we want to perform LMF on.
size_t r = 10; // Rank of decomposition
arma::mat W; // Basis matrix
arma::mat H; // Encoding matrix
AMF<> amf; // Default options: NMF with multiplicative distance update rules.
amf.Apply(V, r, W, H);
Template Parameters
TerminationPolicyThe policy to use for determining when the factorization has converged.
InitializationRuleThe initialization rule for initializing W and H matrix.
UpdateRuleThe update rule for calculating W and H matrix at each iteration.
See also
NMFMultiplicativeDistanceUpdate, SimpleResidueTermination

Definition at line 78 of file amf.hpp.

Constructor & Destructor Documentation

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::AMF ( const TerminationPolicyType &  terminationPolicy = TerminationPolicyType(),
const InitializationRuleType &  initializeRule = InitializationRuleType(),
const UpdateRuleType &  update = UpdateRuleType() 
)

Create the AMF object and (optionally) set the parameters which AMF will run with.

The minimum residue refers to the root mean square of the difference between two subsequent iterations of the product W * H. A low residue indicates that subsequent iterations are not producing much change in W and H. Once the residue goes below the specified minimum residue, the algorithm terminates.

Parameters
initializationRuleOptional instantiated InitializationRule object for initializing the W and H matrices.
updateRuleOptional instantiated UpdateRule object; this parameter is useful when the update rule for the W and H vector has state that it needs to store (i.e. HUpdate() and WUpdate() are not static functions).
terminationPolicyOptional instantiated TerminationPolicy object.

Member Function Documentation

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
template<typename MatType >
double mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::Apply ( const MatType &  V,
const size_t  r,
arma::mat &  W,
arma::mat &  H 
)

Apply Alternating Matrix Factorization to the provided matrix.

Parameters
VInput matrix to be factorized.
WBasis matrix to be output.
HEncoding matrix to output.
rRank r of the factorization.
template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
const InitializationRuleType& mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::InitializeRule ( ) const
inline

Access the initialization rule.

Definition at line 122 of file amf.hpp.

References mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::initializationRule.

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
InitializationRuleType& mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::InitializeRule ( )
inline

Modify the initialization rule.

Definition at line 125 of file amf.hpp.

References mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::initializationRule.

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
const TerminationPolicyType& mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::TerminationPolicy ( ) const
inline

Access the termination policy.

Definition at line 116 of file amf.hpp.

References mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::terminationPolicy.

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
TerminationPolicyType& mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::TerminationPolicy ( )
inline

Modify the termination policy.

Definition at line 119 of file amf.hpp.

References mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::terminationPolicy.

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
const UpdateRuleType& mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::Update ( ) const
inline

Access the update rule.

Definition at line 128 of file amf.hpp.

References mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::update.

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
UpdateRuleType& mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::Update ( )
inline

Modify the update rule.

Definition at line 130 of file amf.hpp.

References mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::update.

Member Data Documentation

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
InitializationRuleType mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::initializationRule
private

Instantiated initialization Rule.

Definition at line 136 of file amf.hpp.

Referenced by mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::InitializeRule().

template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
TerminationPolicyType mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::terminationPolicy
private
template<typename TerminationPolicyType = SimpleResidueTermination, typename InitializationRuleType = RandomAcolInitialization<>, typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
UpdateRuleType mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::update
private

Instantiated update rule.

Definition at line 138 of file amf.hpp.

Referenced by mlpack::amf::AMF< TerminationPolicyType, InitializationRuleType, UpdateRuleType >::Update().


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