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