twolu - movie recommendations for two!
TRANSCRIPT
Allen Sussman
Find movies for two
Can we find a movie we’ll both actually like?
Each person enters movies they like and twolu finds movies they’ll both like
Each person enters movies they like and twolu finds movies they’ll both like
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Ratings TableAlgorithm: Collaborative Filtering
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity MatrixRatings TableAlgorithm: Collaborative Filtering
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Say User 1 likes Clue User 2 likes Babe
Ratings TableAlgorithm: Collaborative Filtering
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Say User 1 likes Clue User 2 likes Babe
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Ratings TableAlgorithm: Collaborative Filtering
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Say User 1 likes Clue User 2 likes Babe
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue1
0.20.30.40.5
Babe0.40.20.21
0.5
f( , )=
Ratings TableAlgorithm: Collaborative Filtering
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Say User 1 likes Clue User 2 likes Babe
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue1
0.20.30.40.5
Babe0.40.20.21
0.5
f( , )=
Ratings TableAlgorithm: Collaborative Filtering
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue 0.6Kids 0.2Jaw
s0.225
Babe
0.6Big 0.5
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Say User 1 likes Clue User 2 likes Babe
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue1
0.20.30.40.5
Babe0.40.20.21
0.5
f( , )=
Largest number is for the movie Big. Users should watch it!
Ratings TableAlgorithm: Collaborative Filtering
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue 0.6Kids 0.2Jaw
s0.225
Babe
0.6Big 0.5
Clue 0.6Kids 0.2Jaw
s0.225
Babe
0.6Big 0.5
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Say User 1 likes Clue User 2 likes Babe
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue1
0.20.30.40.5
Babe0.40.20.21
0.5
f( , )=
Largest number is for the movie Big. Users should watch it!
Ratings TableAlgorithm: Collaborative Filtering
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue 0.6Kids 0.2Jaw
s0.225
Babe
0.6Big 0.5
Clue 0.6Kids 0.2Jaw
s0.225
Babe
0.6Big 0.5
Cross-validation: 90% of recommendations were given a rating of 3 or above by both users
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Allen Sussman, Ph.D.
Training Set
Test Set
Users->
Movies->Ratings Table
Cross-ValidationMovies Similarity Matrix
Test Set Features Ground Truth
Consider two users in test set
User 1 User 2
Use algorithm and similarity matrix on
Clue Kids Jaws Babe Big1 4 3 1 5 22 4 5 1 5 2
Ground Truth
Clue Kids Jaws Babe Big
Y Y Y
My Recommendations
P N
T Clue Big
F Jaws Babe
Ground TruthFeatures
to predict then compare predictions and truth
0.60.2
0.2250.60.5
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Say User 1 likes Clue User 2 likes Babe
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue1
0.20.30.40.5
Babe0.40.20.21
0.5
f( , )= 0.60.2
0.2250.60.5
Largest number is for the movie Big. Users should watch it!f(s1,s2)=mean(s1,s2)-α*diff(s1,s2)
f(s1,1,s1,2,…,s2,1,s2,2,…) = mean(s1,1,s1,2,…,s2,1,s2,2,…)- α*std(s1,1,s1,2,…,s2,1,s2,2,…)-β*diff(mean(s1,1,s1,2,…),mean(s2,1,s2,2,…))
For multiple input movies,
Ratings TableAlgorithm
0.60.2
0.2250.60.5
Movies->Clue Kids Jaws Babe Big
1 5 3 4 5 None2 None 5 1 5 None3 3 None 1 4 34 1 5 1 4 35 2 4 1 4 5
Users->
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Movies Similarity Matrix
Say User 1 likes Clue User 2 likes Babe
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1
Clue1
0.20.30.40.5
Babe0.40.20.21
0.5
f( , )= 0.60.2
0.2250.60.5
Largest number is for the movie Big. Users should watch it!
Ratings TableAlgorithm
Clue Kids Jaws Babe BigClue 1 0.2 0.3 0.4 0.5Kids 0.2 1 0.3 0.2 0.3Jaws 0.3 0.3 1 0.2 0.3Babe 0.4 0.2 0.2 1 0.5Big 0.5 0.3 0.3 0.5 1