mlpack  2.0.1
amf.hpp
Go to the documentation of this file.
1 
20 #ifndef __MLPACK_METHODS_AMF_AMF_HPP
21 #define __MLPACK_METHODS_AMF_AMF_HPP
22 
23 #include <mlpack/core.hpp>
24 
30 
33 
36 
37 namespace mlpack {
38 namespace amf {
39 
77 template<typename TerminationPolicyType = SimpleResidueTermination,
78  typename InitializationRuleType = RandomAcolInitialization<>,
79  typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
80 class AMF
81 {
82  public:
99  AMF(const TerminationPolicyType& terminationPolicy = TerminationPolicyType(),
100  const InitializationRuleType& initializeRule = InitializationRuleType(),
101  const UpdateRuleType& update = UpdateRuleType());
102 
111  template<typename MatType>
112  double Apply(const MatType& V,
113  const size_t r,
114  arma::mat& W,
115  arma::mat& H);
116 
118  const TerminationPolicyType& TerminationPolicy() const
119  { return terminationPolicy; }
121  TerminationPolicyType& TerminationPolicy() { return terminationPolicy; }
122 
124  const InitializationRuleType& InitializeRule() const
125  { return initializationRule; }
127  InitializationRuleType& InitializeRule() { return initializationRule; }
128 
130  const UpdateRuleType& Update() const { return update; }
132  UpdateRuleType& Update() { return update; }
133 
134  private:
136  TerminationPolicyType terminationPolicy;
138  InitializationRuleType initializationRule;
140  UpdateRuleType update;
141 }; // class AMF
142 
146 
148 #ifdef MLPACK_USE_CXX11
149 
157 template<class MatType>
158 using SVDBatchFactorizer = amf::AMF<amf::SimpleResidueTermination,
159  amf::RandomAcolInitialization<>,
161 
171 template<class MatType>
173  amf::SimpleResidueTermination,
174  amf::RandomAcolInitialization<>,
184 template<class MatType>
186  amf::SimpleResidueTermination,
187  amf::RandomAcolInitialization<>,
189 
190 #else // #ifdef MLPACK_USE_CXX11
191 
199 typedef amf::AMF<amf::SimpleResidueTermination,
200  amf::RandomAcolInitialization<>,
201  amf::SVDBatchLearning> SparseSVDBatchFactorizer;
202 
210 typedef amf::AMF<amf::SimpleResidueTermination,
211  amf::RandomAcolInitialization<>,
212  amf::SVDBatchLearning> SVDBatchFactorizer;
221 typedef amf::AMF<amf::SimpleResidueTermination,
222  amf::RandomAcolInitialization<>,
223  amf::SVDIncompleteIncrementalLearning>
225 
234 typedef amf::AMF<amf::SimpleResidueTermination,
235  amf::RandomAcolInitialization<>,
236  amf::SVDIncompleteIncrementalLearning>
238 
247 typedef amf::AMF<amf::SimpleResidueTermination,
248  amf::RandomAcolInitialization<>,
251 
260 typedef amf::AMF<amf::SimpleResidueTermination,
261  amf::RandomAcolInitialization<>,
264 
265 #endif // #ifdef MLPACK_USE_CXX11
266 
267 } // namespace amf
268 } // namespace mlpack
269 
270 // Include implementation.
271 #include "amf_impl.hpp"
272 
273 #endif // __MLPACK_METHODS_AMF_AMF_HPP
274 
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::SVDIncompleteIncrementalLearning > SVDIncompleteIncrementalFactorizer
SVDIncompleteIncrementalFactorizer factorizes given matrix V into two matrices W and H by incomplete ...
Definition: amf.hpp:237
This class computes SVD using complete incremental batch learning, as described in the following pape...
InitializationRuleType initializationRule
Instantiated initialization Rule.
Definition: amf.hpp:138
double Apply(const MatType &V, const size_t r, arma::mat &W, arma::mat &H)
Apply Alternating Matrix Factorization to the provided matrix.
This class implements AMF (alternating matrix factorization) on the given matrix V.
Definition: amf.hpp:80
UpdateRuleType & Update()
Modify the update rule.
Definition: amf.hpp:132
This class computes SVD using incomplete incremental batch learning, as described in the following pa...
TODO : Merge this template specialized function for sparse matrix using common row_col_iterator.
Linear algebra utility functions, generally performed on matrices or vectors.
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::SVDBatchLearning > SparseSVDBatchFactorizer
Add simple typedefs.
Definition: amf.hpp:201
const UpdateRuleType & Update() const
Access the update rule.
Definition: amf.hpp:130
UpdateRuleType update
Instantiated update rule.
Definition: amf.hpp:140
This class implements a simple residue-based termination policy.
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::SVDCompleteIncrementalLearning< arma::sp_mat > > SparseSVDCompleteIncrementalFactorizer
SparseSVDCompleteIncrementalFactorizer factorizes given sparse matrix V into two matrices W and H by ...
Definition: amf.hpp:250
InitializationRuleType & InitializeRule()
Modify the initialization rule.
Definition: amf.hpp:127
This class implements SVD batch learning with momentum.
This class implements a method titled &#39;Alternating Least Squares&#39; described in the following paper: ...
Definition: nmf_als.hpp:43
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::SVDBatchLearning > SVDBatchFactorizer
SparseSVDBatchFactorizer factorizes given matrix V into two matrices W and H by gradient descent...
Definition: amf.hpp:212
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::SVDCompleteIncrementalLearning< arma::mat > > SVDCompleteIncrementalFactorizer
SVDCompleteIncrementalFactorizer factorizes given matrix V into two matrices W and H by complete incr...
Definition: amf.hpp:263
const InitializationRuleType & InitializeRule() const
Access the initialization rule.
Definition: amf.hpp:124
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::NMFALSUpdate > NMFALSFactorizer
Definition: amf.hpp:145
TerminationPolicyType & TerminationPolicy()
Modify the termination policy.
Definition: amf.hpp:121
This class initializes the W matrix of the AMF algorithm by averaging p randomly chosen columns of V...
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.
TerminationPolicyType terminationPolicy
Termination policy.
Definition: amf.hpp:136
const TerminationPolicyType & TerminationPolicy() const
Access the termination policy.
Definition: amf.hpp:118
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::SVDIncompleteIncrementalLearning > SparseSVDIncompleteIncrementalFactorizer
SparseSVDIncompleteIncrementalFactorizer factorizes given sparse matrix V into two matrices W and H b...
Definition: amf.hpp:224
The multiplicative distance update rules for matrices W and H.