Yes matrix factorization approaches will be able to construct an answer for any item -- it may or may not be a good one.
SVDRecommender works by predicting ratings but Myrrix does not so you can only do precision/recall tests in that case. There is similar evaluation code in the project to help this. On Fri, Jun 15, 2012 at 6:10 AM, EDUARDO ANTONIO BUITRAGO ZAPATA < [email protected]> wrote: > 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 >
