Search code examples
mahout

Mahout recommendation returns empty set


I am trying to run KnnItemBasedRecommender using sample data "intro.csv" using the below code, however I am getting empty set as result.

public static void main(String[] args) throws Exception {

        DataModel model = NeuvidisData.convertToDataModel();

        //RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();

        RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
            @Override
            public Recommender buildRecommender(DataModel model) {
                ItemSimilarity similarity = new LogLikelihoodSimilarity(model);
                Optimizer optimizer = new ConjugateGradientOptimizer();
                return new KnnItemBasedRecommender(model, similarity, optimizer, 2);
            }
        };

        Recommender rec = recommenderBuilder.buildRecommender(model);
        List<RecommendedItem>  rcList  = rec.recommend(1, 2);

        for(RecommendedItem item:rcList)
        {
            System.out.println("item:");
            System.out.println(item);
        }
    }

Can anybody help me?


Solution

  • The following code worked for me.

                    ItemSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
                    Optimizer optimizer =  new ConjugateGradientOptimizer();
                    Recommender recommender = new KnnItemBasedRecommender(dataModel, similarity, optimizer, 5);
    

    Used PearsonCorrelationSimilarity instead of LogLikelihoodSimilarity.

    This solution may work for a specific set of data. So, this solution is based on your data set.