mlpack
bias_svd_impl.hpp
Go to the documentation of this file.
1 
14 #ifndef MLPACK_METHODS_BIAS_SVD_BIAS_SVD_IMPL_HPP
15 #define MLPACK_METHODS_BIAS_SVD_BIAS_SVD_IMPL_HPP
16 
17 namespace mlpack {
18 namespace svd {
19 
20 template<typename OptimizerType>
21 BiasSVD<OptimizerType>::BiasSVD(const size_t iterations,
22  const double alpha,
23  const double lambda) :
24  iterations(iterations),
25  alpha(alpha),
26  lambda(lambda)
27 {
28  // Nothing to do.
29 }
30 
31 template<typename OptimizerType>
32 void BiasSVD<OptimizerType>::Apply(const arma::mat& data,
33  const size_t rank,
34  arma::mat& u,
35  arma::mat& v,
36  arma::vec& p,
37  arma::vec& q)
38 {
39  // batchSize is 1 in our implementation of Bias SVD.
40  // batchSize other than 1 has not been supported yet.
41  const int batchSize = 1;
42  Log::Warn << "The batch size for optimizing BiasSVD is 1."
43  << std::endl;
44 
45  // Make the optimizer object using a BiasSVDFunction object.
46  BiasSVDFunction<arma::mat> biasSVDFunc(data, rank, lambda);
47  ens::StandardSGD optimizer(alpha, batchSize,
48  iterations * data.n_cols);
49 
50  // Get optimized parameters.
51  arma::mat parameters = biasSVDFunc.GetInitialPoint();
52  optimizer.Optimize(biasSVDFunc, parameters);
53 
54  // Constants for extracting user and item matrices.
55  const size_t numUsers = max(data.row(0)) + 1;
56  const size_t numItems = max(data.row(1)) + 1;
57 
58  // Extract user and item matrices, user and item bias from the optimized
59  // parameters.
60  u = parameters.submat(0, numUsers, rank - 1, numUsers + numItems - 1).t();
61  v = parameters.submat(0, 0, rank - 1, numUsers - 1);
62  p = parameters.row(rank).subvec(numUsers, numUsers + numItems - 1).t();
63  q = parameters.row(rank).subvec(0, numUsers - 1).t();
64 }
65 
66 } // namespace svd
67 } // namespace mlpack
68 
69 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
void Apply(const arma::mat &data, const size_t rank, arma::mat &u, arma::mat &v, arma::vec &p, arma::vec &q)
Trains the model and obtains user/item matrices and user/item bias.
Definition: bias_svd_impl.hpp:32
This class contains methods which are used to calculate the cost of BiasSVD&#39;s objective function...
Definition: bias_svd_function.hpp:31
const arma::mat & GetInitialPoint() const
Return the initial point for the optimization.
Definition: bias_svd_function.hpp:104
BiasSVD(const size_t iterations=10, const double alpha=0.02, const double lambda=0.05)
Constructor of Bias SVD.
Definition: bias_svd_impl.hpp:21
static MLPACK_EXPORT util::PrefixedOutStream Warn
Prints warning messages prefixed with [WARN ].
Definition: log.hpp:87