[
https://issues.apache.org/jira/browse/MAHOUT-572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12976404#action_12976404
]
Sebastian Schelter commented on MAHOUT-572:
-------------------------------------------
Hi Sean,
I realize I should have written a few more words on the changes I made, sorry
if I caused confusion.
I tried to implement an additional factorization algorithm and realized that
the old SVDRecommender contained both training and recommendation code and I
had to separate those two concerns before I could implement my changes. So now
we have a generic SVDRecommender that can use a matrix factorization to compute
recommendations.
The big difference is that the factorization algorithm has moved out of the
recommender into a so called "Factorizer". The
ExpectationMaximizationSVDFactorizer is doing the factorizing exactly the same
way the old SVDRecommender was doing it. So using the SVDRecommender together
with ExpectationMaximizationSVDFactorizer will give the old SVDRecommender.
I supplied an alternative factorization algorithm in ALSWRFactorizer, so users
can now choose which approach fits their needs better. The code also allows
custom and additional "Factorizer" implementations to be used.
To summarize, Matrix factorization based recommendation now works like this:
A "Factorizer" is used to create a "Factorization" of the DataModel (the rating
matrix). This "Factorization" internally consists of two new matrices which
represent the users and items projected onto a k-dimensional feature space (k
is chosen upfront by the developer). The SVDRecommender can use those matrices
to estimate the preference of a user towards an item for which it only needs to
compute the dot-product of the according user and item feature vectors.
Conceptually it would now also be possible to compute the factorization with
Map/Reduce and load it into the SVDRecommender afterwards (as long as the
resulting matrices fit into memory).
> Non-distributed implementation of ALS-WR matrix factorization
> -------------------------------------------------------------
>
> Key: MAHOUT-572
> URL: https://issues.apache.org/jira/browse/MAHOUT-572
> Project: Mahout
> Issue Type: New Feature
> Components: Collaborative Filtering
> Affects Versions: 0.5
> Reporter: Sebastian Schelter
> Fix For: 0.5
>
> Attachments: MAHOUT-572.patch
>
>
> I created a non-distributed implementation of the algorithm described in
> "Large-scale Parallel Collaborative Filtering for the Netflix Prize" available
> at
> http://www.hpl.hp.com/personal/Robert_Schreiber/papers/2008%20AAIM%20Netflix/netflix_aaim08(submitted).pdf.
> This gives more choice for users that need an online SVD Recommender and
> might be a useful starting point to implementing code that automatically
> finds a near-optimal regularization parameter for the distributed version of
> the algorithm in MAHOUT-542.
> Along with the patch goes a refactoring and polishing of the SVD Recommender
> code that separates the factorization computation from the Recommender
> implementation. This way it should easily be possible to try out different
> factorization approaches with our SVDRecommender.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.