Hello,

I recently implemented a distributed user-based collaborative filtering
algorithm.  I've tested it experimentally and found that it is better suited
to Mendeley's data set for generating recommendations than the item-based
implementation
(http://www.slideshare.net/KrisJack/mahout-becomes-a-researcher-large-scale-recommendations-at-mendeley).
 
This is mostly because Mendeley's data set has far more items than users.

I'd like to contribute this code to the Mahout project.  This will be the
first patch that I write for Mahout so I'm following the instructions at
https://cwiki.apache.org/MAHOUT/how-to-contribute.html

In brief, so far I've taken the code for the existing
org.apache.mahout.cf.taste.hadoop.item.RecommenderJob and created a new
org.apache.mahout.cf.taste.hadoop.user.RecommenderJob.  With help from Sean
Owen, I followed a similar approach to the item-based implementation, but
multiplied a user-user matrix with a user-item vector rather than an
item-item matrix with an item-user vector.  The result of the multiplication
then needs to be transposed in order to output recommendations by user id.

Rather than changing the item-based code, I've created new classes for the
user-based version, which tend to be modified versions of the originals.  It
would be much tidier to merge these together, where possible, and to
parametrise them.  I didn't want to change the item-based code straight off,
however, without consulting you all.

Would be great to get some feedback.

Best,
Kris

--
View this message in context: 
http://lucene.472066.n3.nabble.com/Distributed-User-based-Collaborative-Filtering-tp3952692.html
Sent from the Mahout Developer List mailing list archive at Nabble.com.

Reply via email to