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
>

Reply via email to