The goal of this assignment is for you to try out different ways of implementing and configuring a recommender, and to evaluate your different approaches.

For this assigment, we are using the MovieLens dataset.

#import required libraries
library(knitr)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.1     ✔ purrr   0.3.2
## ✔ tibble  2.1.3     ✔ dplyr   0.8.3
## ✔ tidyr   1.0.0     ✔ stringr 1.4.0
## ✔ readr   1.3.1     ✔ forcats 0.4.0
## ── Conflicts ────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(recommenderlab)
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
## 
##     expand, pack, unpack
## Loading required package: arules
## 
## Attaching package: 'arules'
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following objects are masked from 'package:base':
## 
##     abbreviate, write
## Loading required package: proxy
## 
## Attaching package: 'proxy'
## The following object is masked from 'package:Matrix':
## 
##     as.matrix
## The following objects are masked from 'package:stats':
## 
##     as.dist, dist
## The following object is masked from 'package:base':
## 
##     as.matrix
## Loading required package: registry
## Registered S3 methods overwritten by 'registry':
##   method               from 
##   print.registry_field proxy
##   print.registry_entry proxy
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows

Let’s import the required dataset.

The dataset is generated from Movie Lens site. This dataset has over 100,000 new ratings scaled from 1 to 5. The data was collected from September 1997 to April 1998.

data(MovieLense)
data_movielens <- MovieLense@data

