Hi Mahout Experts,

                   
I'm totally new into mahout and badly indeed of some expert opinions. I 
wanted
to implement a recommendation engine using mahout and hadoop, as the 
initial
stage I just tried a recommender class with mahout alone which worked 
fine . I’m
using eclipse for my development and to test I just ran the code from my
eclipse like a simple java class with the required jars already added on
 to project build path. The code I used for testing User Similarity 
recommendation is as follows


 


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


            


            String recsFile="D://mahoutFiles//SampleData.txt";


            int
neighbourhoodSize=7;


            long
ssoId=206008129;


            int
noOfRecommendations=5;


            try {


                  FileDataModel
dataModel = new FileDataModel(new File(recsFile));


                  UserSimilarity
userSimilarity = new PearsonCorrelationSimilarity(dataModel);


                  UserNeighborhood
neighborhood =new NearestNUserNeighborhood(neighbourhoodSize, userSimilarity,
dataModel);


                  Recommender
recommender =new GenericUserBasedRecommender(dataModel, neighborhood,
userSimilarity);


                  List<RecommendedItem>
recommendations =recommender.recommend(ssoId, noOfRecommendations);


                  for
(RecommendedItem recommendedItem : recommendations) {


                        System.out.println(recommendedItem.getItemID());


                        System.out.print(" Item:
"+dataModel.getItemIDAsString(recommendedItem.getItemID()));


                        System.out.println(" and
value: "+recommendedItem.getValue());


                  }


            } catch (IOException e)
{


                  e.printStackTrace();


            } catch (TasteException
e) {


                  e.printStackTrace();


            }


 


      }


The code I used for testing Item Similarity recommendation is as follows

public static void main(String[] args) {

        String recsFile="D://mahoutFiles//SampleData.txt";

        long ssoId=206008129;

        int noOfRecommendations=5;

        String itemId="GE-CORPPROG-IMLP-PTOOLS";

        try {

            //item similarity recommendation based on User

            FileDataModel dataModel = new FileDataModel(new File(recsFile));

            ItemSimilarity itemSimilarity = new 
LogLikelihoodSimilarity(dataModel);

            ItemBasedRecommender recommender =new 
GenericItemBasedRecommender(dataModel, itemSimilarity);

            List<RecommendedItem> recommendations =recommender.recommend(ssoId, 
noOfRecommendations);

           

            for (RecommendedItem recommendedItem : recommendations) {

                System.out.println(recommendedItem);

             }

           

            

            //item similarity recommendation based on item

            recommender =new GenericItemBasedRecommender(dataModel, 
itemSimilarity);

            recommendations= 
recommender.mostSimilarItems(dataModel.readItemIDFromString(itemId), 
noOfRecommendations);

            System.out.println("Item recommendations based on Item");

            for (RecommendedItem recommendedItem : recommendations) {

                System.out.println(recommendedItem);

              }

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (TasteException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

  

    }


The issues or concerns I have are as follows.



Problem 1:


This code produces relevant
recommendations when I have given my file in the format <User id>, <item id>, 
<preference value>.
But in my actual sample file I have just the user id and Item id alone, no
preference value. On my reference since it is kind of a Boolean preference, I 
tried
using PearsonCorrelationSimilarity
as well as TanimotoCoefficientSimilarity but it is not giving me any
recommendations. My actual file format that I'd want to process would be in the 
format <user id>,
<item id>, . I can see it is processing all users in my file( from my
eclipse console logs) but no recommendations are being produced as output.


 


Problem 2:


                I
want to use my mahout recommender in Hadoop distributed environment. I don’t 
have
a clue about it. I tried web help but most blogs refer me to 
org.apache.mahout.cf.taste.hadoop.item.RecommenderJob,
 the code
available with mahout src. Unfortunately I’m not able to get much from 
the code
as it is a bit complicated for a starter like me. (I have done a couple 
of Map reduce project on text files processing before ). Could someone 
please help me
out with  very basic simple code snippets to run my User Similarity and 
Item Similarity Recommendation code
on hadoop environment . 





 It would be much 
helpful if you could share me with some informative tutorials which 
could make my initial steps in Mahout comfortable  before i could start 
exploring in 
depth. 





Thank you




Thanks and Regards
        Bejoy.K.S


                                          

Reply via email to