CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013...

53
CS246: Mining Massive Datasets Jure Leskovec, Stanford University http://cs246.stanford.edu

Transcript of CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013...

Page 1: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

CS246: Mining Massive Datasets Jure Leskovec, Stanford University

http://cs246.stanford.edu

Page 2: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Training data

100 million ratings, 480,000 users, 17,770 movies

6 years of data: 2000-2005

Test data

Last few ratings of each user (2.8 million)

Evaluation criterion: Root Mean Square Error (RMSE)

Netflix’s system RMSE: 0.9514

Competition

2,700+ teams

$1 million prize for 10% improvement on Netflix

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 2

Page 3: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

1 3 4

3 5 5

4 5 5

3

3

2 2 2

5

2 1 1

3 3

1

480,000 users

17,700

movies

2/10/2013 3 Jure Leskovec, Stanford C246: Mining Massive Datasets

Matrix R

Page 4: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

1 3 4

3 5 5

4 5 5

3

3

2 ? ?

?

2 1 ?

3 ?

1

Test Data Set

SSE = 𝑟 𝑥𝑖 − 𝑟𝑥𝑖2

(𝑖,𝑥)∈𝑅

2/10/2013 4 Jure Leskovec, Stanford C246: Mining Massive Datasets

480,000 users

17,700

movies

Predicted rating

True rating of

user x on item i

𝒓𝟑,𝟔

Matrix R

Training Data Set

Page 5: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

The winner of the Netflix Challenge Multi-scale modeling of the data:

Combine top level, “regional” modeling of the data, with a refined, local view: Global: Overall deviations of users/movies

Factorization: Addressing “regional” effects

Collaborative filtering: Extract local patterns

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 5

Global effects

Factorization

Collaborative

filtering

Page 6: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Global:

Mean movie rating: 3.7 stars

The Sixth Sense is 0.5 stars above avg.

Joe rates 0.2 stars below avg. Baseline estimation: Joe will rate The Sixth Sense 4 stars

Local neighborhood (CF/NN):

Joe didn’t like related movie Signs

Final estimate: Joe will rate The Sixth Sense 3.8 stars

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 6

Page 7: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Earliest and most popular collaborative filtering method

Derive unknown ratings from those of “similar” movies (item-item variant)

Define similarity measure sij of items i and j Select k-nearest neighbors, compute the rating

N(i; x): items most similar to i that were rated by x

2/10/2013 7 Jure Leskovec, Stanford C246: Mining Massive Datasets

);(

);(ˆ

xiNj ij

xiNj xjij

xis

rsr sij… similarity of items i and j

ruj…rating of user x on item j

N(i;x)… set of items similar to

item i that were rated by x

Page 8: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

In practice we get better estimates if we model deviations:

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 8

μ = overall mean rating

bx = rating deviation of user x

= (avg. rating of user x) – μ

bi = (avg. rating of movie i) – μ

Problems/Issues: 1) Similarity measures are “arbitrary” 2) Pairwise similarities neglect interdependencies among users 3) Taking a weighted average can be restricting Solution: Instead of sij use wij that we estimate directly from data

