agile machine learning for real-time recommender systems
TRANSCRIPT
![Page 1: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/1.jpg)
Agile Machine Learning for Real-time Recommender Systems
[email protected]@jssmith github.com/ifwe
Johann Schleier-Smith CTO, if(we)
![Page 2: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/2.jpg)
what it should look like
![Page 3: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/3.jpg)
1. Gain understanding of machine learning
2. Gain understanding of the product usage
3. See opportunity to make the product better
4. Create training data
5. Train predictive models
6. Put models in production
7. See improvements
![Page 4: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/4.jpg)
what it often looks like
![Page 5: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/5.jpg)
1. Gain understanding of machine learning
2. Gain understanding of the product usage
3. See opportunity to make the product better
4. Pull records from database to create interesting features (usually aggregates)
5. Train predictive models
6. Go implement models for production
7. See improvements
![Page 6: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/6.jpg)
1. Gain understanding of machine learning
2. Gain understanding of the product usage
3. See opportunity to make the product better
4. Pull records from database to create interesting features (usually aggregates)
5. Train predictive models
6. Go implement models for production
7. See improvements
3-6 months
![Page 7: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/7.jpg)
1. Gain understanding of machine learning
2. Gain understanding of the product usage
3. See opportunity to make the product better
4. Pull records from database to create interesting features (usually aggregates)
5. Train predictive models
6. Go implement models for production
7. See improvements Cool!Was it worth it?
![Page 8: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/8.jpg)
• Profitable startup actively pursuing big opportunities in social apps
• Millions of users of existing brands
• Thousands of social contacts per second
![Page 9: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/9.jpg)
real-time recommendations
challenges
![Page 10: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/10.jpg)
• >10 million candidates to select from
• >1000 updates/sec
• Must be responsive to current activity
• Users expect instant query results
Tagged dating feature
![Page 11: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/11.jpg)
implementation pain points
![Page 12: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/12.jpg)
• Data scientist hands model description to software engineer
• May need to translate features from SQL to Java
• Aggregate features require batch processing
• May need to adjust features and model to achieve real-time updates
• Fast scoring requires high-performance in-memory data structures
![Page 13: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/13.jpg)
time for new thinking
![Page 14: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/14.jpg)
one way thatworks better
![Page 15: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/15.jpg)
!
!
!
4. Pull records from database to create interesting features (usually aggregates)
5. Train predictive models
6. Go implement models for production
![Page 16: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/16.jpg)
Create interesting features
Train predictive models
Put models in production
![Page 17: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/17.jpg)
Create interesting features
Train predictive models
Put models in production
![Page 18: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/18.jpg)
event history
one right way to data
![Page 19: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/19.jpg)
History. filterTime(start, PLUS_INFINITY). foreach { e: Event => model.update(e) }
![Page 20: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/20.jpg)
everything is an event
![Page 21: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/21.jpg)
Bob registers Alice registers
Alice updates profile Bob opens app
Bob sees Alice in recommendations Bob swipes yes on Alice
Alice receives push notification Alice sees Bob swiped yes
Alice swipes yes Alice sends message to Bob
![Page 22: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/22.jpg)
writing the model
![Page 23: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/23.jpg)
class MyModel { def update(e: Event) { … } def topN(ctx: Context, n: Int) = { … } }
![Page 24: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/24.jpg)
models are allabout features
![Page 25: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/25.jpg)
class MyFeature { def update(e: Event) { … } def score(ctx: Context, candidateId: Long): Double = { … } }
![Page 26: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/26.jpg)
model training
![Page 27: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/27.jpg)
History. filterTime(start, PLUS_INFINITY). foreach { e: Event => { writeTrainingData(outcome(e), model.features(context(e)) model.update(e) } }
![Page 28: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/28.jpg)
live demo
Kaggle competition with Best Buy data
https://www.kaggle.com/c/acm-sf-chapter-hackathon-small
![Page 29: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/29.jpg)
product update events{ “timestamp” : “2012-05-03 6:43:15”, “eventType” : “ProductUpdate”, “eventProperties” : { “sku” : “1032361”, “regularPrice” : “19.99”, “name” : “Need for Speed: Hot Pursuit”, “description” : “Fasten your seatbelt and get ready to drive like your life depends on it...” ... } }
![Page 30: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/30.jpg)
product view events
{ “timestamp” : “2011-10-31 09:48:46”, “eventType” : “ProductView”, “eventProperties” : { “skuSelected” : “2670133”, “query” : “Modern warfare” } }
![Page 31: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/31.jpg)
demo
Try it yourself, code and instructions at: https://github.com/ifweco/antelope/blob/master/doc/demo.md
![Page 32: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/32.jpg)
![Page 33: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/33.jpg)
![Page 34: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/34.jpg)
![Page 35: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/35.jpg)
1. Gain understanding of machine learning
2. Gain understanding of the product usage
3. See opportunity to make the product better
4. Create training data
5. Train predictive models
6. Put models in production
7. See improvementsFa
st cycles!!
![Page 36: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/36.jpg)
![Page 37: Agile Machine Learning for Real-time Recommender Systems](https://reader030.vdocuments.mx/reader030/viewer/2022032420/55a4e3bd1a28ab36748b459e/html5/thumbnails/37.jpg)
• All data in form of events – no exceptions!
• Roll through history to generate training examples
• Sample training data carefully to avoid feedback
• Model is static while features are live and personal
• Use interesting features with boring algorithms
• Expressiveness > performance > scalability
github.com/ifwe/antelope @jssmith