14 #ifndef MLPACK_METHODS_SVDPLUSPLUS_SVDPLUSPLUS_IMPL_HPP 15 #define MLPACK_METHODS_SVDPLUSPLUS_SVDPLUSPLUS_IMPL_HPP 20 template<
typename OptimizerType>
23 const double lambda) :
24 iterations(iterations),
31 template<
typename OptimizerType>
33 const arma::mat& implicitData,
43 const int batchSize = 1;
44 Log::Warn <<
"The batch size for optimizing SVDPlusPlus is 1." 48 arma::sp_mat cleanedData;
49 CleanData(implicitData, cleanedData, data);
53 ens::StandardSGD optimizer(alpha, batchSize,
54 iterations * data.n_cols);
58 optimizer.Optimize(svdPPFunc, parameters);
61 const size_t numUsers = max(data.row(0)) + 1;
62 const size_t numItems = max(data.row(1)) + 1;
66 u = parameters.submat(0, numUsers, rank - 1, numUsers + numItems - 1).t();
67 v = parameters.submat(0, 0, rank - 1, numUsers - 1);
68 p = parameters.row(rank).subvec(numUsers, numUsers + numItems - 1).t();
69 q = parameters.row(rank).subvec(0, numUsers - 1).t();
70 y = parameters.submat(0, numUsers + numItems, rank - 1,
71 numUsers + 2 * numItems - 1);
76 template<
typename OptimizerType>
85 arma::mat implicitData = data.submat(0, 0, 1, data.n_cols - 1);
86 Apply(data, implicitData, rank, u, v, p, q, y);
89 template<
typename OptimizerType>
91 arma::sp_mat& cleanedData,
92 const arma::mat&
data)
96 arma::umat locations(2, implicitData.n_cols);
97 arma::vec values(implicitData.n_cols);
98 for (
size_t i = 0; i < implicitData.n_cols; ++i)
101 locations(1, i) = ((arma::uword) implicitData(0, i));
102 locations(0, i) = ((arma::uword) implicitData(1, i));
107 const size_t maxItemID = (size_t) max(data.row(1)) + 1;
108 const size_t maxUserID = (size_t) max(data.row(0)) + 1;
111 cleanedData = arma::sp_mat(locations, values, maxItemID, maxUserID);
This class contains methods which are used to calculate the cost of SVD++'s objective function...
Definition: svdplusplus_function.hpp:31
SVDPlusPlus(const size_t iterations=10, const double alpha=0.001, const double lambda=0.1)
Constructor of SVDPlusPlus.
Definition: svdplusplus_impl.hpp:21
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
const arma::mat & GetInitialPoint() const
Return the initial point for the optimization.
Definition: svdplusplus_function.hpp:107
void Apply(const arma::mat &data, const arma::mat &implicitData, const size_t rank, arma::mat &u, arma::mat &v, arma::vec &p, arma::vec &q, arma::mat &y)
Trains the model and obtains user/item matrices, user/item bias, and item implicit matrix...
Definition: svdplusplus_impl.hpp:32
static MLPACK_EXPORT util::PrefixedOutStream Warn
Prints warning messages prefixed with [WARN ].
Definition: log.hpp:87
static void CleanData(const arma::mat &implicitData, arma::sp_mat &cleanedData, const arma::mat &data)
Converts the User, Item matrix of implicit data to Item-User Table.
Definition: svdplusplus_impl.hpp:90