Re: Own recommender

2015-01-21 Thread Ted Dunning
Juanjo,

Using the Taste components, it will be almost impossible to get really high
performance.  For that, using the itemsimilarity program to feed a search
index is the best alternative.

The scala version of the itemsimilarity program is available in Scala and
could be called fairly easily as a library.  The older map-reduce version
is not easily used as a library.


On Wed, Jan 21, 2015 at 2:20 AM, Juanjo Ramos jjar...@gmail.com wrote:

 Hi Manuel,
 Thanks for the update.

 I'm using Mahout in a simple Java application myself. Following Ted's
 comment a few posts back, I was just concerned about the performance.

 Is performance the only concern when using Taste or the algorithm's
 implementation has also been improved in the current implementations
 accessible via CLI.

 Thanks.

 On Wed, Jan 21, 2015 at 10:14 AM, Manuel Blechschmidt 
 manuel.blechschm...@gmx.de wrote:

  Hi Juan,
 
   On 21.01.2015, at 11:05, Juanjo Ramos jjar...@gmail.com wrote:
  
   Thanks Pat for the resources.
  
   Please correct me if I'm wrong but all Mahout's latest tools are
 command
   line tools only, is that correct?
 
  Yes, this is kind of correct. All tools are command line based. There was
  some development for an interactive console similar to R
 
  https://issues.apache.org/jira/browse/MAHOUT-1489 
  https://issues.apache.org/jira/browse/MAHOUT-1489
   I was wondering if there is a library
   with the latest implementation that can be used in a Java or Scala
  project?
 
  The following project uses Mahout in a full blown simple Java EE
  application:
 
  https://github.com/ManuelB/facebook-recommender-demo 
  https://github.com/ManuelB/facebook-recommender-demo
  
   Best.
 
  /Manuel
 
  --
  Manuel Blechschmidt
  Twitter: http://twitter.com/Manuel_B
 
 



Re: Own recommender

2015-01-21 Thread Manuel Blechschmidt
Hi Juan,

 On 21.01.2015, at 11:05, Juanjo Ramos jjar...@gmail.com wrote:
 
 Thanks Pat for the resources.
 
 Please correct me if I'm wrong but all Mahout's latest tools are command
 line tools only, is that correct?

Yes, this is kind of correct. All tools are command line based. There was some 
development for an interactive console similar to R

https://issues.apache.org/jira/browse/MAHOUT-1489 
https://issues.apache.org/jira/browse/MAHOUT-1489
 I was wondering if there is a library
 with the latest implementation that can be used in a Java or Scala project?

The following project uses Mahout in a full blown simple Java EE application:

https://github.com/ManuelB/facebook-recommender-demo 
https://github.com/ManuelB/facebook-recommender-demo
 
 Best.

/Manuel

-- 
Manuel Blechschmidt
Twitter: http://twitter.com/Manuel_B



Re: Own recommender

2015-01-21 Thread Juanjo Ramos
Thanks Pat for the resources.

Please correct me if I'm wrong but all Mahout's latest tools are command
line tools only, is that correct? I was wondering if there is a library
with the latest implementation that can be used in a Java or Scala project?

Best.

