Share via


Taking the post a little further: "Generate movie recommendations using Apache Mahout with HDInsight" .

The post Generate movie recommendations using Mahout is a good introduction to Mahout. I've seen similar posts on the web and in books about Mahout that also use the same GroupLens Research movie ratings data.

I won't regurgitate the same info in the tutorial linked above. Rather, let's look at the results a little more deeply.

The result file part-r-0000 contains the movie recommendation results, something like:

1   [234:5.0...

3   ...272:4.649266]

These results can be parsed as User ID, Movie ID and recommendation score. The first 2 fields are easy enough to understand. The recommendation results can be used
if you are trying to predict a user's rating for an item but aren't useful in ranking recommendations.

To provide ranked recommendations SIMILARITY_LOGLIKELIHOOD would work better. In summary, SIMILARITY_LOGLIKELIHOOD doesn't use the users item rating rather it considers overlapping and non-overlapping users and items each user did and did not interact with. To me, log likelihood is kinda like gathering user feedback; focus on what users do, not what they say they do. Did the user interact/purchase/consume an item? Yes, then that's what log likelihood uses.

More information on how log likelihood works can be found here.

To use SIMILARITY_LOGLIKELIHOOD you only need a file with User ID and ID of the item/movie/etc. that the user has interacted with. Below we'll use the same data file from the tutorial.

Once you're setup for the tutorial then there's 2 options to slightly change and re-run it.

 

A) In the tutorial if you used the PowerShell script in the "Run the job" section just change the jobArguments to "SIMILARITY_LOGLIKELIHOOD".

View the output file "part-r-00000" per the tutorial.

 

B) Alternatively, I used the following command line with my local HDInsight Emulator:

Copy the u.data file from your local file system to HDFS:

 

hadoop fs -put u.data u.data

 

Run it:

hadoop jar C:\hdp\mahout-0.9.0.2.1.3.0-1981\core\target\mahout-core-0.9.0.2.1.3.0-1981-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_LOGLIKELIHOOD --input u.data --output udata_output

 Note: you may need to change the mahout version above to match your local machine.

 

Get the output file from HDFS and put it back into your local file system:

hadoop fs -getmerge udata_output udata_output.txt

 

View the file udata_output.txt

 

You'll notice that the recommendations are different when compared to the results you received from previously using SIMILARITY_COOCCURRENCE. In udata_output.txt
you can ignore the recommendation score and focus on the recommended item IDs.

There's a lot of data to look through but I'll let you determine whether SIMILARITY_COOCCURRENCE, SIMILARITY_LOGLIKELIHOOD or another Mahout similarity metric will best meet your needs.

I hope this post provided additional insight.

Comments

  • Anonymous
    February 08, 2015
    helpful.