Ok, thanks for your support. Eugenio
2015-02-11 11:54 GMT+01:00 Juanjo Ramos <[email protected]>: > Yes. You approach sounds about right. > > As far as I know, you just cannot not pass a file to Mahout with user > similarities and it will create a UserSimilarity object as it can do with > the DataModel. > > When I have done something like that in the past, you need to build your > own thing of parsing the file and loading it into memory. > > On Wed, Feb 11, 2015 at 10:42 AM, Eugenio Tacchini < > [email protected]> wrote: > > > Yes, I know I can implement a custom user similarity but what I want to > do > > is passing to mahout fixed, pre-computed user similarities I have already > > stored in a text file in the easiest way possible, since I am not a Java > > programmer. > > > > If there is no way to do it, I will implement CustomUserSimilarity just > by > > reading the text file, storing the file in memory and returning the > > corresponding similarity. I should do that making sure the read of the > text > > file is done just once, though. > > > > Eugenio > > > > > > > > 2015-02-11 11:28 GMT+01:00 Juanjo Ramos <[email protected]>: > > > > > You can create your custom class with your similarity implementation. > All > > > you need is that class to implement the UserSimilarity interface and > use > > it > > > here > > > UserSimilarity similarity = new PearsonCorrelationSimilarity(dm); > > > > > > instead of the PearsonCorrelationSimilarity. > > > > > > UserSimilarity similarity = new CustomUserSimilarity(dm); // > > > CustomUserSimilarity > > > implements UserSimilarity > > > > > > If the implementation of that CustomUserSimilarity is in C, you may > want > > to > > > look into JNI (Java Native Interface) to call C code from Java. > > > > > > Best, > > > Juanjo. > > > > > > On Wed, Feb 11, 2015 at 9:48 AM, Eugenio Tacchini < > > > [email protected]> wrote: > > > > > > > Hello Pat and thanks for your reply, > > > > I know that when users >> items normally item-based works better and > I > > > > don't assume my similarity metric works better but I have, for > research > > > > purposes, to compare: > > > > > > > > - RMSE produced by a pearson correlation user-based algorithm VS > > > > - RMSE produced by a user-based algorithm where similarities are > > computed > > > > in a completely different and not standard way (algorithm implemented > > in > > > C) > > > > > > > > so I am looking for a way to assign manually the user similarities; > the > > > > test will be performed just on a couple of datasets so it's fine if I > > > have > > > > to hard-code the assignment. > > > > > > > > Eugenio > > > > > > > > > > > > 2015-02-10 23:58 GMT+01:00 Pat Ferrel <[email protected]>: > > > > > > > > > There are many algorithms in Mahout but not all are equal. Some > > > > > combinations never perform well even though they are described in > > > Mahout > > > > in > > > > > Action. The combination below is probably not the best. > > > > > > > > > > You seem to assume your user similarity metric is better than > > Mahout’s? > > > > Do > > > > > you have more users or items? > > > > > > > > > > If I were you I'd try user or item based recs in Mahout using LLR > > > > > similarity. It’s always performed best when I’ve compared. I say > this > > > > > because I know of no way to do what you ask without writing some > code > > > and > > > > > partly because I bet it will outperform. > > > > > > > > > > Also be aware that the only good way to compare completely > different > > > > > recommenders is A/B user testing. > > > > > > > > > > On Feb 10, 2015, at 3:39 AM, Eugenio Tacchini < > > > > [email protected]> > > > > > wrote: > > > > > > > > > > Hi all, > > > > > I am new to mahout but I work with recommender systems, I have just > > > tried > > > > > to implement a simple user-based recommender: > > > > > > > > > > DataModel dm = new FileDataModel(new File("data/ratings.dat")); > > > > > > > > > > UserSimilarity similarity = new PearsonCorrelationSimilarity(dm); > > > > > > > > > > UserNeighborhood neighborhood = new > > > > > ThresholdUserNeighborhood(0.1,similarity, dm); > > > > > > > > > > UserBasedRecommender r = new GenericUserBasedRecommender(dm, > > > > neighborhood, > > > > > similarity); > > > > > > > > > > I would like to compare the results of this recommender with > another > > I > > > > > implemented using another technology. The only differences between > > the > > > > two > > > > > algorithms is the way I choose neighbors; since I am not very > fluent > > in > > > > > Java, instead of implementing the second algorithm in mahout, I > would > > > > like > > > > > to manually specify the neighbors for each user, is this possible? > > > Which > > > > is > > > > > the easiest way to provide an alternative user-user similarity > matrix > > > > > (computed using my algorithm)? > > > > > > > > > > Just to recap: I want to use GenericUserBasedRecommender but > > providing > > > an > > > > > alternative users similarity matrix, without reimplementing my > > > similarity > > > > > algorithm in Java. Basically if I could import the similarities > from > > a > > > > text > > > > > file it would be great, but other methods are fine as well. > > > > > > > > > > Thanks a lot in advance. > > > > > > > > > > Eugenio Tacchini > > > > > > > > > > > > > > > > > > > >
