mahout-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juanjo Ramos <jjar...@gmail.com>
Subject Re: How can I manually specify user similarities in the user-based algorithm?
Date Wed, 11 Feb 2015 10:54:40 GMT
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 <
eugenio.tacchini@gmail.com> 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 <jjarmos@gmail.com>:
>
> > 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 <
> > eugenio.tacchini@gmail.com> 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 <pat@occamsmachete.com>:
> > >
> > > > 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 <
> > > eugenio.tacchini@gmail.com>
> > > > 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
> > > >
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message