^

);(

);()(

xiNj ij

xiNj xjxjij

xixis

brsbr

baseline estimate for rxi

𝒃𝒙𝒊 = 𝝁 + 𝒃𝒙 + 𝒃𝒊

Page 9: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Use a weighted sum rather than weighted avg.:

𝑟𝑥𝑖 = 𝑏𝑥𝑖 + 𝑤𝑖𝑗 𝑟𝑥𝑗 − 𝑏𝑥𝑗𝑗∈𝑁(𝑖;𝑥)

A few notes: We sum over all movies j that are similar to i and were

rated by x

𝒘𝒊𝒋 is the interpolation weight (some real number)

We allow: 𝒘𝒊𝒋 ≠ 𝟏𝒋∈𝑵(𝒊,𝒙)

𝒘𝒊𝒋 models interaction between pairs of movies (it does not depend on user x)

𝑵(𝒊; 𝒙) … set of movies rated by user x that are similar to movie i

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 9

Page 10: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

𝑟𝑥𝑖 = 𝑏𝑥𝑖 + 𝑤𝑖𝑗 𝑟𝑥𝑗 − 𝑏𝑥𝑗𝑗∈𝑁(𝑖,𝑥)

How to set wij?

Remember, error metric is SSE: 𝑟 𝑢𝑖 − 𝑟𝑢𝑖2

(𝑖,𝑢)∈𝑅

Find wij that minimize SSE on training data!

Models relationships between item i and its neighbors j

wij can be learned/estimated based on x and all other users that rated i

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 10

Why is this a good idea?

Page 11: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Here is what we just did:

Goal: Make good recommendations

Quantify goodness using SSE: So, Lower SSE means better recommendations

We want to make good recommendations on items that some user has not yet seen. Can’t really do this. Why?

Let’s set values w such that they work well on known (user, item) ratings And hope these ws will predict well the unknown ratings

This is the first time in the class that we see Optimization methods

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 11

1 3 4

3 5 5

4 5 5

3

3

2 ? ?

?

2 1 ?

3 ?

1

Page 12: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Idea: Let’s set values w such that they work well on known (user, item) ratings

How to find such values w? Idea: Define an objective function

and solve the optimization problem Find wij that minimize SSE on training data!

min𝑤𝑖𝑗 𝑏𝑥𝑖 + 𝑤𝑖𝑗 𝑟𝑥𝑗 − 𝑏𝑥𝑗

𝑗∈𝑁 𝑖;𝑥

− 𝑟𝑥𝑖

2

𝑥

Think of w as a vector of numbers 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 12

Page 13: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

We have the optimization problem, now what?

Gradient decent Iterate until convergence: 𝒘 𝒘 − 𝜵𝒘

where 𝜵𝒘 is gradient (derivative evaluated on data):

𝛻𝑤 =𝜕

𝜕𝑤𝑖𝑗= 2 𝑏𝑥𝑖 + 𝑤𝑖𝑘 𝑟𝑥𝑘 − 𝑏𝑥𝑘

𝑘∈𝑁 𝑖;𝑥

− 𝑟𝑥𝑖 𝑟𝑥𝑗 − 𝑏𝑥𝑗𝑥

for 𝒋 ∈ {𝑵 𝒊; 𝒙 , ∀𝒊, ∀𝒙 }

else 𝜕

𝜕𝑤𝑖𝑗= 𝟎

Note: we fix movie i, go over all rxi, for every movie 𝒋 ∈ 𝑵 𝒊; 𝒙 ,

we compute 𝝏

𝝏𝒘𝒊𝒋

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 13

… learning rate

while |wnew - wold| > ε:

wold = wnew

wnew = wold - ·wold

min𝑤𝑖𝑗 𝑏𝑥𝑖 + 𝑤𝑖𝑗 𝑟𝑥𝑗 − 𝑏𝑥𝑗

𝑗∈𝑁 𝑖;𝑥

− 𝑟𝑥𝑖

2

𝑥

Page 14: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

So far: 𝑟𝑥𝑖 = 𝑏𝑥𝑖 + 𝑤𝑖𝑗 𝑟𝑥𝑗 − 𝑏𝑥𝑗𝑗∈𝑁(𝑖;𝑥)

Weights wij derived based on their role; no use of an arbitrary similarity measure (wij sij)

Explicitly account for interrelationships among the neighboring movies

Next: Latent factor model

Extract “regional” correlations

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 14

Global effects

Factorization

CF/NN

Page 15: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Grand Prize: 0.8563

Netflix: 0.9514

Movie average: 1.0533

User average: 1.0651

Global average: 1.1296

Basic Collaborative filtering: 0.94

CF+Biases+learnt weights: 0.91

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 15

Page 16: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Geared towards females

Geared towards males

Serious

Funny 2/10/2013 16 Jure Leskovec, Stanford C246: Mining Massive Datasets

The Princess Diaries

The Lion King

Braveheart

Lethal Weapon

Independence Day

Amadeus The Color Purple

Dumb and Dumber

Ocean’s 11

Sense and Sensibility

Page 17: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

“SVD” on Netflix data: R ≈ Q · PT

For now let’s assume we can approximate the rating matrix R as a product of “thin” Q · PT

R has missing entries but let’s ignore that for now! Basically, we will want the reconstruction error to be small on known

ratings and we don’t care about the values on the missing ones

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 17

4 5 5 3 1

3 1 2 4 4 5

5 3 4 3 2 1 4 2

2 4 5 4 2

5 2 2 4 3 4

4 2 3 3 1

.2 -.4 .1

.5 .6 -.5

.5 .3 -.2

.3 2.1 1.1

-2 2.1 -.7

.3 .7 -1

-.9 2.4 1.4 .3 -.4 .8 -.5 -2 .5 .3 -.2 1.1

1.3 -.1 1.2 -.7 2.9 1.4 -1 .3 1.4 .5 .7 -.8

.1 -.6 .7 .8 .4 -.3 .9 2.4 1.7 .6 -.4 2.1

users

item

s

PT

Q

item

s

users

R

SVD: A = U VT

f factors

f facto

rs

Page 18: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

How to estimate the missing rating of user x for item i?

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 18

4 5 5 3 1

3 1 2 4 4 5

5 3 4 3 2 1 4 2

2 4 5 4 2

5 2 2 4 3 4

4 2 3 3 1

item

s

.2 -.4 .1

.5 .6 -.5

.5 .3 -.2

.3 2.1 1.1

-2 2.1 -.7

.3 .7 -1

-.9 2.4 1.4 .3 -.4 .8 -.5 -2 .5 .3 -.2 1.1

1.3 -.1 1.2 -.7 2.9 1.4 -1 .3 1.4 .5 .7 -.8

.1 -.6 .7 .8 .4 -.3 .9 2.4 1.7 .6 -.4 2.1

item

s

users

users

?

PT

𝒓 𝒙𝒊 = 𝒒𝒊 ⋅ 𝒑𝒙𝑻

= 𝒒𝒊𝒇 ⋅ 𝒑𝒙𝒇𝒇

qi = row i of Q

px = column x of PT

f fa

cto

rs

Q f factors

Page 19: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

How to estimate the missing rating of user x for item i?

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 19

4 5 5 3 1

3 1 2 4 4 5

5 3 4 3 2 1 4 2

2 4 5 4 2

5 2 2 4 3 4

4 2 3 3 1

item

s

.2 -.4 .1

.5 .6 -.5

.5 .3 -.2

.3 2.1 1.1

-2 2.1 -.7

.3 .7 -1

-.9 2.4 1.4 .3 -.4 .8 -.5 -2 .5 .3 -.2 1.1

1.3 -.1 1.2 -.7 2.9 1.4 -1 .3 1.4 .5 .7 -.8

.1 -.6 .7 .8 .4 -.3 .9 2.4 1.7 .6 -.4 2.1

item

s

users

users

?

PT

f fa

cto

rs

Q f factors

𝒓 𝒙𝒊 = 𝒒𝒊 ⋅ 𝒑𝒙𝑻

= 𝒒𝒊𝒇 ⋅ 𝒑𝒙𝒇𝒇

qi = row i of Q

px = column x of PT

Page 20: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

How to estimate the missing rating of user x for item i?

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 20

4 5 5 3 1

3 1 2 4 4 5

5 3 4 3 2 1 4 2

2 4 5 4 2

5 2 2 4 3 4

4 2 3 3 1

item

s

.2 -.4 .1

.5 .6 -.5

.5 .3 -.2

.3 2.1 1.1

-2 2.1 -.7

.3 .7 -1

-.9 2.4 1.4 .3 -.4 .8 -.5 -2 .5 .3 -.2 1.1

1.3 -.1 1.2 -.7 2.9 1.4 -1 .3 1.4 .5 .7 -.8

.1 -.6 .7 .8 .4 -.3 .9 2.4 1.7 .6 -.4 2.1

item

s

users

users

?

Q

PT

2.4

f fa

cto

rs

f factors

𝒓 𝒙𝒊 = 𝒒𝒊 ⋅ 𝒑𝒙𝑻

= 𝒒𝒊𝒇 ⋅ 𝒑𝒙𝒇𝒇

qi = row i of Q

px = column x of PT

Page 21: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Geared towards females

Geared towards males

Serious

Funny 2/10/2013 21 Jure Leskovec, Stanford C246: Mining Massive Datasets

The Princess Diaries

The Lion King

Braveheart

Lethal Weapon

Independence Day

Amadeus The Color Purple

Dumb and Dumber

Ocean’s 11

Sense and Sensibility

Factor 1

Facto

r 2

Page 22: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Geared towards females

Geared towards males

Serious

Funny 2/10/2013 22 Jure Leskovec, Stanford C246: Mining Massive Datasets

The Princess Diaries

The Lion King

Braveheart

Lethal Weapon

Independence Day

Amadeus The Color Purple

Dumb and Dumber

Ocean’s 11

Sense and Sensibility

Factor 1

Facto

r 2

Page 23: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Remember SVD:

A: Input data matrix

U: Left singular vecs

V: Right singular vecs

: Singular values

SVD gives minimum reconstruction error (SSE!)

min𝑈,V,Σ

𝐴𝑖𝑗 − 𝑈Σ𝑉T𝑖𝑗2

𝑖𝑗

So in our case, “SVD” on Netflix data: R ≈ Q · PT A = R, Q = U, PT = VT

But, we are not done yet! R has missing entries!

A m

n

m

n

VT

2/10/2013 23 Jure Leskovec, Stanford C246: Mining Massive Datasets

U

The sum goes over all entries.

But our R has missing entries!

𝒓 𝒙𝒊 = 𝒒𝒊 ⋅ 𝒑𝒙𝑻

Page 24: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

SVD isn’t defined when entries are missing! Use specialized methods to find P, Q

min𝑃,𝑄 𝑟𝑥𝑖 − 𝑞𝑖 ⋅ 𝑝𝑥

𝑇 2𝑖,𝑥 ∈R

Note: We don’t require cols of P, Q to be orthogonal/unit length

P, Q map users/movies to a latent space

The most popular model among Netflix contestants

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 24

4 5 5 3 1

3 1 2 4 4 5

5 3 4 3 2 1 4 2

2 4 5 4 2

5 2 2 4 3 4

4 2 3 3 1

.2 -.4 .1

.5 .6 -.5

.5 .3 -.2

.3 2.1 1.1

-2 2.1 -.7

.3 .7 -1

-.9 2.4 1.4 .3 -.4 .8 -.5 -2 .5 .3 -.2 1.1

1.3 -.1 1.2 -.7 2.9 1.4 -1 .3 1.4 .5 .7 -.8

.1 -.6 .7 .8 .4 -.3 .9 2.4 1.7 .6 -.4 2.1

PT

Q

users

item

s

𝑟 𝑥𝑖 = 𝑞𝑖 ⋅ 𝑝𝑥𝑇

f factors

f facto

rs

item

s

users

Page 25: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Want to minimize SSE for unseen test data Idea: Minimize SSE on training data

Want large f (# of factors) to capture all the signals

But, SSE on test data begins to rise for f > 2

Regularization is needed!

Allow rich model where there are sufficient data

Shrink aggressively where data are scarce

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 25

i

i

x

x

training

T

xixiQP

qppqr222

,

)(min

1 3 4

3 5 5

4 5 5

3

3

2 ? ?

?

2 1 ?

3 ?

1

… regularization parameter

“error” “length”

Page 26: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Geared towards females

Geared towards males

serious

funny 2/10/2013 26 Jure Leskovec, Stanford C246: Mining Massive Datasets

The Princess Diaries

The Lion King

Braveheart

Lethal Weapon

Independence Day

Amadeus The Color Purple

Dumb and Dumber

Ocean’s 11

Sense and Sensibility

Factor 1

Fa

cto

r 2

minfactors “error” + “length”

i

i

x

x

training

T

xixiQP

qppqr222

,

)(min

Page 27: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Geared towards females

Geared towards males

serious

funny 2/10/2013 27 Jure Leskovec, Stanford C246: Mining Massive Datasets

The Lion King

Braveheart

Lethal Weapon

Independence Day

Amadeus The Color Purple

Dumb and Dumber

Ocean’s 11

Sense and Sensibility

Factor 1

Fa

cto

r 2

The Princess Diaries

minfactors “error” + “length”

i

i

x

x

training

T

xixiQP

qppqr222

,

)(min

Page 28: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Geared towards females

Geared towards males

serious

funny 2/10/2013 28 Jure Leskovec, Stanford C246: Mining Massive Datasets

The Lion King

Braveheart

Lethal Weapon

Independence Day

Amadeus The Color Purple

Dumb and Dumber

Ocean’s 11

Sense and Sensibility

Factor 1

Fa

cto

r 2

minfactors “error” + “length”

The Princess Diaries

i

i

x

x

training

T

xixiQP

qppqr222

,

)(min

Page 29: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Geared towards females

Geared towards males

serious

funny 2/10/2013 29 Jure Leskovec, Stanford C246: Mining Massive Datasets

The Lion King

Braveheart

Lethal Weapon

Independence Day

Amadeus The Color Purple

Dumb and Dumber

Ocean’s 11

Sense and Sensibility

Factor 1

Fa

cto

r 2

The Princess Diaries

minfactors “error” + “length”

i

i

x

x

training

T

xixiQP

qppqr222

,

)(min

Page 30: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Want to find matrices P and Q:

Gradient decent: Initialize P and Q (using SVD, pretend missing ratings are 0)

Do gradient descent: P P - ·P

Q Q - ·Q

Where Q is gradient/derivative of matrix Q: 𝛻𝑄 = [𝛻𝑞𝑖𝑓] and 𝛻𝑞𝑖𝑓 = −2 𝑟𝑥𝑖 − 𝑞𝑖𝑝𝑥

𝑇 𝑝𝑥𝑓𝑥,𝑖 + 2𝜆𝑞𝑖𝑓 Here 𝒒𝒊𝒇 is entry f of row qi of matrix Q

Observation: Computing gradients is slow! 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 30

i

i

x

x

training

T

xixiQP

qppqr222

,

)(min

How to compute gradient

of a matrix?

Compute gradient of every

element independently!

Page 31: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Gradient Descent (GD) vs. Stochastic GD Observation: 𝛻𝑄 = [𝛻𝑞𝑖𝑓] where

𝛻𝑞𝑖𝑓 = −2 𝑟𝑥𝑖 − 𝑞𝑖𝑓𝑝𝑥𝑓 𝑝𝑥𝑓𝑥,𝑖

+ 2𝜆𝑞𝑖𝑓 = 𝑸

𝒙,𝒊

𝒓𝒙𝒊

Here 𝒒𝒊𝒇 is entry f of row qi of matrix Q

𝑸 = 𝑸− 𝑸 = 𝑸− 𝑸𝒙,𝒊 (𝒓𝒙𝒊)

Idea: Instead of evaluating gradient over all ratings evaluate it for each individual rating and make a step

GD: 𝑸𝑸 − 𝑸(𝒓𝒙𝒊)𝒓𝒙𝒊 SGD: 𝑸𝑸 − 𝑸(𝒓𝒙𝒊) Faster convergence! Need more steps but each step is computed much faster

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 31

Page 32: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Convergence of GD vs. SGD

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 32

Iteration/step

Valu

e o

f th

e o

bje

cti

ve f

un

cti

on

GD improves the value

of the objective function

at every step.

SGD improves the value

but in a “noisy” way.

GD takes fewer steps to

converge but each step

takes much longer to

compute.

In practice, SGD is

much faster!

Page 33: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Stochastic gradient decent:

Initialize P and Q (using SVD, pretend missing ratings are 0)

Then iterate over the ratings (multiple times if necessary) and update factors:

For each rxi:

𝜀𝑥𝑖 = 𝑟𝑥𝑖 − 𝑞𝑖 ⋅ 𝑝𝑥𝑇 (derivative of the “error”)

𝑞𝑖 ← 𝑞𝑖 + 𝜂 𝜀𝑥𝑖 𝑝𝑥 − 𝜆 𝑞𝑖 (update equation)

𝑝𝑥 ← 𝑝𝑥 + 𝜂 𝜀𝑥𝑖 𝑞𝑖 − 𝜆 𝑝𝑥 (update equation)

2 for loops: For until convergence:

For each rxi

Compute gradient, do a “step” 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 33

… learning rate

Page 34: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Koren, Bell, Volinksy, IEEE Computer, 2009 2/10/2013 34 Jure Leskovec, Stanford C246: Mining Massive Datasets

Page 35: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 35

Page 36: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 36

μ = overall mean rating bx = bias of user x bi = bias of movie i

user-movie interaction movie bias user bias

User-Movie interaction Characterizes the matching between

users and movies Attracts most research in the field Benefits from algorithmic and

mathematical innovations

Baseline predictor

Separates users and movies

Benefits from insights into user’s behavior

Among the main practical contributions of the competition

Page 37: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

We have expectations on the rating by user x of movie i, even without estimating x’s attitude towards movies like i

– Rating scale of user x

– Values of other ratings user gave recently (day-specific mood, anchoring, multi-user accounts)

– (Recent) popularity of movie i

– Selection bias; related to number of ratings user gave on the same day (“frequency”)

2/10/2013 37 Jure Leskovec, Stanford C246: Mining Massive Datasets

Page 38: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Example: Mean rating: = 3.7

You are a critical reviewer: your ratings are 1 star lower than the mean: bx = -1

Star Wars gets a mean rating of 0.5 higher than average movie: bi = + 0.5

Predicted rating for you on Star Wars: = 3.7 - 1 + 0.5 = 3.2

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 38

Overall mean rating

Bias for user x

Bias for movie i

𝑟𝑥𝑖 = 𝜇 + 𝑏𝑥 + 𝑏𝑖 + 𝑞𝑖⋅ 𝑝𝑥𝑇

User-Movie interaction

Page 39: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Solve:

Stochastic gradient decent to find parameters

Note: Both biases bu, bi as well as interactions qi, pu are treated as parameters (we estimate them)

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 39

regularization

goodness of fit

is selected via grid-

search on a validation set

i

i

x

x

x

x

i

i

Rix

T

xiixxiPQ

bbpq

pqbbr

2222

2

),(,

)(min

Page 40: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

40

0.885

0.89

0.895

0.9

0.905

0.91

0.915

0.92

1 10 100 1000

RM

SE

Millions of parameters

CF (no time bias)

Basic Latent Factors

Latent Factors w/ Biases

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets

Page 41: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Grand Prize: 0.8563

Netflix: 0.9514

Movie average: 1.0533

User average: 1.0651

Global average: 1.1296

Basic Collaborative filtering: 0.94

Latent factors: 0.90

Latent factors+Biases: 0.89

Collaborative filtering++: 0.91

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 41

Page 42: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies
Page 43: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Sudden rise in the average movie rating (early 2004) Improvements in Netflix GUI improvements Meaning of rating changed

Movie age Users prefer new movies

without any reasons Older movies are just

inherently better than newer ones

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 43

Y. Koren, Collaborative filtering with

temporal dynamics, KDD ’09

Page 44: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Original model: rxi = +bx + bi + qi ·px

T

Add time dependence to biases: rxi = +bx(t)+ bi(t) +qi · px

T

Make parameters bu and bi to depend on time

(1) Parameterize time-dependence by linear trends (2) Each bin corresponds to 10 consecutive weeks

Add temporal dependence to factors

px(t)… user preference vector on day t

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 44 Y. Koren, Collaborative filtering with temporal dynamics, KDD ’09

Page 45: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 45

0.875

0.88

0.885

0.89

0.895

0.9

0.905

0.91

0.915

0.92

1 10 100 1000 10000

RM

SE

Millions of parameters

CF (no time bias)

Basic Latent Factors

CF (time bias)

Latent Factors w/ Biases

+ Linear time factors

+ Per-day user biases

+ CF

Page 46: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Grand Prize: 0.8563

Netflix: 0.9514

Movie average: 1.0533

User average: 1.0651

Global average: 1.1296

Basic Collaborative filtering: 0.94

Latent factors: 0.90

Latent factors+Biases: 0.89

Collaborative filtering++: 0.91

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 46

Latent factors+Biases+Time: 0.876

Still no prize!

Getting desperate.

Try a “kitchen

sink” approach!

Page 47: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 47

Page 48: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 48

June 26th submission triggers 30-day “last call”

Page 49: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Ensemble team formed Group of other teams on leaderboard forms a new team

Relies on combining their models

Quickly also get a qualifying score over 10%

BellKor Continue to get small improvements in their scores

Realize that they are in direct competition with Ensemble

Strategy Both teams carefully monitoring the leaderboard

Only sure way to check for improvement is to submit a set of predictions This alerts the other team of your latest score

2/10/2013 49 Jure Leskovec, Stanford C246: Mining Massive Datasets

Page 50: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Submissions limited to 1 a day Only 1 final submission could be made in the last 24h

24 hours before deadline… BellKor team member in Austria notices (by chance) that

Ensemble posts a score that is slightly better than BellKor’s

Frantic last 24 hours for both teams Much computer time on final optimization Carefully calibrated to end about an hour before deadline

Final submissions BellKor submits a little early (on purpose), 40 mins before

deadline Ensemble submits their final entry 20 mins later ….and everyone waits….

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 50

Page 51: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 51

Page 52: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 52

Page 53: CS246: Mining Massive Datasets Jure Leskovec, ... · Test Data Set SSE = ( , )∈ − 2 2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 4 480,000 users 17,700 movies

Some slides and plots borrowed from Yehuda Koren, Robert Bell and Padhraic Smyth

Further reading:

Y. Koren, Collaborative filtering with temporal dynamics, KDD ’09

http://www2.research.att.com/~volinsky/netflix/bpc.html

http://www.the-ensemble.com/

2/10/2013 Jure Leskovec, Stanford C246: Mining Massive Datasets 53