Creating a User-Based Recommender

 

Prerequisites

Create a java project in your favorite IDE and make sure mahout is on the classpath. The easiest way to accomplish this is by importing it via maven as described on the

 

Recomenders :

 

Mahout's recommenders expect interactions between users and items as input.

 

Need the input in the form of

 

 userID,itemID,value.

 

Here userID and itemID refer to a particular user and a particular item

 

and value denotes the strength of the interaction (e.g. the rating given to a movie).

 

 userID,itemID,value.

 

1,10,1.0

1,11,2.0

1,12,5.0

1,13,5.0

1,14,5.0

1,15,4.0

1,16,5.0

1,17,1.0

1,18,5.0

2,10,1.0

2,11,2.0

2,15,5.0

2,16,4.5

 

Create a file called "dataset.csv" and copy the following example interactions into the file.

 

 

Creating a user-based recommender

Create a class called SampleRecommender with a main method.

 

The first thing we have to do is load the data from the file. Mahout's recommenders use an interface called DataModel to handle interaction data. You can load our made up interactions like this:

 

DataModel model = new FileDataModel(new File("/path/to/dataset.csv"));

 

For More info about DataModel refer below

DataModel:http://archive.cloudera.com/cdh4/cdh/4/mahout-0.7-cdh4.3.2/mahout-core/org/apache/mahout/cf/taste/model/DataModel.html

 

In this example, we want to create a user-based recommender. The idea behind this approach is that when we want to compute recommendations for a particular users, we look for other users with a similar taste and pick the recommendations from their items. For finding similar users, we have to compare their interactions. There are several methods for

 

doing this. One popular method is to compute the correlation coefficient between their interactions. In Mahout, you use this method as follows:

 

UserSimilarity similarity = new PearsonCorrelationSimilarity(model);

 

· user similarity: a measure which given two users, will return a number representing how similar they are

 

The next thing we have to do is to define which similar users we want to leverage for the recommender. For the sake of simplicity, we'll use all that have a similarity greater than 0.1. This is implemented via a ThresholdUserNeighborhood:

 

UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);

 

· Neighborhood: for finding the neighborhood of a given user

Now we have all the pieces to create our recommender:

 

UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

 

We can easily ask the recommender for recommendations now. If we wanted to get three items recommended for the user withuserID 2, we would do it like this:

 

List recommendations = recommender.recommend(2, 3);

for (RecommendedItem recommendation : recommendations) {

System.out.println(recommendation);

}

 

 

Congratulations, you have built your first recommender! 


For full Program refer the attachment