Sean, thanks for your reply, it was very useful First I tried out the log-likelihood similarity, It gives me a few others items. Then I tried out the SVDRecommender, It gives me prediction for 656 items :D (I think the other items that are left also have prediction of 0)
The recommender has an average absolute deviation of ~1.13, I'll take a look at myrrix Thanks again. . 2012/6/14 Sean Owen <[email protected]> > The problem is the sparseness of your data. On average, each user made > about 1.3 ratings. Few users even had 2, I'd imagine. So, it is hard to > establish any similarity between any two users, because most users overlap > in 0 or 1 items, and that means Pearson correlation is undefined. > > (Using log-likelihood similarity would be slightly better, but probably not > going to change this much.) > > When two users do have a similarity, it yields almost no candidate items to > recommend since again users tend to barely rate more than the probably 2-3 > items that make them similar. > > Code is OK; data is probably insufficient. > > The matrix-factorization-based approaches in the code base may do a lot > better on super sparse data. For non-Hadoop-based jobs -- try > SVDRecommender. It will certainly give an answer. > > (I'm working very directly on a matrix-factorization-based approach based > on Mahout -- if something like SVDRecommender works for you then I do think > you'd benefit from trying it at myrrix.com. It will do fine on sparse data > like this where neighborhood-based technique have some trouble.) > > > On Thu, Jun 14, 2012 at 10:47 PM, EDUARDO ANTONIO BUITRAGO ZAPATA < > [email protected]> wrote: > > > Dear mahout community, > > > > I have been making some experiments with a dataset that I've scraped from > > epinions.com (Electronics category). The dataset has the following > > characteristics: > > > > # Users: 32098 > > # Products: 8280 > > # Reviews: 43139 > > > > Sparseness: 99.98% > > > > I trained a recommender using the example code shown in "mahout in > action" > > (bellow is the code). I want to recommend ALL items the user hasn't > rated > > yet because I want to know what would be the rating the user give for a > > specific item (So that's why you see recommender.recommend(92833, 100)). > I > > made the following two experiments: > > > > 1. Using new NearestNUserNeighborhood (2,similarity, model); > > But no recommendations are made > > > > 2. Using new NearestNUserNeighborhood (10,similarity, model); > > But only one recommendation is made RecommendedItem[item:27515, > > value:3.7595918] > > > > I would expect to have more recommendations, ¿am I doing something wrong? > > ¿maybe is the sparseness of the matrix? I would appreciate any guidance. > > Thanks for looking > > > > #####CODE##### > > > > public static void main(String[] args) throws Exception { > > > > DataModel model = new FileDataModel(new File(PATH_FILE)); > > > > RecommenderEvaluator evaluator = new > > AverageAbsoluteDifferenceRecommenderEvaluator(); > > > > RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { > > @Override > > public Recommender buildRecommender(DataModel model) > > throws TasteException { > > UserSimilarity similarity = new PearsonCorrelationSimilarity( > > model); > > UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, > > similarity, model); > > return new GenericUserBasedRecommender(model, neighborhood, > > similarity); > > } > > }; > > > > double score = evaluator.evaluate(recommenderBuilder, null, model, 0.8, > > 1.0); > > System.out.println(score); > > > > Recommender recommender = recommenderBuilder.buildRecommender(model); > > > > List<RecommendedItem> recommendations = recommender.recommend(92833, > 100); > > > > for (RecommendedItem recommendation : recommendations) { > > System.out.println(recommendation); > > } > > } > > > > -- > > EDUARDO BUITRAGO > > > -- EDUARDO BUITRAGO Est. Msc. en Ingeniería - Sistemas y Computación - Universidad de los Andes Ing. de Sistemas - Universidad Francisco de Paula Santander Cisco Certified Network Associate - CCNA
