Agile Machine Learning for Real-time Recommender Systems

  • View
    2.599

  • Download
    1

  • Category

    Software

Preview:

Citation preview

Agile Machine Learning for Real-time Recommender Systems

johann@ifwe.co@jssmith github.com/ifwe

Johann Schleier-Smith CTO, if(we)

what it should look like

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

what it often looks like

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

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

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?

• Profitable startup actively pursuing big opportunities in social apps

• Millions of users of existing brands

• Thousands of social contacts per second

real-time recommendations

challenges

• >10 million candidates to select from

• >1000 updates/sec

• Must be responsive to current activity

• Users expect instant query results

Tagged dating feature

implementation pain points

• 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

time for new thinking

one way thatworks better

!

!

!

4. Pull records from database to create interesting features (usually aggregates)

5. Train predictive models

6. Go implement models for production

Create interesting features

Train predictive models

Put models in production

Create interesting features

Train predictive models

Put models in production

event history

one right way to data

History. filterTime(start, PLUS_INFINITY). foreach { e: Event => model.update(e) }

everything is an event

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

writing the model

class MyModel { def update(e: Event) { … } def topN(ctx: Context, n: Int) = { … } }

models are allabout features

class MyFeature { def update(e: Event) { … } def score(ctx: Context, candidateId: Long): Double = { … } }

model training

History. filterTime(start, PLUS_INFINITY). foreach { e: Event => { writeTrainingData(outcome(e), model.features(context(e)) model.update(e) } }

live demo

Kaggle competition with Best Buy data

https://www.kaggle.com/c/acm-sf-chapter-hackathon-small

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...” ... } }

product view events

{ “timestamp” : “2011-10-31 09:48:46”, “eventType” : “ProductView”, “eventProperties” : { “skuSelected” : “2670133”, “query” : “Modern warfare” } }

demo

Try it yourself, code and instructions at: https://github.com/ifweco/antelope/blob/master/doc/demo.md

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!!

• 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

Recommended