Content recommendations

425 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
425
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Content recommendations

  1. 1. Content Recommendationswith RedisTorben Brodtplista GmbH28. February 2013Recommender SystemsStammtischhttp://recommenders.de
  2. 2. Introduction● plista GmbH ○ recommendations & advertising ○ founded in 2008, Berlin [DE] ○ ~3k recommendations/ second● never batch = never Hadoop● stream computing with In Memory Database● we love
  3. 3. How to build recommendations?welt.de/football/berlin_wins.html We only have the URL? to show recommendations we are integrated on the website so "at least" we can count the hits
  4. 4. Most popularwelt.de/football/berlin_wins.html● ZINCR "p:welt.de" berlin_wins● ZREVRANGEBYSCORE p:welt.de berlin_wins 689 +1 summer_is_coming 420 plista_company 135 Live Read+ Live Write= Real Time Recommendations
  5. 5. Most popular with timeserieswelt.de/football/berlin_wins.html● ZINCR "p:welt.de:1360007000" berlin_wins● ZUNION ○ "p:welt.de:1360007000" ○ "p:welt.de:1360006000" ○ "p:welt.de:1360005000"● ZREVRANGEBYSCORE p:welt.de:1360005000 p:welt.de:1360006000 berlin_wins 420 p:welt.de:1360007000 berlin_wins 420 summer_is_coming 135 berlin_wins summer_is_coming 135 689 plista_best_company 689 plista_best_company 689 420 summer_is_coming plista_best_company 135
  6. 6. Most popular with timeserieswelt.de/football/berlin_wins.html● ZINCR "p:welt.de:1360007000" berlin_wins● ZUNION ... WEIGHTS ○ "p:welt.de:1360007000" .. 4 ○ "p:welt.de:1360006000" .. 2 ○ "p:welt.de:1360005000" .. 1● ZREVRANGEBYSCORE p:welt.de:1360005000 p:welt.de:1360006000 berlin_wins 420 p:welt.de:1360007000 berlin_wins 420 summer_is_coming 135 berlin_wins summer_is_coming 135 689 plista_best_company 689 plista_best_company 689 420 summer_is_coming plista_best_company 135
  7. 7. Most popular with timeseries :1360007000 :1360007000 :1360007000 -1h -2h -3h -4h -5h -6h -7h -8h
  8. 8. Most popular to any context● its not only publisher, we use ~50 context attributes publisher = welt.de weekday = sunday berlin_wins 689 +1 berlin_wins 400 +1 summer_is_coming 420 dortmund_wins 200 plista_company 135 ... 100context attributes:● publisher geolocation = dortmund● weekday dortmund_wins 200● geolocation● demographics berlin_wins 10 +1● ... ... 5
  9. 9. Most popular to any context● how it looks like in RedisZUNION ... WEIGHTS publisher = welt.dep:welt.de:1360007 4p:welt.de:1360006 2 weekday = sunday berlin_wins 689 +1p:welt.de:1360005 1 berlin_wins 400 summer_is_coming 420w:sunday:1360007 4 dortmund_wins 200 plista_company 135w:sunday:1360006 2w:sunday:1360005 1 ... 100g:dortmund:1360007 4 geolocation = dortmundg:dortmund:1360006 2g:dortmund:1360005 1 dortmund_wins 200 berlin_wins 10 ... 5
  10. 10. Most popular with Effect size● which context has an influence?ZUNION ... WEIGHTSp:welt.de:1360007 4 * 70%p:welt.de:1360006 2 * 70%p:welt.de:1360005 1 * 70% Examples:w:sunday:1360007 4 * 10% small effect: weatherw:sunday:1360006 2 * 10% big effect: publisherw:sunday:1360005 1 * 10% Data with small effectg:dortmund:1360007 4 * 30% should not been takeng:dortmund:1360006 2 * 30% into account, otherwiseg:dortmund:1360005 1 * 30% we get avg results Effect Size
  11. 11. Most popular with Significance● some data has more significance/trust● so we add a significance matrix publisher = welt.de sig:publisher = welt.de berlin_wins 689 berlin_wins 1 summer_is_coming 420 X summer_is_coming 1 plista_company 135 plista_company 0.5● Significance might depend on a common limit, like 200 (in the example)
  12. 12. Most popular with Significance● some data has more significance/trust● so we add a significance matrixSUM over all context Σ( ) publisher = welt.de sig:publisher = welt.de berlin_wins 689 berlin_wins 1 summer_is_coming 420 X summer_is_coming 1 plista_company 135 plista_company 0.5 Numerator SUM over all context sig:publisher = welt.de Denominator Σ berlin_wins 1 summer_is_coming 1 plista_company 0.5
  13. 13. SUM over.. ZUNION ... WEIGHTS● timeseries p:welt.de:1360007 4● different context p:welt.de:1360006 2● previous hits of the user p:welt.de:1360005 1● similar publisher w:sunday:1360007 4 knowledge w:sunday:1360006 2 w:sunday:1360005 1Σ g:dortmund:1360007 4 publisher = welt.de g:dortmund:1360006 2 berlin_wins 689 g:dortmund:1360005 1 summer_is_coming 420 plista_company 135 ... redis can do it ;)
  14. 14. Even more Matrix Operations ;)● Similarity Matrix● Human Control Matrix Σ● Meta-learning Matrix ○ might be covered in next talk ○ cooperation with ∏ ○ aided from
  15. 15. Conclusions● Redis fits perfect for simple operations ○ SUM + AGGREGATE + MIN + MAX● In-Memory operations are pretty fast● Real-time features feel better in a real-time database (e.g. time series)● We dont need batch
  16. 16. What else?In Redis● Incremental Collaborative Filtering● More Recommender● Live StatisticsAt plista● Semantics with Lucene● Cloud Technologies ○ Scalability ○ Enterprise Service Bus● Contest for Recommenders
  17. 17. Questions? www.plista.com torben.brodt@plista.com @torbenbrodt xing.com/profile/Torben_Brodt http://goo.gl/pvXm5 http://lnkd.in/MUXXuv

×