Prof. Andy Catlin IS 643 - Special Topics: Recommender Systems Department of Data Analytics, City University of New York
Matrix Factorization Method
data("MovieLense")
#subsetting MovieLense data set to a 10 x 20 Matrix
sub_Movies<-MovieLense[c(1:20),c(1:10)]
#converting realRatingmatrix to matrix
Movie_n<-as(sub_Movies, "matrix")
hist(Movie_n, xlab = "Ratings",main = paste("Histogram of Ratings"))
#replacing NA with random ratings
rna<-matrix(sample(1:5,200,replace=TRUE),ncol=10,byrow=FALSE)
Movie_n[is.na(Movie_n)]<-sample(rna[,1:5])
## Warning in Movie_n[is.na(Movie_n)] <- sample(rna[, 1:5]): number of items
## to replace is not a multiple of replacement length
head(Movie_n)
## Toy Story (1995) GoldenEye (1995) Four Rooms (1995) Get Shorty (1995)
## 1 5 3 4 3
## 2 4 4 5 4
## 3 5 3 2 1
## 4 5 3 4 2
## 5 4 3 5 4
## 6 4 5 5 3
## Copycat (1995) Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)
## 1 3 5
## 2 2 1
## 3 4 4
## 4 3 4
## 5 4 2
## 6 2 2
## Twelve Monkeys (1995) Babe (1995) Dead Man Walking (1995)
## 1 4 1 5
## 2 2 5 4
## 3 3 1 2
## 4 3 5 1
## 5 5 5 2
## 6 2 4 4
## Richard III (1995)
## 1 3
## 2 2
## 3 5
## 4 5
## 5 4
## 6 2
summary(Movie_n)
## Toy Story (1995) GoldenEye (1995) Four Rooms (1995) Get Shorty (1995)
## Min. :1.00 Min. :1.0 Min. :1.00 Min. :1.00
## 1st Qu.:2.75 1st Qu.:2.0 1st Qu.:2.00 1st Qu.:3.00
## Median :4.00 Median :3.0 Median :3.00 Median :4.00
## Mean :3.55 Mean :3.2 Mean :3.05 Mean :3.50
## 3rd Qu.:5.00 3rd Qu.:4.0 3rd Qu.:4.25 3rd Qu.:4.25
## Max. :5.00 Max. :5.0 Max. :5.00 Max. :5.00
## Copycat (1995) Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)
## Min. :1.00 Min. :1.00
## 1st Qu.:2.00 1st Qu.:2.00
## Median :3.00 Median :4.00
## Mean :2.95 Mean :3.25
## 3rd Qu.:4.00 3rd Qu.:5.00
## Max. :5.00 Max. :5.00
## Twelve Monkeys (1995) Babe (1995) Dead Man Walking (1995)
## Min. :1.00 Min. :1.00 Min. :1.00
## 1st Qu.:2.00 1st Qu.:2.75 1st Qu.:2.75
## Median :4.00 Median :4.00 Median :4.00
## Mean :3.45 Mean :3.60 Mean :3.55
## 3rd Qu.:5.00 3rd Qu.:5.00 3rd Qu.:5.00
## Max. :5.00 Max. :5.00 Max. :5.00
## Richard III (1995)
## Min. :1.00
## 1st Qu.:2.00
## Median :3.50
## Mean :3.35
## 3rd Qu.:5.00
## Max. :5.00
str(Movie_n)
## num [1:20, 1:10] 5 4 5 5 4 4 1 5 5 4 ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:20] "1" "2" "3" "4" ...
## ..$ : chr [1:10] "Toy Story (1995)" "GoldenEye (1995)" "Four Rooms (1995)" "Get Shorty (1995)" ...
#Non Negative Matrix Factorization
be <- nmf(Movie_n, 10,"lee") #Euclidean distance
#extract the fitted values of the model
modVal <- fitted(be)
## visualize the fitted values of the matrix
image.default(modVal,xlab="Fitted Values")
# Estimated target matrix
modVal
## Toy Story (1995) GoldenEye (1995) Four Rooms (1995) Get Shorty (1995)
## 1 5.1708234 3.078697 3.891295 3.2448399
## 2 3.8531160 3.986153 5.061201 3.9223209
## 3 4.7944901 2.929194 2.280730 0.9692533
## 4 5.3441846 2.948629 3.547535 2.3694479
## 5 3.9297703 2.953149 5.050887 3.9157732
## 6 4.0490819 4.983399 4.947892 3.0526621
## 7 1.1589118 4.001077 2.011320 4.7411957
## 8 4.8619060 2.018250 3.972542 2.2194311
## 9 5.0400564 1.021508 1.955772 2.9286953
## 10 3.9842309 1.940322 3.027552 3.8964112
## 11 2.1323241 4.986258 1.040578 5.1374127
## 12 2.8737210 1.168679 5.136111 4.7990504
## 13 2.8705766 2.952461 1.260907 5.0470067
## 14 1.9986230 4.001931 2.996273 4.0041152
## 15 1.2308601 3.105522 4.959971 4.0136892
## 16 5.0207521 2.052769 1.984571 5.0507141
## 17 4.1123443 5.043733 1.881336 1.1408395
## 18 4.8736814 4.898783 1.233871 2.9035057
## 19 0.8780879 3.996519 1.066606 3.9361237
## 20 2.8514862 2.141526 4.048610 3.0810702
## Copycat (1995) Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)
## 1 3.0392386 4.822663
## 2 1.9320833 1.231869
## 3 3.9158388 4.159298
## 4 3.0367022 3.660475
## 5 4.0496107 2.105384
## 6 2.0835697 1.958137
## 7 3.0649739 1.177342
## 8 1.0073412 2.287341
## 9 5.0319517 4.930793
## 10 2.0055028 5.091876
## 11 2.9826671 4.917457
## 12 2.0138900 4.128929
## 13 0.9906292 4.966394
## 14 3.9997214 1.999356
## 15 3.9380534 1.168606
## 16 5.0137894 4.946684
## 17 2.0328311 3.821789
## 18 1.9757504 5.076174
## 19 3.9854085 2.054146
## 20 2.9051586 1.248128
## Twelve Monkeys (1995) Babe (1995) Dead Man Walking (1995)
## 1 3.9309333 1.001065 4.889009
## 2 2.0355009 5.057129 4.020499
## 3 3.0302963 1.124830 2.029393
## 4 3.0715868 4.795073 1.362263
## 5 4.9871203 5.048474 2.030989
## 6 1.9851189 3.967138 4.015162
## 7 4.9293887 5.113690 4.981326
## 8 3.0579347 1.878825 4.998402
## 9 3.9723989 3.030111 1.195260
## 10 3.8820596 2.120964 4.127379
## 11 5.0282372 3.918607 5.010802
## 12 1.0201618 1.089980 3.980252
## 13 2.0881350 3.989092 2.939659
## 14 5.0028608 3.994911 4.002074
## 15 0.9900129 2.969189 3.844069
## 16 5.0305683 4.964107 4.939512
## 17 4.0203186 2.959870 2.969854
## 18 5.0064392 5.076303 5.081202
## 19 1.0672976 5.042618 2.970910
## 20 5.0054896 4.961251 1.988293
## Richard III (1995)
## 1 3.017479
## 2 2.008301
## 3 4.990162
## 4 5.084611
## 5 3.954587
## 6 1.992422
## 7 4.116320
## 8 4.928688
## 9 2.018683
## 10 3.921382
## 11 4.923916
## 12 4.964442
## 13 2.076240
## 14 3.999272
## 15 2.130583
## 16 3.028935
## 17 1.104956
## 18 4.985040
## 19 1.048577
## 20 2.940730
# W user feature matrix matrix
w <- basis(be)
basismap(be)
hist(w)
# movie coef matrix
h <- coef(be)
hist(h)
coefmap(be)
# recommended Movies
lkmovie <- data.frame(t(h))
lkmovie
## X1
## Toy Story (1995) 7.830177e+00
## GoldenEye (1995) 1.468957e-05
## Four Rooms (1995) 3.306304e+01
## Get Shorty (1995) 1.409833e+01
## Copycat (1995) 4.980998e+00
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 3.962797e-10
## Twelve Monkeys (1995) 8.705717e-01
## Babe (1995) 1.139558e+00
## Dead Man Walking (1995) 1.541979e+01
## Richard III (1995) 1.581376e+01
## X2
## Toy Story (1995) 5.322065e-01
## GoldenEye (1995) 7.380831e+00
## Four Rooms (1995) 4.178203e-10
## Get Shorty (1995) 1.668038e+01
## Copycat (1995) 4.981107e-01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 2.018154e+01
## Twelve Monkeys (1995) 3.162762e+00
## Babe (1995) 2.491635e-02
## Dead Man Walking (1995) 1.044027e+01
## Richard III (1995) 9.535907e+00
## X3
## Toy Story (1995) 2.796032e-01
## GoldenEye (1995) 7.792626e-08
## Four Rooms (1995) 1.325244e-04
## Get Shorty (1995) 7.785420e+00
## Copycat (1995) 2.062133e+01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.078294e+01
## Twelve Monkeys (1995) 5.571920e+00
## Babe (1995) 3.280481e-02
## Dead Man Walking (1995) 4.163679e+00
## Richard III (1995) 9.010456e-03
## X4
## Toy Story (1995) 2.384200e+01
## GoldenEye (1995) 1.234082e-03
## Four Rooms (1995) 9.726971e+00
## Get Shorty (1995) 9.645399e-05
## Copycat (1995) 4.176286e-02
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.040210e+01
## Twelve Monkeys (1995) 1.240269e+01
## Babe (1995) 8.896839e-02
## Dead Man Walking (1995) 2.608073e+00
## Richard III (1995) 3.170905e-03
## X5
## Toy Story (1995) 1.231955e+01
## GoldenEye (1995) 2.046954e+00
## Four Rooms (1995) 1.339780e-02
## Get Shorty (1995) 2.341885e-07
## Copycat (1995) 4.978529e-01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 8.690251e+00
## Twelve Monkeys (1995) 1.453394e+01
## Babe (1995) 1.359601e+01
## Dead Man Walking (1995) 7.079294e-02
## Richard III (1995) 3.203754e+00
## X6
## Toy Story (1995) 1.939470e+01
## GoldenEye (1995) 5.613029e-01
## Four Rooms (1995) 6.364446e+00
## Get Shorty (1995) 2.805674e-09
## Copycat (1995) 3.279183e+00
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.518530e+01
## Twelve Monkeys (1995) 2.652855e-02
## Babe (1995) 1.894553e+00
## Dead Man Walking (1995) 5.644164e-07
## Richard III (1995) 1.900676e+01
## X7
## Toy Story (1995) 3.203190e+00
## GoldenEye (1995) 4.987570e+00
## Four Rooms (1995) 6.165906e-01
## Get Shorty (1995) 2.268397e+01
## Copycat (1995) 3.506149e+00
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 6.207513e-03
## Twelve Monkeys (1995) 6.051688e-03
## Babe (1995) 4.374843e+01
## Dead Man Walking (1995) 4.396533e-04
## Richard III (1995) 9.105002e-04
## X8
## Toy Story (1995) 3.168623e+00
## GoldenEye (1995) 1.044401e+01
## Four Rooms (1995) 8.563934e-07
## Get Shorty (1995) 7.138587e+00
## Copycat (1995) 1.448014e+00
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.003184e-08
## Twelve Monkeys (1995) 1.021794e+01
## Babe (1995) 5.720502e+00
## Dead Man Walking (1995) 2.479502e+01
## Richard III (1995) 1.615582e+01
## X9
## Toy Story (1995) 4.570975e-01
## GoldenEye (1995) 1.104007e+01
## Four Rooms (1995) 3.803470e+00
## Get Shorty (1995) 1.986741e+00
## Copycat (1995) 1.582267e+01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 7.238915e-05
## Twelve Monkeys (1995) 2.233257e+01
## Babe (1995) 4.817244e+00
## Dead Man Walking (1995) 3.267961e-10
## Richard III (1995) 3.495945e+00
## X10
## Toy Story (1995) 1.884968e-03
## GoldenEye (1995) 2.774658e+01
## Four Rooms (1995) 7.767511e+00
## Get Shorty (1995) 3.629677e-05
## Copycat (1995) 8.308644e+00
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 5.044288e-01
## Twelve Monkeys (1995) 1.688230e-02
## Babe (1995) 1.040237e+00
## Dead Man Walking (1995) 1.387825e+01
## Richard III (1995) 1.028583e-02
fmat<-lkmovie[,c("X3","X6")]
fmat
## X3
## Toy Story (1995) 2.796032e-01
## GoldenEye (1995) 7.792626e-08
## Four Rooms (1995) 1.325244e-04
## Get Shorty (1995) 7.785420e+00
## Copycat (1995) 2.062133e+01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.078294e+01
## Twelve Monkeys (1995) 5.571920e+00
## Babe (1995) 3.280481e-02
## Dead Man Walking (1995) 4.163679e+00
## Richard III (1995) 9.010456e-03
## X6
## Toy Story (1995) 1.939470e+01
## GoldenEye (1995) 5.613029e-01
## Four Rooms (1995) 6.364446e+00
## Get Shorty (1995) 2.805674e-09
## Copycat (1995) 3.279183e+00
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.518530e+01
## Twelve Monkeys (1995) 2.652855e-02
## Babe (1995) 1.894553e+00
## Dead Man Walking (1995) 5.644164e-07
## Richard III (1995) 1.900676e+01
aheatmap(fmat)