head(data_movielens)
## 6 x 1664 sparse Matrix of class "dgCMatrix"
##    [[ suppressing 1664 column names 'Toy Story (1995)', 'GoldenEye (1995)', 'Four Rooms (1995)' ... ]]
##                                                                          
## 1 5 3 4 3 3 5 4 1 5 3 2 5 5 5 5 5 3 4 5 4 1 4 4 3 4 3 2 4 1 3 3 5 4 2 1 2
## 2 4 . . . . . . . . 2 . . 4 4 . . . . 3 . . . . . 4 . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 4 3 . . . . . . . . . . . . . . 4 . . . 3 . . 4 3 . . . 4 . . . . . . .
## 6 4 . . . . . 2 4 4 . . 4 2 5 3 . . . 4 . 3 3 4 . . . . 2 . . . 4 . . . .
##                                                                          
## 1 2 3 4 3 2 5 4 5 5 4 4 5 3 5 4 4 3 3 5 4 5 4 5 5 4 3 2 5 4 4 3 4 3 3 3 4
## 2 . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . 4 . 5 . . . . . . . 4 . . . . . . . . . . . 4 1 . . 1 . . 1 4 . .
## 6 . . . . . . . . . . 3 . . 4 . . . . . 4 . . 5 . . . . 4 . . . . 3 3 4 .
##                                                                          
## 1 3 1 4 4 4 1 4 4 5 5 3 4 3 5 5 4 5 4 5 3 5 2 4 5 3 4 3 5 2 2 1 1 2 4 4 5
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . 3 2 . . . . . . . . 5 3 . . . 3 4 . . 3 3 5 5 3 . . 3 . . .
## 6 . . . . . . 3 . 4 . . . . 3 4 . 4 . . . . . 2 . . 5 . 5 . . . . . . . .
##                                                                          
## 1 5 1 5 1 5 5 5 3 3 3 5 1 4 3 4 5 3 2 5 4 5 3 1 4 4 4 4 3 5 1 3 1 3 2 1 4
## 2 . . 4 . . . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 5 1 . . . . . . . . . . 4 . . . . . . . . . . . . . 4 . . . 3 . . . 3 3
## 6 . . 2 . . . . . 2 . . . . . . 5 3 . 5 . . . 5 5 4 5 5 5 5 . . . . . 2 .
##                                                                          
## 1 2 4 3 2 2 5 4 5 3 5 2 4 4 3 3 4 4 4 4 3 5 5 2 5 5 5 5 5 5 5 5 5 5 5 3 3
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 1 . . . . . 3 . 5 3 . . . . . . . 1 5 . . . 2 3 5 . . 5 4 5 . 3 . . . .
## 6 . . . . . . 3 . 4 3 . 3 . . . . . . . . 5 4 . 4 4 4 . . 5 4 4 . 4 4 . 4
##                                                                          
## 1 5 4 5 4 4 4 4 3 3 5 5 4 4 4 5 5 5 5 4 3 3 5 4 5 3 4 5 5 4 4 3 4 2 4 3 5
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . .
## 5 5 . 4 . 3 5 . . 5 . . . . 4 . . . . . 2 . . . 4 . . . 4 5 3 4 . . 3 . 1
## 6 . 4 4 . 5 4 4 3 3 . 4 4 3 4 4 . 5 . 4 3 . 3 3 3 3 . . 4 4 . 5 . 4 . . 5
##                                                                          
## 1 3 3 1 3 5 4 5 5 2 3 4 5 4 4 1 3 2 4 5 4 2 4 4 3 4 5 1 2 2 5 1 4 4 4 4 2
## 2 . . . . . . . . . . . . . . . . . . . . 4 . . . . 5 . . . . . . . . 5 .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . 3 . . 4 . . 2 3 4 5 2 3 2 . 4 2 4 . . . 4 . 1 . 1 . . . . . . 3 . .
## 6 . . . . 4 . 4 . . . . . . . . . . . . . 2 5 . . . 4 . . . 3 . 3 . . . .
##                                                                          
## 1 5 1 2 4 4 5 1 1 1 3 1 2 4 1 4 5 5 2 3 . . . . . . . . . . . . . . . . .
## 2 . . 4 . 4 3 . . . . . . . . . 4 . . 5 4 3 5 4 4 3 4 3 3 4 5 4 5 4 3 3 3
## 3 . . . . . 2 . 4 . . . 2 . . . . . 3 2 . . . . . . . . . . . . . . . 2 .
## 4 . . . . . 5 . 4 . . . 3 . . . . . 4 . . . . . . . . . . . . . . . . 4 .
## 5 . . . . 5 . 1 . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . 2 2 1 . 3 . . . . . . 4 . . 4 . 4 4 2 . . . . . . . 2 3 2 . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 3 3 4 4 1 4 3 4 3 4 4 4 5 4 3 4 3 3 1 4 5 3 5 1 1 5 . . . . . . . . . .
## 3 . . . . 2 . . . . 3 2 . 2 . . . 3 . . . . . . . . . 2 4 2 5 5 3 2 2 1 2
## 4 . . . . 5 . . . . . 5 5 . . . . . . . . . . . . . . . . . . . . . 5 . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . 3 2 . . 3 3 . . 2 4 4 . 4 . 3 2 2 . . . . . . 3 4 . . 3 . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 4 5 4 2 4 1 2 3 1 1 1 2 3 5 1 4 3 4 3 5 5 3 3 3 2 1 3 3 . . . . . . . .
## 4 5 3 5 . . . . . . . . . . . . . . . . . . . . . . . 5 . 3 4 2 5 5 5 5 .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
## 6 . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . 4 . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 1 1 3 3 1 1 1 1 3 3 3 3 2 1 1 3 3 1 5 3 3 4 2 3 2 1 5 4 2 2 2 2 5 2 2 3
## 6 . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 1 5 1 3 2 3 1 3 5 2 1 1 3 3 3 1 1 3 3 3 3 1 4 4 1 2 3 3 5 3 5 3 4 5 5 4
## 6 . . . . . 1 . . 4 . 4 . . . . . . . . 4 . . . 3 . 3 . 4 . . . . 4 . . 4
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 5 1 1 1 1 1 1 4 2 3 4 3 2 2 1 1 1 1 1 4 1 1 . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . 1 2 2 4 5 4 2 1 4 4 3 5 3 2
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 1 2 5 5 1 1 4 5 4 5 4 5 5 5 4 5 5 5 5 4 5 5 4 4 4 4 4 4 5 4 3 3 4 4 4 3
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 4 4 5 4 4 5 4 4 4 3 5 4 4 5 5 3 5 3 4 4 4 4 4 3 4 4 2 4 4 2 2 . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                                                                          
## 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
## 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##                  
## 1 . . . . . . . .
## 2 . . . . . . . .
## 3 . . . . . . . .
## 4 . . . . . . . .
## 5 . . . . . . . .
## 6 . . . . . . . .

