16 #ifndef MLPACK_METHODS_CF_CF_HPP 17 #define MLPACK_METHODS_CF_CF_HPP 69 CFType(
const size_t numUsersForSimilarity = 5,
70 const size_t rank = 0);
92 template<
typename MatType,
typename DecompositionPolicy = NMFPolicy>
93 CFType(
const MatType& data,
94 DecompositionPolicy& decomposition = DecompositionPolicy(),
95 const size_t numUsersForSimilarity = 5,
96 const size_t rank = 0,
97 const size_t maxIterations = 1000,
98 const double minResidue = 1e-5,
99 const bool mit =
false);
112 template<
typename DecompositionPolicy>
113 void Train(
const arma::mat& data,
114 DecompositionPolicy& decomposition,
115 const size_t maxIterations = 1000,
116 const double minResidue = 1e-5,
117 const bool mit =
false);
130 template<
typename DecompositionPolicy>
131 void Train(
const arma::sp_mat& data,
132 DecompositionPolicy& decomposition,
133 const size_t maxIterations = 1000,
134 const double minResidue = 1e-5,
135 const bool mit =
false);
142 Log::Warn <<
"CFType::NumUsersForSimilarity(): invalid value (< 1) " 143 "ignored." << std::endl;
146 this->numUsersForSimilarity = num;
152 return numUsersForSimilarity;
156 void Rank(
const size_t rankValue)
158 this->rank = rankValue;
168 const arma::mat&
W()
const {
return w; }
170 const arma::mat&
H()
const {
return h; }
181 arma::Mat<size_t>& recommendations);
191 arma::Mat<size_t>& recommendations,
192 const arma::Col<size_t>& users);
195 static void CleanData(
const arma::mat& data, arma::sp_mat& cleanedData);
203 double Predict(
const size_t user,
const size_t item)
const;
217 void Predict(
const arma::Mat<size_t>& combinations,
218 arma::vec& predictions)
const;
223 template<
typename Archive>
224 void serialize(Archive& ar,
const unsigned int );
228 size_t numUsersForSimilarity;
236 arma::sp_mat cleanedData;
239 typedef std::pair<double, size_t> Candidate;
242 struct CandidateCmp {
243 bool operator()(
const Candidate& c1,
const Candidate& c2)
245 return c1.first > c2.first;
254 #include "cf_impl.hpp" const arma::sp_mat & CleanedData() const
Get the cleaned data matrix.
void NumUsersForSimilarity(const size_t num)
Sets number of users for calculating similarity.
void serialize(Archive &ar, const unsigned int)
Serialize the CFType model to the given archive.
The core includes that mlpack expects; standard C++ includes and Armadillo.
const arma::mat & H() const
Get the Item Matrix.
static void CleanData(const arma::mat &data, arma::sp_mat &cleanedData)
Converts the User, Item, Value Matrix to User-Item Table.
size_t Rank() const
Gets rank parameter for matrix factorization.
void GetRecommendations(const size_t numRecs, arma::Mat< size_t > &recommendations)
Generates the given number of recommendations for all users.
static MLPACK_EXPORT util::PrefixedOutStream Warn
Prints warning messages prefixed with [WARN ].
This class implements Collaborative Filtering (CF).
size_t NumUsersForSimilarity() const
Gets number of users for calculating similarity.
CFType(const size_t numUsersForSimilarity=5, const size_t rank=0)
Initialize the CFType object without performing any factorization.
void Train(const arma::mat &data, DecompositionPolicy &decomposition, const size_t maxIterations=1000, const double minResidue=1e-5, const bool mit=false)
Train the CFType model (i.e.
double Predict(const size_t user, const size_t item) const
Predict the rating of an item by a particular user.
const arma::mat & W() const
Get the User Matrix.
void Rank(const size_t rankValue)
Sets rank parameter for matrix factorization.