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) |