Let’s explore the dataset and see what we can get out of it.

dim(MovieLense)
## [1]  943 1664
# graph the Ratings
data_movielens %>% 
  as.vector() %>% 
  as_tibble() %>% 
  filter_all(any_vars(.!= 0)) %>% 
  ggplot(aes(value)) + 
  geom_bar() +
  labs(title="Ratings (Scale 1 to 5)", y="", x="Ratings")
## Warning: Calling `as_tibble()` on a vector is discouraged, because the behavior is likely to change in the future. Use `tibble::enframe(name = NULL)` instead.
## This warning is displayed once per session.

Now, lets split the data into train and test so that we can do the analysis on ratings of the movies. Since, there are lack of data on the ratings of some movie, there might be bias in the output.

# the most relevant data
ratings <- MovieLense[rowCounts(MovieLense) >50, colCounts(MovieLense) >100]

# split the dataset into train and test dataset into 75:25 ratio
data_split <- sample(x = c(TRUE, FALSE), size = nrow(ratings), replace = TRUE, prob = c(0.75, 0.25))
train <- ratings[data_split, ]
test <- ratings[!data_split, ]
#top 5 % of users and movies 
min_movies <- quantile(rowCounts(ratings), 0.95)
min_movies
## 95% 
## 199
min_users <- quantile(colCounts(ratings), 0.95)
min_users
##    95% 
## 308.25
avg_ratings_per_user <- rowMeans(ratings)
avg_ratings_per_user
##        1        2        3        5        6        7        8       10 
## 3.826590 3.926829 2.866667 3.282609 3.618056 4.246305 4.020000 4.289256 
##       11       12       13       14       15       16       18       21 
## 3.490741 4.434783 3.531835 4.025974 2.808824 4.594340 3.957831 3.384615 
##       22       23       24       25       26       28       37       38 
## 3.865854 3.605263 4.344828 4.032787 3.083333 3.827586 3.840909 3.955224 
##       41       42       43       44       48       49       52       54 
## 3.727273 3.968750 3.883117 3.836066 3.957447 2.739130 4.238095 3.937500 
##       56       57       58       59       60       62       63       64 
## 3.853846 3.756757 4.029412 4.073059 4.081967 3.506329 3.175439 3.686275 
##       65       69       70       72       73       75       76       77 
## 3.953846 3.740741 3.660000 3.798165 3.807692 3.436364 3.660377 3.603175 
##       79       81       82       83       84       85       87       89 
## 4.000000 3.404255 3.341667 3.638298 3.813559 3.642857 4.126984 4.166667 
##       90       91       92       94       95       96       97       99 
## 4.359477 4.025974 3.506726 3.881517 3.790419 4.312500 4.115385 3.784946 
##      100      101      102      104      106      109      110      115 
## 3.433333 3.186047 2.814286 2.828947 3.847826 3.679245 3.323944 3.957143 
##      116      117      118      119      121      122      123      125 
## 3.207317 4.119403 4.804348 4.145455 3.616667 4.030303 3.913043 3.850467 
##      128      130      135      138      141      144      145      148 
## 3.798387 4.306452 3.564103 4.263158 3.687500 3.727273 3.934211 4.120000 
##      151      152      154      158      159      160      161      164 
## 4.093567 4.421875 3.975000 3.890756 3.718750 4.025316 2.620000 4.288889 
##      167      168      174      176      177      178      180      181 
## 3.558824 3.269231 4.151163 3.720930 3.684783 3.846939 4.068182 2.238095 
##      183      184      186      187      188      189      190      193 
## 3.261905 3.718121 3.537037 4.063830 3.846154 4.088496 3.555556 3.187500 
##      194      195      197      198      200      201      206      207 
## 3.153061 3.770833 3.556818 3.386861 4.262411 3.203883 3.240000 3.356688 
##      210      213      214      215      216      217      218      221 
## 4.230769 4.275229 3.924731 3.785714 4.020619 3.270833 3.650000 3.715909 
##      222      223      224      227      230      232      233      234 
## 3.580952 3.306452 3.415385 3.410256 3.911765 3.905405 4.352273 3.177778 
##      235      236      239      243      244      246      248      249 
## 3.984375 3.515464 4.042553 3.698113 3.710145 3.256881 3.529412 4.147287 
##      250      251      253      254      255      256      257      262 
## 3.774194 3.841270 3.975610 3.369565 2.854167 4.232143 4.064516 3.222222 
##      263      264      267      268      269      270      271      272 
## 4.030000 4.479452 4.095238 3.359551 3.011561 4.229730 3.714286 4.454545 
##      274      275      276      277      279      280      283      286 
## 4.196429 3.250000 4.007905 3.585366 3.351515 3.564935 4.300000 3.750000 
##      287      288      290      291      292      293      294      295 
## 4.160000 3.935484 3.464912 4.079137 4.223404 3.200855 3.780220 4.300813 
##      296      297      298      299      301      303      305      307 
## 4.242991 3.586667 4.077670 3.535484 3.638298 3.916318 3.378378 3.943820 
##      308      311      312      313      314      315      316      318 
## 3.794760 3.977778 4.258929 3.764706 4.018868 4.056338 3.245614 3.963636 
##      320      321      323      324      325      326      327      328 
## 3.882353 3.775000 3.676923 4.461538 3.382022 3.400000 3.240838 3.679775 
##      329      330      331      332      334      336      338      339 
## 3.444444 4.556522 3.605263 4.404762 3.585106 3.460317 3.962264 4.040000 
##      342      343      344      345      346      347      348      354 
## 3.666667 4.055556 3.723881 3.800000 3.648000 3.741497 4.000000 3.548387 
##      357      360      361      363      365      367      370      371 
## 4.369565 3.936709 3.833333 3.266304 3.615385 4.535714 3.660714 4.142857 
##      372      373      374      378      379      380      381      382 
## 4.444444 3.852349 3.576687 3.633028 4.210526 3.339450 3.986111 3.282051 
##      383      385      387      388      389      391      392      393 
## 4.436364 3.078014 3.442623 4.238095 3.816327 3.763441 4.086957 3.522613 
##      394      395      396      397      398      399      401      402 
## 4.121495 3.914894 3.611111 4.000000 3.840000 3.087209 3.112069 4.092593 
##      405      406      407      409      411      412      416      417 
## 2.891892 3.699482 3.668712 3.752212 3.811321 4.000000 4.179688 3.487437 
##      421      422      423      425      426      428      429      430 
## 3.903846 3.625000 3.651163 3.140741 3.875000 4.096774 3.661088 3.531915 
##      432      435      436      437      440      442      445      447 
## 3.826923 3.655502 3.902439 3.740506 3.769231 3.270833 2.166667 3.651376 
##      449      450      451      452      453      454      455      456 
## 3.540541 4.047619 3.527778 3.618321 3.689320 3.240506 3.568345 3.457364 
##      457      458      459      460      463      464      465      466 
## 4.295699 3.737705 3.592593 3.384615 3.147059 4.130435 3.532258 3.466667 
##      468      470      472      474      476      478      479      480 
## 4.130841 3.729730 4.473333 4.199005 3.644444 3.582278 3.516129 3.625000 
##      481      483      484      486      487      488      489      490 
## 4.046512 3.130435 4.059829 3.260870 3.792208 3.370079 4.127660 2.825000 
##      492      493      495      496      497      498      499      500 
## 3.720930 3.944444 4.123077 3.088608 3.435897 3.319149 3.971429 3.443609 
##      501      503      504      505      506      507      508      514 
## 3.734694 4.152381 3.778626 3.404494 3.939189 4.717949 3.797297 3.952381 
##      518      521      523      524      525      526      527      528 
## 3.833333 3.225806 4.428571 3.548913 3.431818 3.285714 3.836735 3.829787 
##      532      533      534      535      536      537      538      539 
## 4.556338 3.502591 4.176471 4.040000 3.954955 2.982833 3.653333 4.027027 
##      540      541      542      543      545      546      548      551 
## 3.750000 3.920000 3.643564 3.634921 3.688073 3.969697 3.906542 4.098039 
##      552      553      554      555      557      559      560      561 
## 3.137931 4.215385 3.702128 3.977273 3.781250 3.578947 3.493151 3.024155 
##      562      566      567      568      569      573      577      579 
## 3.583333 3.518519 3.820225 3.525000 3.584906 3.775000 3.920000 3.615385 
##      582      585      586      587      588      591      592      593 
## 3.454545 3.944444 3.354545 3.355556 3.827338 3.727273 4.156098 3.792793 
##      595      600      601      605      606      608      610      615 
## 3.339623 3.946429 3.224299 3.813333 4.081395 3.649485 3.734375 3.972603 
##      617      618      619      620      621      622      624      625 
## 2.613636 3.490196 3.705882 3.962264 3.833333 3.765957 3.634409 3.488636 
##      627      629      630      632      633      634      637      638 
## 3.459016 4.187500 3.453333 3.730769 3.386364 3.635294 2.696970 3.571429 
##      639      640      642      643      645      647      648      650 
## 3.013333 4.424658 3.880597 3.826667 3.869048 3.882353 3.584795 3.302564 
##      653      654      655      658      659      660      661      663 
## 3.114286 3.784483 2.995935 3.957447 3.865546 2.820690 4.041237 3.691589 
##      664      665      666      669      671      676      679      682 
## 3.818182 3.512605 3.641509 3.487500 3.827586 3.943396 3.709091 3.375566 
##      683      684      686      690      693      694      697      698 
## 3.333333 3.688525 4.639344 3.379747 3.194915 4.240741 4.090909 2.931034 
##      699      704      705      707      708      709      710      711 
## 3.185185 3.779661 3.755814 3.575758 3.500000 3.763441 3.794118 3.850746 
##      712      715      716      717      719      721      724      727 
## 3.750000 3.683761 4.058140 3.691176 3.178571 3.815534 2.789474 3.411765 
##      731      733      734      735      738      741      745      746 
## 3.559322 3.040000 3.629630 3.409091 3.769841 3.585366 3.122449 3.677419 
##      747      748      749      751      752      753      756      757 
## 4.254438 3.762887 3.910526 3.754386 3.297297 3.634615 3.259740 3.515873 
##      758      761      763      764      766      768      770      771 
## 4.015075 3.341463 3.831325 3.819277 3.469565 3.433962 4.234043 3.611111 
##      773      774      776      778      780      782      786      787 
## 3.326531 2.238095 3.903226 3.156863 3.916667 3.283333 3.960000 3.518519 
##      788      790      793      795      796      798      802      804 
## 3.551948 3.246479 3.650000 3.295918 3.878641 3.586538 3.714286 3.916256 
##      805      806      807      815      821      823      825      826 
## 3.353659 3.773585 4.072000 3.892308 4.313725 4.133803 3.913580 3.986667 
##      828      829      830      831      833      834      835      838 
## 3.219512 3.704545 3.837209 3.622951 3.194631 4.063830 4.133333 4.123288 
##      839      840      843      844      846      847      848      850 
## 3.324324 4.149606 2.782609 3.531250 4.132275 3.067961 4.273585 4.555556 
##      851      854      860      862      863      864      865      867 
## 3.971429 3.300699 3.452381 4.460870 3.928571 4.168367 2.204545 4.222222 
##      868      870      871      872      875      877      878      880 
## 3.117647 3.647799 3.757143 3.650000 4.151515 3.814815 3.451220 3.820106 
##      881      882      883      885      886      887      889      890 
## 3.525714 4.287037 3.855072 3.467532 3.590278 4.019608 3.654639 4.046512 
##      892      893      894      896      897      899      901      903 
## 4.129032 3.627907 3.584906 3.305164 4.050360 3.610169 3.905882 4.063158 
##      907      908      910      911      912      913      916      918 
## 4.611111 3.523810 3.259259 3.826087 3.975000 3.603774 3.510638 3.036364 
##      919      921      922      923      924      927      930      931 
## 3.646617 3.437500 3.424242 4.196078 3.828125 3.973333 2.877551 3.818182 
##      932      933      934      936      938      940      942      943 
## 3.983740 2.954887 3.783019 3.675325 3.402597 3.550562 4.368421 3.725664

