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 2 5 1
## 3 3 4 1 4
## 4 4 2 3 3
## 5 4 3 3 1
## 6 4 1 3 2
## Copycat (1995) Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)
## 1 3 5
## 2 1 5
## 3 1 3
## 4 3 3
## 5 2 4
## 6 5 1
## Twelve Monkeys (1995) Babe (1995) Dead Man Walking (1995)
## 1 4 1 5
## 2 4 4 4
## 3 2 3 3
## 4 3 3 1
## 5 4 5 2
## 6 2 4 4
## Richard III (1995)
## 1 3
## 2 2
## 3 5
## 4 5
## 5 4
## 6 5
summary(Movie_n)
## Toy Story (1995) GoldenEye (1995) Four Rooms (1995) Get Shorty (1995)
## Min. :1.0 Min. :1.00 Min. :1.00 Min. :1.00
## 1st Qu.:3.0 1st Qu.:2.75 1st Qu.:2.00 1st Qu.:3.00
## Median :4.0 Median :3.00 Median :3.00 Median :4.00
## Mean :3.5 Mean :3.30 Mean :2.75 Mean :3.55
## 3rd Qu.:4.0 3rd Qu.:4.25 3rd Qu.:3.25 3rd Qu.:5.00
## Max. :5.0 Max. :5.00 Max. :5.00 Max. :5.00
## Copycat (1995) Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)
## Min. :1.0 Min. :1.00
## 1st Qu.:2.0 1st Qu.:2.75
## Median :3.0 Median :3.00
## Mean :2.9 Mean :3.30
## 3rd Qu.:4.0 3rd Qu.:4.25
## Max. :5.0 Max. :5.00
## Twelve Monkeys (1995) Babe (1995) Dead Man Walking (1995)
## Min. :1.00 Min. :1.00 Min. :1.0
## 1st Qu.:2.75 1st Qu.:2.00 1st Qu.:3.0
## Median :4.00 Median :4.00 Median :4.0
## Mean :3.45 Mean :3.35 Mean :3.8
## 3rd Qu.:4.00 3rd Qu.:4.25 3rd Qu.:5.0
## Max. :5.00 Max. :5.00 Max. :5.0
## Richard III (1995)
## Min. :1.00
## 1st Qu.:2.00
## Median :3.00
## Mean :3.05
## 3rd Qu.:4.00
## Max. :5.00
str(Movie_n)
## num [1:20, 1:10] 5 4 3 4 4 4 3 3 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.050400 2.985457 4.1154412 3.0224039
## 2 4.023885 2.033048 4.9932947 1.0380763
## 3 3.000568 3.986359 0.9819595 4.0021281
## 4 3.967337 1.953885 3.0035478 2.9967732
## 5 4.002471 3.004380 3.0011543 0.9959826
## 6 3.887993 1.165422 3.0709305 1.9932088
## 7 3.022804 3.998341 1.0780371 4.9978878
## 8 3.015928 2.983711 0.9916676 1.0235054
## 9 4.990785 1.281619 3.0395422 4.9507952
## 10 3.990667 2.037433 2.9587739 3.9867390
## 11 4.056132 3.077685 1.9989209 2.9808603
## 12 0.978549 5.029745 4.0095095 4.9950444
## 13 3.015334 2.972373 2.0601645 5.0189801
## 14 2.005497 4.987067 2.0187618 4.0089033
## 15 1.144530 2.809445 1.9902270 5.0300599
## 16 4.971312 2.991440 4.9424279 4.9947995
## 17 4.010838 4.956396 1.1089739 5.0145196
## 18 4.995512 5.014270 2.0057087 3.0003691
## 19 2.983611 3.988723 2.9908162 4.0037600
## 20 2.969320 5.007846 4.8494291 2.9769835
## Copycat (1995) Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)
## 1 3.0178151 5.0077911
## 2 0.9856385 4.9940199
## 3 1.0220268 3.0059381
## 4 3.0277510 3.0144669
## 5 1.9966131 3.9994780
## 6 5.0582813 0.9574106
## 7 2.9919502 2.0030498
## 8 1.9791153 5.0077612
## 9 0.9795970 4.9002598
## 10 4.9231178 0.9786937
## 11 3.9864010 3.9848890
## 12 4.9920027 1.9934569
## 13 1.0567377 1.9789842
## 14 3.0473389 4.0058724
## 15 3.9953201 3.0402118
## 16 2.0583597 3.1297029
## 17 2.0363663 3.0127148
## 18 4.9964652 4.9980733
## 19 2.9851860 2.9956360
## 20 2.9323208 2.9933754
## Twelve Monkeys (1995) Babe (1995) Dead Man Walking (1995)
## 1 3.9473946 1.2029744 4.882149
## 2 3.9598856 3.9906486 4.013240
## 3 2.0037913 3.0183254 3.008878
## 4 3.0388608 3.0053719 1.070078
## 5 3.9957805 4.9984007 2.001150
## 6 2.1820424 4.0158152 3.947589
## 7 4.9615081 4.9729725 5.019854
## 8 2.9709287 3.9910401 3.007764
## 9 4.0296166 0.9762895 5.046083
## 10 4.0001586 2.0033818 4.058252
## 11 4.9187651 3.9770976 5.030735
## 12 3.9651807 3.0017065 5.008623
## 13 1.9819409 3.9869788 2.953451
## 14 4.9906645 1.9868238 3.968346
## 15 1.2102615 3.9673351 3.998435
## 16 5.0214326 5.0214396 4.950371
## 17 3.9796641 1.9824618 2.973120
## 18 0.9937238 5.0019440 4.999742
## 19 4.0205185 5.0063399 3.004660
## 20 3.0905076 1.0272742 3.132242
## Richard III (1995)
## 1 2.8933645
## 2 2.0072120
## 3 4.9873428
## 4 4.9750483
## 5 4.0008127
## 6 4.9020760
## 7 4.0258619
## 8 5.0164483
## 9 0.9924482
## 10 3.0918869
## 11 3.0117709
## 12 2.9989492
## 13 1.0296438
## 14 1.0097086
## 15 3.0057138
## 16 2.9939519
## 17 2.0339466
## 18 3.9919994
## 19 2.0167040
## 20 2.1614655
# 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) 3.928324e+01
## GoldenEye (1995) 2.982646e-05
## Four Rooms (1995) 1.874090e-03
## Get Shorty (1995) 2.239509e+00
## Copycat (1995) 7.519155e-01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 4.873701e+00
## Twelve Monkeys (1995) 2.771271e+01
## Babe (1995) 4.934640e-01
## Dead Man Walking (1995) 3.223790e+00
## Richard III (1995) 3.641006e+00
## X2
## Toy Story (1995) 1.519349e+01
## GoldenEye (1995) 1.296708e+01
## Four Rooms (1995) 1.277781e+00
## Get Shorty (1995) 1.411720e-01
## Copycat (1995) 5.939791e+00
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 7.377078e+00
## Twelve Monkeys (1995) 2.226405e-06
## Babe (1995) 4.960292e-04
## Dead Man Walking (1995) 4.925161e+00
## Richard III (1995) 2.419400e+00
## X3
## Toy Story (1995) 5.612999e-01
## GoldenEye (1995) 5.819213e+00
## Four Rooms (1995) 1.734588e-03
## Get Shorty (1995) 6.243095e-01
## Copycat (1995) 9.139777e-04
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.057104e-03
## Twelve Monkeys (1995) 6.311675e+00
## Babe (1995) 1.438621e+01
## Dead Man Walking (1995) 4.953390e+00
## Richard III (1995) 2.112955e+01
## X4
## Toy Story (1995) 2.843040e-01
## GoldenEye (1995) 3.825216e-03
## Four Rooms (1995) 1.732067e+01
## Get Shorty (1995) 2.837974e+00
## Copycat (1995) 1.937301e+01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 7.799018e-03
## Twelve Monkeys (1995) 1.259029e-04
## Babe (1995) 5.811568e-01
## Dead Man Walking (1995) 7.051410e-02
## Richard III (1995) 2.406988e+01
## X5
## Toy Story (1995) 1.805627e-01
## GoldenEye (1995) 2.670155e+01
## Four Rooms (1995) 1.228487e+01
## Get Shorty (1995) 6.021420e+00
## Copycat (1995) 6.470924e+00
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 6.534205e-01
## Twelve Monkeys (1995) 2.369507e+01
## Babe (1995) 1.810970e-01
## Dead Man Walking (1995) 7.948202e-01
## Richard III (1995) 3.854882e-06
## X6
## Toy Story (1995) 1.356537e-01
## GoldenEye (1995) 1.130664e+01
## Four Rooms (1995) 5.466037e-05
## Get Shorty (1995) 8.791832e-03
## Copycat (1995) 7.481909e-01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 3.192493e+01
## Twelve Monkeys (1995) 4.703035e+00
## Babe (1995) 5.792429e+00
## Dead Man Walking (1995) 8.998678e-01
## Richard III (1995) 8.322027e+00
## X7
## Toy Story (1995) 4.705694e+00
## GoldenEye (1995) 3.436639e-10
## Four Rooms (1995) 1.867240e+01
## Get Shorty (1995) 2.614931e+00
## Copycat (1995) 3.371310e-01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.554437e+01
## Twelve Monkeys (1995) 5.613847e+00
## Babe (1995) 8.621408e-02
## Dead Man Walking (1995) 1.864561e+01
## Richard III (1995) 9.540865e-01
## X8
## Toy Story (1995) 8.53377011
## GoldenEye (1995) 1.24078993
## Four Rooms (1995) 5.64496634
## Get Shorty (1995) 0.89481418
## Copycat (1995) 0.63561327
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.03640003
## Twelve Monkeys (1995) 0.03467208
## Babe (1995) 29.57233105
## Dead Man Walking (1995) 2.01774847
## Richard III (1995) 0.49886187
## X9
## Toy Story (1995) 1.186179e+00
## GoldenEye (1995) 8.082464e+00
## Four Rooms (1995) 1.219773e-03
## Get Shorty (1995) 3.956436e+01
## Copycat (1995) 9.782332e-04
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 5.579416e+00
## Twelve Monkeys (1995) 2.458269e-01
## Babe (1995) 2.979034e-01
## Dead Man Walking (1995) 7.063829e+00
## Richard III (1995) 2.472713e-02
## X10
## Toy Story (1995) 0.019288326
## GoldenEye (1995) 0.143054061
## Four Rooms (1995) 0.003710578
## Get Shorty (1995) 16.084501163
## Copycat (1995) 23.809932707
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.003610830
## Twelve Monkeys (1995) 0.945665882
## Babe (1995) 15.743318167
## Dead Man Walking (1995) 33.480028267
## Richard III (1995) 0.086808519
fmat<-lkmovie[,c("X3","X6")]
fmat
## X3
## Toy Story (1995) 5.612999e-01
## GoldenEye (1995) 5.819213e+00
## Four Rooms (1995) 1.734588e-03
## Get Shorty (1995) 6.243095e-01
## Copycat (1995) 9.139777e-04
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 1.057104e-03
## Twelve Monkeys (1995) 6.311675e+00
## Babe (1995) 1.438621e+01
## Dead Man Walking (1995) 4.953390e+00
## Richard III (1995) 2.112955e+01
## X6
## Toy Story (1995) 1.356537e-01
## GoldenEye (1995) 1.130664e+01
## Four Rooms (1995) 5.466037e-05
## Get Shorty (1995) 8.791832e-03
## Copycat (1995) 7.481909e-01
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 3.192493e+01
## Twelve Monkeys (1995) 4.703035e+00
## Babe (1995) 5.792429e+00
## Dead Man Walking (1995) 8.998678e-01
## Richard III (1995) 8.322027e+00
aheatmap(fmat)