2

I want to develop a system that involves a recommendation engine for a push information delivery. I have seen plenty of explanations about using some engines, like Mahout Taste and Duine. Yet by using them, the recommended items are obtained after an input containing user Id occurs. So, such engines seem to be suitable only for web applications/service that use pull-request from users.

But by using push messaging, i want my server to actively send a recommmendation message directly to some particular users/customers that are based on recommendation algorithm, relevant. The delivery process would be performed as soon as a new item (product/content) available in the database.

My question, is it possible/recommended to use the existing engines, like Mahout, or Duine? What algorithms are good in order to do this?

M Rijalul Kahfi
  • 1,460
  • 3
  • 22
  • 42

1 Answers1

0

What's the distinction you're making -- whether your push to or pull from a user, you have their user ID, presumably. This doesn't affect recommendations. You can recommend in either case, whether you want to push or pull.

Sean Owen
  • 66,182
  • 23
  • 141
  • 173
  • 1
    My wish is to do recommendation as soon as a new item available in the database. How can the system know which users this item is relevant for? whereas there has been no rating or other action done by any users.. According to my knowledge (cmiiw), within common pull scenario, the system requires a user ID to decide which item-IDs should be recommended for that user. On the contrary, this push-scenario requires an ID of the new item to decide which users seem to be interested in, so that the item could be recommended for them immediately without being preceded by any access from the user. – M Rijalul Kahfi Oct 23 '11 at 14:26
  • OK. I think you're asking how to overcome the cold-start problem in CF. It isn't really a push/pull question. You can't, in CF. You need some external notion of item-item similarity to fall back on. If you can construct that based on item attributes (not ratings) then you can easily plug that into an item-based recommender. – Sean Owen Oct 23 '11 at 17:18
  • 1
    Thanks Sean, i get your mean. Just trying to figure out how such way is done using Mahout? – M Rijalul Kahfi Oct 24 '11 at 04:17
  • You might ask at user@mahout.apache.org. But it's pretty simple: look at GenericItemBasedRecommender. The only hard part is creating your own custom ItemSimilarity implementation. The rest is trivial in Mahout. – Sean Owen Oct 24 '11 at 07:07
  • 1
    Yes, that part may be hard for me to implement. Yet i've found other disscusion in SO about how to overcome cold-start situation, and i got some enough interesting solutions, content-based filtering and association rule. Unforunately, CBF is currently not supported in Mahout, isn't it?.. BTW, I'm quite poor in recommendation algorithm, so i'm just looking for another engine that is able to support that. Any hints? – M Rijalul Kahfi Oct 25 '11 at 11:52
  • Yes and no... it's supported in that you can plug in your own content-based rules. You could also maybe apply different parts of Mahout to learn rules. In general it's not really possible to magically learn content-based rules for all input, so no there's no magic class to use. – Sean Owen Oct 25 '11 at 12:00
  • 1
    ItemSimilarity is constructed using a DataModel object that contains item ratings (user_id, item_id, rating, timestamp). So where do i have to place attribute informations? – M Rijalul Kahfi Oct 25 '11 at 15:29
  • In your ItemSimilarity implementation, somehow -- it's up to you. This would really be a better conversation on user@apache.org, not here. – Sean Owen Oct 25 '11 at 15:38