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)