On Mon, Jan 19, 2015 at 9:51 PM, Pat Ferrel p...@occamsmachete.com wrote:

 I guess I’ll put a page on the mahout site. For now some references:

 small free book here, which talks about the general idea:
 https://www.mapr.com/practical-machine-learning
 preso, which talks about mixing actions or other indicators:
 http://occamsmachete.com/ml/2014/10/07/creating-a-unified-recommender-with-mahout-and-a-search-engine/
 two blog posts:
 http://occamsmachete.com/ml/2014/08/11/mahout-on-spark-whats-new-in-recommenders/http://occamsmachete.com/ml/2014/09/09/mahout-on-spark-whats-new-in-recommenders-part-2/
 mahout docs:
 http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html


 On Jan 19, 2015, at 3:02 AM, Juanjo Ramos jjar...@gmail.com wrote:

 Hi Pat,
 Do you know if there is any tutorial for the Scala recommender code?
 Mahout's site keeps pointing here:
 http://mahout.apache.org/users/recommender/userbased-5-minutes.html

 Thanks.

 On Sat, Jan 17, 2015 at 4:24 PM, Pat Ferrel p...@occamsmachete.com wrote:

  The newest recommender code runs on the new Scala R-like DSL. It is
  cooccurrence based and supports only LLR. LLR is used to downsample
  cooccurrences comparing all pairs of items. I’ve done fairly careful
  offline testing of all the similarity methods of Mahout’s hadoop and
  in-memory recommenders and LLR was a clear winner.
 
  However if you have something new you want to try, look at the Scala
  SimilarityAnalysis class. For runtime efficiency it first calculates
  cooccurrences by performing [AA’] then calculating LLR on elements by row
  and downsampling in one step. You could look at some other similarity
  method for downsampling there.
 
  On Jan 16, 2015, at 12:44 AM, ARROYO MANCEBO David 
  david.arr...@altran.com wrote:
 
  Any idea, Ted? :)
 
  -Mensaje original-
  De: Ted Dunning [mailto:ted.dunn...@gmail.com]
  Enviado el: jueves, 15 de enero de 2015 20:05
  Para: user@mahout.apache.org
  Asunto: Re: Own recommender
 
  The old Taste code is not the state of the art.  User-based recommenders
  built on that will be slow.
 
 
 
  On Thu, Jan 15, 2015 at 7:10 AM, Juanjo Ramos jjar...@gmail.com wrote:
 
  Hi David,
  You implement your custom algorithm and create your own class that
  implements the UserSimilarity interface.
 
  When you then instantiate your User-Based recommender, just pass your
  custom class for the UserSimilarity parameter.
 
  Best.
 
  On Thu, Jan 15, 2015 at 1:11 PM, ARROYO MANCEBO David 
  david.arr...@altran.com wrote:
 
  Hi folks,
  How I can start to build my own recommender system in apache mahout
  with my personal algorithm? I need a custom UserSimilarity. Maybe a
  subclass from UserSimilarity like PearsonCorrelationSimilarity?
 
  Thanks
  Regards :)
 
 
 
 




Re: Own recommender

2015-01-21 Thread Manuel Blechschmidt
Hi Juanjo,

 On 21.01.2015, at 11:20, Juanjo Ramos jjar...@gmail.com wrote:
 
 Hi Manuel,
 Thanks for the update.
 
 I'm using Mahout in a simple Java application myself. Following Ted's
 comment a few posts back, I was just concerned about the performance.

So if you have more than around 300.000 preferences for around 10.000 users it 
will take some seconds to generate recommendations for users with a lot of 
preferences.

Normally what you do is just down sample the preferences that a certain user 
has to make it faster.

When I understood LLR correctly than it is a smart way of doing this 
downsampling.

Another approach would be using a model based approach:

https://mahout.apache.org/users/recommender/matrix-factorization.html 
https://mahout.apache.org/users/recommender/matrix-factorization.html

The following class contains an example:
https://github.com/ManuelB/facebook-recommender-demo/blob/master/src/main/java/de/apaxo/bedcon/AnimalFoodRecommender.java
 
https://github.com/ManuelB/facebook-recommender-demo/blob/master/src/main/java/de/apaxo/bedcon/AnimalFoodRecommender.java
 
 Is performance the only concern when using Taste or the algorithm's
 implementation has also been improved in the current implementations
 accessible via CLI.
 
 Thanks.

/Manuel

-- 
Manuel Blechschmidt
Twitter: http://twitter.com/Manuel_B



Re: Own recommender

2015-01-21 Thread Juanjo Ramos
Hi Manuel,
Thanks for the update.

I'm using Mahout in a simple Java application myself. Following Ted's
comment a few posts back, I was just concerned about the performance.

Is performance the only concern when using Taste or the algorithm's
implementation has also been improved in the current implementations
accessible via CLI.

Thanks.

On Wed, Jan 21, 2015 at 10:14 AM, Manuel Blechschmidt 
manuel.blechschm...@gmx.de wrote:

 Hi Juan,

  On 21.01.2015, at 11:05, Juanjo Ramos jjar...@gmail.com wrote:
 
  Thanks Pat for the resources.
 
  Please correct me if I'm wrong but all Mahout's latest tools are command
  line tools only, is that correct?

 Yes, this is kind of correct. All tools are command line based. There was
 some development for an interactive console similar to R

 https://issues.apache.org/jira/browse/MAHOUT-1489 
 https://issues.apache.org/jira/browse/MAHOUT-1489
  I was wondering if there is a library
  with the latest implementation that can be used in a Java or Scala
 project?

 The following project uses Mahout in a full blown simple Java EE
 application:

 https://github.com/ManuelB/facebook-recommender-demo 
 https://github.com/ManuelB/facebook-recommender-demo
 
  Best.

 /Manuel

 --
 Manuel Blechschmidt
 Twitter: http://twitter.com/Manuel_B