#Model 1 #User Collaborative Filtering

This model will represents the similarity betwen the users.

# compute the user similarity matrix
users_similarity <- similarity(MovieLense[1:4, ], method = "pearson", which = "users")

# visualize the user similarity matrix
image(as.matrix(users_similarity), main = "Users similarity")

Let’s build the recommender system based on how similar they are with others.

# build the recommender model system
recommender_m1 <- Recommender(train, method = "UBCF", parameter = list(k = 25))
## Warning: Unknown parameter: k
## Available parameter (with default values):
## method    =  cosine
## nn    =  25
## sample    =  FALSE
## normalize     =  center
## verbose   =  FALSE
details_m1 <- getModel(recommender_m1)

# prediction
prediction_m1 <- predict(object = recommender_m1, newdata = test, n = 6)
recommender_matrix1 <- sapply(prediction_m1@items, function(x) {colnames(ratings)[x]})
recommender_matrix1[, 1:3] %>% kable() %>% kable_styling(full_width = T)
2 3 5
Silence of the Lambs, The (1991) Silence of the Lambs, The (1991) Titanic (1997)
Amadeus (1984) Shawshank Redemption, The (1994) L.A. Confidential (1997)
Monty Python and the Holy Grail (1974) Room with a View, A (1986) Good Will Hunting (1997)
Casablanca (1942) To Kill a Mockingbird (1962) Contact (1997)
Schindler’s List (1993) Fargo (1996) Amistad (1997)
Big Night (1996) One Flew Over the Cuckoo’s Nest (1975) Primal Fear (1996)

