• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Content recommendations
 

Content recommendations

on

  • 259 views

 

Statistics

Views

Total Views
259
Views on SlideShare
259
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Content recommendations Content recommendations Presentation Transcript

    • Content Recommendationswith RedisTorben Brodtplista GmbH28. February 2013Recommender SystemsStammtischhttp://recommenders.de
    • 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
    • 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
    • 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
    • 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
    • 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
    • Most popular with timeseries :1360007000 :1360007000 :1360007000 -1h -2h -3h -4h -5h -6h -7h -8h
    • 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
    • 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
    • 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
    • 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)
    • 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
    • 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 ;)
    • Even more Matrix Operations ;)● Similarity Matrix● Human Control Matrix Σ● Meta-learning Matrix ○ might be covered in next talk ○ cooperation with ∏ ○ aided from
    • 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
    • What else?In Redis● Incremental Collaborative Filtering● More Recommender● Live StatisticsAt plista● Semantics with Lucene● Cloud Technologies ○ Scalability ○ Enterprise Service Bus● Contest for Recommenders
    • Questions? www.plista.com torben.brodt@plista.com @torbenbrodt xing.com/profile/Torben_Brodt http://goo.gl/pvXm5 http://lnkd.in/MUXXuv