Hi Daniel, so SVD is a model based recommender. Here is the definition from my master thesis: ... Model based approaches use statistical models from machine learning research to produce a model to find the underlying logic for preferences. They try to learn a model, for example, a baysian belief network. As an alternative, a dimensionality reduction technique like SVD [44] is used to extract the hidden factors. ... 2010 An architecture for evaluating recommender systems in real world scenarios - Manuel Blechschmidt
Mahout contains a SVDRecommender. The tricky part for SVD is the estimation of the 3 matrixes most of the time called U, S and V. Mahout contains two implementation both from Sebastian Schelter as far as I know for estimating them. The first one is an ALSWRFActorizer based on the following paper: Large-scale Collaborative Filtering for the Netflix Prize Alternating-Least-Squares with Weighted-λ-Regularization http://www.hpl.hp.com/personal/Robert_Schreiber/papers/2008%20AAIM%20Netflix/netflix_aaim08(submitted).pdf The second one is a Expectation Maximization SVD Factorizer. http://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm If you want to understand SVD I would recommend the following R examples: https://github.com/ManuelB/facebook-recommender-demo/blob/master/docs/BedConExamples.R You can find a Mahout version using the ExpectationMaximationRecommender here: https://github.com/ManuelB/facebook-recommender-demo/blob/master/src/main/java/de/apaxo/bedcon/AnimalFoodRecommender.java The both examples above are documented in the following presentation: http://www.slideshare.net/ManuelB86/how-to-build-a-recommender-system-based-on-mahout-and-java-ee Further there is a SVD implementation from Sean Owen and his new company myrrix.com it is also based on an Alternate Least Square algorithm for factorization: http://myrrix.com/docs/serving/javadoc/net/myrrix/online/generation/AlternatingLeastSquares.html "Collaborative Filtering for Implicit Feedback Datasets" by Yifan Hu, Yehuda Koren, and Chris Volinsky http://myrrix.com/docs/serving/javadoc/net/myrrix/online/generation/www2.research.att.com/~yifanhu/PUB/cf.pdf /Manuel [44] Koren, Yehuda ; Bell, Robert ; Volinsky, Chris: Matrix Factorization Tech- niques for Recommender Systems. In: IEEE Computer 42 (2009), Nr. 8, S. 30–37. http://dx.doi.org/10.1109/MC.2009.263. – DOI 10.1109/MC.2009.263 On 18.04.2012, at 21:49, Daniel Quach wrote: > I am basing my knowledge off this paper: > http://www.grouplens.org/papers/pdf/webKDD00.pdf > > Your book provided algorithms for the user-based, item-based, and slope one > recommendation, but none for the SVDRecommender (I'm guessing because it was > experimental) > > Does the SVDRecommender just compute the resultant matrices and follow a > formula similar to the one at the top of page 5 in the linked paper? I think > I understand the process of SVD but I'm just wondering how it's exactly > applied to obtain recommendations in mahout's case. > > > On Apr 18, 2012, at 12:13 PM, Sean Owen wrote: > >> Yes you could call it a model-based approach. I suppose I was thinking >> more of Bayesian implementations when I wrote that sentence. >> >> SVD is the Singular Value Decomposition -- are you asking what the SVD >> is, or what matrix factorization is, or something about specific code >> here? You can look up the SVD online. >> >> On Wed, Apr 18, 2012 at 12:49 PM, Daniel Quach <[email protected]> wrote: >>> I had originally thought the experimental SVDrecommender in mahout was a >>> model-based collaborative filtering technique. Looking at the book "Mahout >>> in Action", it mentions that model-based recommenders are a future goal for >>> mahout, which implies to me that the SVDRecommender is not considered >>> model-based. >>> >>> How exactly does the SVDRecommender work in mahout? I can't seem to find >>> any description of the algorithm underneath it > -- Manuel Blechschmidt Dortustr. 57 14467 Potsdam Mobil: 0173/6322621 Twitter: http://twitter.com/Manuel_B
