4
$\begingroup$

I'm trying to build a recommendation system, but I only have data on what my users have "liked", i.e. all non-missing data has the same numeric value.

Is it possible for me to use matrix factorization methods without actually having "ratings"? (Multiple numeric values for user ratings rather than just an indicator that a user has "liked" the item.) If so, how?

$\endgroup$
2
$\begingroup$

This problem is usually called implicit feedback. The typical solution is similar to word2vec noise-contrastive estimation:

  • predict likes, with log-loss,
  • use your set of actual likes (p=1) and randomly generate set of potential non-likes (p=0).

Usually you want to generate this non-likes set from the similar distribution, i.e. same distribution of users, and of pages (or anything they like). The easiest way to do so is to take a two random entries, and take user from one, and page from the other.

See:

See Improving Pairwise Learning for Item Recommendation from Implicit Feedback by Steffen Rendle and Christoph Freudenthaler (2014). The former authored the original paper Factorization Machines (2010), which I highly recommend reading.

$\endgroup$
1
$\begingroup$

Yes, this is known as "unary" data (or often "implicit" data if you're only using clicks or impressions). The most common matrix factorization technique used is probably alternating least squares outlined in this paper (PDF): Hu, Koren, and Volinsky.There are implementations in many common machine learning software packages such as Mahout, Myrrix, and GraphLab.

$\endgroup$
  • $\begingroup$ This link is not working. $\endgroup$ – Piotr Migdal Jun 17 '17 at 9:52
  • 1
    $\begingroup$ @Piotr Migdal Apparently it is Yifan Hu, Yehuda Koren, Chris Volinsky "Collaborative Filtering for Implicit Feedback Datasets" yifanhu.net/PUB/cf.pdf $\endgroup$ – Mark L. Stone Jun 17 '17 at 10:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.