Hi Steven
I tried my User Similarity recommendation using
GenericBooleanPrefUserBasedRecommender as you suggested but unfortunaley it is
not resolving my issue. I can see in logs that it is processing the entire
file(<UserId, ItemId>) but then in a few seconds the application is terminating
without giving me any recommendations. The code i tried is
FileDataModel dataModel = new FileDataModel(new File(recsFile));
UserSimilarity userSimilarity = new
TanimotoCoefficientSimilarity(dataModel);
UserNeighborhood neighborhood =new
NearestNUserNeighborhood(neighbourhoodSize, userSimilarity, dataModel);
Recommender recommender =new
GenericBooleanPrefUserBasedRecommender(dataModel, neighborhood, userSimilarity);
List<RecommendedItem> recommendations
=recommender.recommend(userId, noOfRecommendations);
System.out.println(recommendations);
I tried the same code with PearsonCorrelationSimilarity as well. Still it not
giving me any recommendations.
Is there any thing else I should change in my code to get in recommendations?
Thanks and Regards
Bejoy.K.S
> Date: Fri, 12 Nov 2010 10:28:16 +0000
> Subject: Re: FW: Mahout - Help needed - files with no preferences and
> integarting mahout with Hadoop
> From: [email protected]
> To: [email protected]
>
> Try using the generic boolean pref user based recommender instead of the
> generic user based recommender when using binary data.
>
> http://mahout.apache.org/javadoc/core/org/apache/mahout/cf/taste/impl/recommender/GenericBooleanPrefUserBasedRecommender.html
>
>
>
> On Fri, Nov 12, 2010 at 9:57 AM, bejoy ks <[email protected]> wrote:
>
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > 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
> >
> >
> >