Web Based Virtual Reality - Tanay Pant - Codemotion Rome 2017
A recommendation engine for your applications - M.Orselli - Codemotion Rome 17
-
Upload
codemotion -
Category
Technology
-
view
50 -
download
2
Transcript of A recommendation engine for your applications - M.Orselli - Codemotion Rome 17
![Page 1: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/1.jpg)
![Page 2: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/2.jpg)
A recommendation engine for your apps
![Page 3: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/3.jpg)
![Page 4: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/4.jpg)
Definition: a system that help people finding things when the process of finding what you need is challenging because you have a lot of choices/alternatives
![Page 5: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/5.jpg)
So… it’s a search engine!
![Page 6: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/6.jpg)
Search Engines
Document base is (almost) static
Queries are dynamic
![Page 7: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/7.jpg)
Search Engines
Create an index analysing the documents
Calculate relevance for a query: tf*idf
![Page 8: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/8.jpg)
Recommender systems
Document base is growing (eg: Netflix)
Query is static: find something I like
![Page 9: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/9.jpg)
Classification
![Page 10: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/10.jpg)
Domain: news, products, …
Helps defining what can be suggested
![Page 11: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/11.jpg)
Purpose: sales, information, education, build a community
What is TripAdvisor purpose?
![Page 12: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/12.jpg)
Personalisation levels
• Non personalised: best sellers
• Demographic: age, location
• Ephemeral: based on current activities
• Persistent
![Page 13: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/13.jpg)
Types of input
• Explicit: ask user to rate something
• Implicit: inferred from user behaviour
![Page 14: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/14.jpg)
Output
• Prediction: predicted rating, evaluation
• Recommendations: suggestion list, top-n, offers, promotion
• Filtering: email filters, news articles
![Page 15: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/15.jpg)
A model for comparison
![Page 16: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/16.jpg)
User: people with preference
Items: subject of rating
Rating: expression of opinion
(Community: space where opinions makes sense)
![Page 17: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/17.jpg)
![Page 18: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/18.jpg)
Non personalised
![Page 19: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/19.jpg)
Best seller
Most popular
Trending
Summary of community ratings: eg best hotel in town
![Page 20: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/20.jpg)
![Page 21: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/21.jpg)
![Page 22: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/22.jpg)
Hotel
![Page 23: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/23.jpg)
Visitor Hotel
![Page 24: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/24.jpg)
Visitor Hotel
![Page 25: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/25.jpg)
Hotel A Hotel B Hotel C
John 3 5
Jane 3
Fred 1 0
Tom 4
AVG 3.5 3 0
![Page 26: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/26.jpg)
Content based
![Page 27: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/27.jpg)
User rate items
We build a model of user preference
Look for similar items based on the model
![Page 28: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/28.jpg)
![Page 29: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/29.jpg)
Action 0.7
Sci Fi 3.2
Vin Diesel 1.2
… …
https://www.amazon.com/Relevant-Search-applications-Solr-Elasticsearch/dp/161729277Xhttp://www.slideshare.net/treygrainger/building-a-real-time-solrpowered-recommendation-engine
![Page 30: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/30.jpg)
Problems/Limitations
![Page 31: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/31.jpg)
Need to know items content
User cold start: time to learn important features for the user
What if user interest change?
Lack of serendipity: accidentally discover something you like
![Page 32: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/32.jpg)
Collaborative filtering
![Page 33: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/33.jpg)
No need to analyse (index) content
Can capture more subtle things
Serendipity
![Page 34: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/34.jpg)
User-User
Select people of my neighbourhood with similar taste. If other people share my taste I want their opinion combined
![Page 35: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/35.jpg)
E.T
2 4Joe 2 2 3 ?
1 55 2 4 …
Tom 3 3 2
4 1
User-User: which users have similar tastes?
![Page 36: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/36.jpg)
E.T
2 4Joe 2 2 3 ?
1 55 2 4 …
Tom 3 3 2
4 1
User-User: which users have similar tastes?
![Page 37: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/37.jpg)
Item-Item
Find an items where I have expressed an opinion and look how other people felt about it. Precompute similarities between items
![Page 38: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/38.jpg)
E.T
2 4Joe 2 2 3 ?
1 55 2 4 …
Tom 3 3
4 1
Item-Item: which item are similar?
![Page 39: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/39.jpg)
Problems/Limitations
![Page 40: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/40.jpg)
Sparsity
When recommending from a large item set, users will have rated only some of the items
![Page 41: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/41.jpg)
User Cold start
Not enough known about new user to decide who is similar
![Page 42: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/42.jpg)
Item cold start
Cannot predict ratings for new item till some similar users have rated it [No problem for content-based]
![Page 43: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/43.jpg)
Scalability
With millions of ratings, computations become slow
Dimensionality reduction FTW!
![Page 44: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/44.jpg)
An example
![Page 45: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/45.jpg)
Item1 Item2 Item3 Item4 Item5
Joe 8 1 ? 2 7
Tom 2 ? 5 7 5
Alice 5 4 7 4 7
Bob 7 1 7 3 8
How similar are Joe and Tom? How similar are Joe and Bob?
![Page 46: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/46.jpg)
Only consider items both users have rated
For each item - Compute difference in the users’ ratings - Take the average of this difference over the items
Item1 Item2 Item3 Item4 Item5
Joe 8 1 ? 2 7
Tom 2 ? 5 7 5
Alice 5 4 7 4 7
Bob 7 1 7 3 8
![Page 47: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/47.jpg)
Sim(Joe, Tom) = (|8-2| + |2-7| + |7-5|)/3 = 13/3 = 4.3
Sim(Joe, Alice) = (|8-5| + |1-4| + |2-4| + |7-7|)/4 = 2
Sim(Joe, Bob) = (|8-7| + |1-1| + |2-3| + |7-8|)/4 = 0.75
Item1 Item2 Item3 Item4 Item5
Joe 8 1 ? 2 7
Tom 2 ? 5 7 5
Alice 5 4 7 4 7
Bob 7 1 7 3 8
![Page 48: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/48.jpg)
Similarity
Bob 0.75
Alice 2
Tom 4.3
D = 1 / 1 + d
![Page 49: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/49.jpg)
Similarity
Bob 1.57
Alice 0.33
Tom 0.18
D = 1 / 1 + d
![Page 50: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/50.jpg)
Recommend what similar user have rated highly
To calculate rating of an item to recommend, give weight to each user’s recommendations based on how similar they are to you.
![Page 51: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/51.jpg)
Rating(Joe, Item3) = (1.57 * 7 + 0.33 * 7 + 0.18 * 5) / 3
10.99 + 2.31 + 0.9 / 3 = 4.3
Similarity
Bob 1.57
Alice 0.33
Tom 0.18
![Page 52: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/52.jpg)
use entire matrix or
use a K-nn algorithm: people who historically have the same tastes as me
aggregate using weighted sum
weights depends on similarity
![Page 53: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/53.jpg)
Cosine similarity
[3,5]
[2,7]
[0,0]
![Page 54: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/54.jpg)
Our domain
![Page 55: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/55.jpg)
Domain: online book shop, both paper and digital
Recommend titles, old and new
- Who bought this also bought
- You might like
![Page 56: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/56.jpg)
Choosing the tool
![Page 57: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/57.jpg)
PredictionIO
![Page 58: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/58.jpg)
Under the Apache umbrella
Based on solid open source stack
Customisable templates engines
SDK for PHP
![Page 59: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/59.jpg)
![Page 60: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/60.jpg)
Installation
http://actionml.com/docs/pio_by_actionml
Pre-baked Amazon AMIs
![Page 61: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/61.jpg)
Installation via source code
http://predictionio.incubator.apache.org/install/install-sourcecode/
![Page 62: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/62.jpg)
You can choose storage
mysql/postgres vs elasticsearch+hbase
![Page 63: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/63.jpg)
The event server
![Page 64: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/64.jpg)
![Page 65: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/65.jpg)
Pattern: user -- action -- item
User 1 purchased product X
User 2 viewed product Y
User 1 added product Z in the cart
![Page 66: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/66.jpg)
$ pio app new MyApp1
[INFO] [App$] Initialized Event Store for this app ID: 1. [INFO] [App$] Created new app: [INFO] [App$] Name: MyApp1 [INFO] [App$] ID: 1 [INFO] [App$] Access Key: 3mZWDzci2D5YsqAnqNnXH9SB6Rg3dsTBs8iHkK6X2i54IQsIZI1eEeQQyMfs7b3F
$ pio eventserver
![Page 67: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/67.jpg)
Server runs on port 7070 by default
$ curl -i -X GET http://localhost:7070
{“status":"alive"}
![Page 68: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/68.jpg)
$ curl -i -X GET “http://localhost:7070/events.json?accessKey=$ACCESS_KEY"
![Page 69: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/69.jpg)
Events modeling
what can/should we model?
rate, like, buy, view, depending on the algorithm
![Page 70: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/70.jpg)
![Page 71: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/71.jpg)
![Page 72: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/72.jpg)
![Page 73: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/73.jpg)
setUser($uid, array $properties=array(), $eventTime=null)
unsetUser($uid, array $properties, $eventTime=null)
deleteUser($uid, $eventTime=null)
setItem($iid, array $properties=array(), $eventTime=null)
unsetItem($iid, array $properties, $eventTime=null)
deleteItem($iid, $eventTime=null)
recordUserActionOnItem($event, $uid, $iid, array $properties=array(), $eventTime=null)
createEvent(array $data)
getEvent($eventId)
![Page 74: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/74.jpg)
Engines
![Page 75: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/75.jpg)
![Page 76: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/76.jpg)
D.A.S.E Architecture
Data Source and Preparation
Algorithm
Serving
Evaluation
![Page 77: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/77.jpg)
$ pio template get apache/incubator-predictionio-template-recommender MyRecommendation
$ cd MyRecommendation
![Page 78: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/78.jpg)
engine.json
"datasource": { "params" : { "appName": “MyApp1”, "eventNames": [“buy”, “view”] } },
![Page 79: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/79.jpg)
$ pio build —verbose
$ pio train
$ pio deploy
![Page 80: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/80.jpg)
Getting recommendations
![Page 81: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/81.jpg)
![Page 82: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/82.jpg)
![Page 83: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/83.jpg)
![Page 84: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/84.jpg)
Implementation
![Page 85: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/85.jpg)
![Page 86: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/86.jpg)
2 kind of suggestions
- who bought this also bought (recommendation)
- you may like (similarities)
![Page 87: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/87.jpg)
View
Like (add to basket, add to wishlist)
Conversion (buy)
Recorded in batch
![Page 88: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/88.jpg)
4 engines
2 for books, 2 for ebooks
(not needed now)
Retrained every night with new data
![Page 89: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/89.jpg)
recordLike($user, array $item)
recordConversion($user, array $item)
recordView($user, array $item)
createUser($uid)
![Page 90: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/90.jpg)
getRecommendation($uid, $itype, $n = self::N_SUGGESTION)
getSimilarity($iid, $itype, $n = self::N_SUGGESTION)
![Page 91: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/91.jpg)
![Page 92: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/92.jpg)
user cold start/item cold start
if we don’t get enough suggestion switch to non personalised (also for non logged users)
![Page 93: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/93.jpg)
![Page 94: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/94.jpg)
Alternative approaches
![Page 95: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/95.jpg)
https://github.com/grahamjenson/list_of_recommender_systems
![Page 96: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/96.jpg)
![Page 98: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/98.jpg)
https://neo4j.com/developer/guide-build-a-recommendation-engine/
![Page 99: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/99.jpg)
Michele Orselli CTO@Ideato
_orso_
micheleorselli / ideatosrl
![Page 100: A recommendation engine for your applications - M.Orselli - Codemotion Rome 17](https://reader031.fdocuments.us/reader031/viewer/2022011722/58e4a21c1a28abf5428b64ad/html5/thumbnails/100.jpg)
Links• http://www.slideshare.net/NYCPredictiveAnalytics/building-a-recommendation-
engine-an-example-of-a-product-recommendation-engine?next_slideshow=1
• https://www.coursera.org/learn/recommender-systems-introduction
• http://actionml.com/
• https://github.com/grahamjenson/ger