mlpack 3.4.2
regularized_svd_function.hpp
Go to the documentation of this file.
1
13#ifndef MLPACK_METHODS_REGULARIZED_SVD_REGULARIZED_FUNCTION_SVD_HPP
14#define MLPACK_METHODS_REGULARIZED_SVD_REGULARIZED_FUNCTION_SVD_HPP
15
16#include <mlpack/prereqs.hpp>
17#include <ensmallen.hpp>
18
19namespace mlpack {
20namespace svd {
21
28template <typename MatType = arma::mat>
30{
31 public:
41 RegularizedSVDFunction(const MatType& data,
42 const size_t rank,
43 const double lambda);
44
48 void Shuffle();
49
55 double Evaluate(const arma::mat& parameters) const;
56
65 double Evaluate(const arma::mat& parameters,
66 const size_t start,
67 const size_t batchSize = 1) const;
68
76 void Gradient(const arma::mat& parameters,
77 arma::mat& gradient) const;
78
91 template <typename GradType>
92 void Gradient(const arma::mat& parameters,
93 const size_t start,
94 GradType& gradient,
95 const size_t batchSize = 1) const;
96
98 const arma::mat& GetInitialPoint() const { return initialPoint; }
99
101 const arma::mat& Dataset() const { return data; }
102
104 size_t NumFunctions() const { return data.n_cols; }
105
107 size_t NumUsers() const { return numUsers; }
108
110 size_t NumItems() const { return numItems; }
111
113 double Lambda() const { return lambda; }
114
116 size_t Rank() const { return rank; }
117
118 private:
120 MatType data;
122 arma::mat initialPoint;
124 size_t rank;
126 double lambda;
128 size_t numUsers;
130 size_t numItems;
131};
132
133} // namespace svd
134} // namespace mlpack
135
140namespace ens {
141
148 template <>
149 template <>
150 inline double StandardSGD::Optimize(
152 arma::mat& parameters);
153
154 template <>
155 template <>
156 inline double ParallelSGD<ExponentialBackoff>::Optimize(
158 arma::mat& parameters);
159
160} // namespace ens
161
166#include "regularized_svd_function_impl.hpp"
167
168#endif
The data is stored in a matrix of type MatType, so that this class can be used with both dense and sp...
double Evaluate(const arma::mat &parameters, const size_t start, const size_t batchSize=1) const
Evaluates the cost function for one training example.
const arma::mat & Dataset() const
Return the dataset passed into the constructor.
size_t NumFunctions() const
Return the number of training examples. Useful for SGD optimizer.
void Shuffle()
Shuffle the points in the dataset.
RegularizedSVDFunction(const MatType &data, const size_t rank, const double lambda)
Constructor for RegularizedSVDFunction class.
double Lambda() const
Return the regularization parameters.
void Gradient(const arma::mat &parameters, const size_t start, GradType &gradient, const size_t batchSize=1) const
Evaluates the gradient of the cost function over one training example.
double Evaluate(const arma::mat &parameters) const
Evaluates the cost function over all examples in the data.
const arma::mat & GetInitialPoint() const
Return the initial point for the optimization.
void Gradient(const arma::mat &parameters, arma::mat &gradient) const
Evaluates the full gradient of the cost function over all the training examples.
size_t NumItems() const
Return the number of items in the data.
size_t NumUsers() const
Return the number of users in the data.
size_t Rank() const
Return the rank used for the factorization.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
The core includes that mlpack expects; standard C++ includes and Armadillo.