mlpack  master
amf.hpp
Go to the documentation of this file.
1 
18 #ifndef MLPACK_METHODS_AMF_AMF_HPP
19 #define MLPACK_METHODS_AMF_AMF_HPP
20 
21 #include <mlpack/prereqs.hpp>
22 
28 
31 
34 
35 namespace mlpack {
36 namespace amf {
37 
75 template<typename TerminationPolicyType = SimpleResidueTermination,
76  typename InitializationRuleType = RandomAcolInitialization<>,
77  typename UpdateRuleType = NMFMultiplicativeDistanceUpdate>
78 class AMF
79 {
80  public:
97  AMF(const TerminationPolicyType& terminationPolicy = TerminationPolicyType(),
98  const InitializationRuleType& initializeRule = InitializationRuleType(),
99  const UpdateRuleType& update = UpdateRuleType());
100 
109  template<typename MatType>
110  double Apply(const MatType& V,
111  const size_t r,
112  arma::mat& W,
113  arma::mat& H);
114 
116  const TerminationPolicyType& TerminationPolicy() const
117  { return terminationPolicy; }
119  TerminationPolicyType& TerminationPolicy() { return terminationPolicy; }
120 
122  const InitializationRuleType& InitializeRule() const
123  { return initializationRule; }
125  InitializationRuleType& InitializeRule() { return initializationRule; }
126 
128  const UpdateRuleType& Update() const { return update; }
130  UpdateRuleType& Update() { return update; }
131 
132  private:
134  TerminationPolicyType terminationPolicy;
136  InitializationRuleType initializationRule;
138  UpdateRuleType update;
139 }; // class AMF
140 
144 
146 #ifdef MLPACK_USE_CXX11
147 
155 template<class MatType>
156 using SVDBatchFactorizer = amf::AMF<amf::SimpleResidueTermination,
157  amf::RandomAcolInitialization<>,
159 
169 template<class MatType>
171  amf::SimpleResidueTermination,
172  amf::RandomAcolInitialization<>,
182 template<class MatType>
184  amf::SimpleResidueTermination,
185  amf::RandomAcolInitialization<>,
187 
188 #else // #ifdef MLPACK_USE_CXX11
189 
197 typedef amf::AMF<amf::SimpleResidueTermination,
198  amf::RandomAcolInitialization<>,
199  amf::SVDBatchLearning> SparseSVDBatchFactorizer;
200 
208 typedef amf::AMF<amf::SimpleResidueTermination,
209  amf::RandomAcolInitialization<>,
210  amf::SVDBatchLearning> SVDBatchFactorizer;
219 typedef amf::AMF<amf::SimpleResidueTermination,
220  amf::RandomAcolInitialization<>,
221  amf::SVDIncompleteIncrementalLearning>
223 
232 typedef amf::AMF<amf::SimpleResidueTermination,
233  amf::RandomAcolInitialization<>,
234  amf::SVDIncompleteIncrementalLearning>
236 
245 typedef amf::AMF<amf::SimpleResidueTermination,
246  amf::RandomAcolInitialization<>,
249 
258 typedef amf::AMF<amf::SimpleResidueTermination,
259  amf::RandomAcolInitialization<>,
262 
263 #endif // #ifdef MLPACK_USE_CXX11
264 
265 } // namespace amf
266 } // namespace mlpack
267 
268 // Include implementation.
269 #include "amf_impl.hpp"
270 
271 #endif // MLPACK_METHODS_AMF_AMF_HPP
272 
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:235
This class computes SVD using complete incremental batch learning, as described in the following pape...
InitializationRuleType initializationRule
Instantiated initialization Rule.
Definition: amf.hpp:136
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:78
UpdateRuleType & Update()
Modify the update rule.
Definition: amf.hpp:130
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.
Definition: binarize.hpp:18
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::SVDBatchLearning > SparseSVDBatchFactorizer
Add simple typedefs.
Definition: amf.hpp:199
UpdateRuleType update
Instantiated update rule.
Definition: amf.hpp:138
The core includes that mlpack expects; standard C++ includes and Armadillo.
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:248
InitializationRuleType & InitializeRule()
Modify the initialization rule.
Definition: amf.hpp:125
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:41
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:210
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:261
amf::AMF< amf::SimpleResidueTermination, amf::RandomAcolInitialization<>, amf::NMFALSUpdate > NMFALSFactorizer
Definition: amf.hpp:143
const UpdateRuleType & Update() const
Access the update rule.
Definition: amf.hpp:128
TerminationPolicyType & TerminationPolicy()
Modify the termination policy.
Definition: amf.hpp:119
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:134
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:222
const TerminationPolicyType & TerminationPolicy() const
Access the termination policy.
Definition: amf.hpp:116
const InitializationRuleType & InitializeRule() const
Access the initialization rule.
Definition: amf.hpp:122
The multiplicative distance update rules for matrices W and H.