#Model 2 #Item Collaborative Filtering

This model will represents the similarity between the items.

# compute the items similarity
items_similarity <- similarity(MovieLense[, 1:4], method = "cosine", which = "items")

# visualize the similarity matrix
image(as.matrix(items_similarity), main = "Items similarity")

Let’s build the recommender system depending on the similar ratings of the movies.

# build the recommender model system
recommender_m2 <- Recommender(train, method = "IBCF", parameter = list(k = 30))
details_m2 <- getModel(recommender_m2)

# prediction
prediction_m2 <- predict(object = recommender_m2, newdata = test, n = 6)
recommender_matrix2 <- sapply(prediction_m2@items, function(x) {colnames(ratings)[x]})
recommender_matrix2[, 1:3] %>% kable() %>% kable_styling(full_width = T) 
2 3 5
Babe (1995) River Wild, The (1994) Babe (1995)
Braveheart (1995) Tin Cup (1996) Pulp Fiction (1994)
Shawshank Redemption, The (1994) Tomorrow Never Dies (1997) Conan the Barbarian (1981)
Fugitive, The (1993) Leaving Las Vegas (1995) Raising Arizona (1987)
Home Alone (1990) Face/Off (1997) Con Air (1997)
Silence of the Lambs, The (1991) Die Hard: With a Vengeance (1995) Devil’s Advocate, The (1997)