Learn R Programming

⚠️There's a newer version (1.0.6) of this package.Take me there.

R package recommenderlab - Lab for Developing and Testing Recommender Algorithms

Provides a research infrastructure to develop and evaluate collaborative filtering recommender algorithms. This includes a sparse representation for user-item matrices, many popular algorithms, top-N recommendations, and cross-validation. The package supports rating (e.g., 1-5 stars) and unary (0-1) data sets. Supported algorithms are:

  • User-based collaborative filtering (UBCF)
  • Item-based collaborative filtering (IBCF)
  • SVD with column-mean imputation (SVD)
  • Funk SVD (SVDF)
  • Alternating Least Squares (ALS)
  • Matrix factorization with LIBMF (LIBMF)
  • Association rule-based recommender (AR)
  • Popular items (POPULAR)
  • Randomly chosen items for comparison (RANDOM)
  • Re-recommend liked items (RERECOMMEND)
  • Hybrid recommendations (HybridRecommender)

For evaluation, the framework supports given-n and all-but-x protocols with

  • Train/test split
  • Cross-validation
  • Repeated bootstrap sampling

Evaluation measures are:

  • Rating errors: MSE, RMSE, MAE
  • Top-N recommendations: TPR/FPR (ROC), precision and recall

Installation

Stable CRAN version: Install from within R with

install.packages("recommenderlab")

Current development version: Install from r-universe.

install.packages("recommenderlab", repos = "https://mhahsler.r-universe.dev")

Usage

Load the package and prepare a dataset (included in the package). The MovieLense data contains user ratings for movies on a 1 to 5 star scale. We only use here users with more than 100 ratings.

set.seed(1234)

library("recommenderlab")
data("MovieLense")

MovieLense100 <- MovieLense[rowCounts(MovieLense) > 100, ]
MovieLense100
## 358 x 1664 rating matrix of class 'realRatingMatrix' with 73610 ratings.

Train a user-based collaborative filtering recommender using a small training set.

train <- MovieLense100[1:300]
rec <- Recommender(train, method = "UBCF")
rec
## Recommender of type 'UBCF' for 'realRatingMatrix' 
## learned using 300 users.

Create top-N recommendations for new users (users 301 and 302).

pre <- predict(rec, MovieLense100[301:302], n = 5)
pre
## Recommendations as 'topNList' with n = 5 for 2 users.
as(pre, "list")
## $`0`
## [1] "Amistad (1997)"                    "Kama Sutra: A Tale of Love (1996)"
## [3] "Farewell My Concubine (1993)"      "Roommates (1995)"                 
## [5] "Fresh (1994)"                     
## 
## $`1`
## [1] "Bitter Moon (1992)"         "Touch of Evil (1958)"      
## [3] "Braindead (1992)"           "Great Dictator, The (1940)"
## [5] "M (1931)"

Use a 10-fold cross-validation scheme to compare the top-N lists of several algorithms. Movies with 4 or more stars are considered a good recommendation. We plot true negative vs. true positive rate for top-N lists of different lengths.

scheme <- evaluationScheme(MovieLense100, method = "cross-validation", k = 10, given = -5,
    goodRating = 4)
scheme
## Evaluation scheme using all-but-5 items
## Method: 'cross-validation' with 10 run(s).
## Good ratings: >=4.000000
## Data set: 358 x 1664 rating matrix of class 'realRatingMatrix' with 73610 ratings.
algorithms <- list(`random items` = list(name = "RANDOM", param = NULL), `popular items` = list(name = "POPULAR",
    param = NULL), `user-based CF` = list(name = "UBCF", param = list(nn = 3)), `item-based CF` = list(name = "IBCF",
    param = list(k = 100)))

results <- evaluate(scheme, algorithms, type = "topNList", n = c(1, 3, 5, 10), progress = FALSE)

plot(results, annotate = 2, legend = "topleft")

Shiny App

A simple Shiny App running recommenderlab can be found at https://mhahsler-apps.shinyapps.io/Jester/ (source code).

References

Copy Link

Version

Install

install.packages('recommenderlab')

Monthly Downloads

1,281

Version

1.0.3

License

GPL-2

Issues

Pull Requests

Stars

Forks

Maintainer

Michael Hahsler

Last Published

January 21st, 2023

Functions in recommenderlab (1.0.3)

evaluationScheme

Creator Function for evaluationScheme
normalize

Normalize the ratings
plot

Plot Evaluation Results
evaluate

Evaluate a Recommender Models
getList

List and Data.frame Representation for Recommender Matrix Objects
evaluationResults-class

Class "evaluationResults": Results of the Evaluation of a Single Recommender Method
funkSVD

Funk SVD for Matrices with Missing Data
evaluationResultList-class

Class "evaluationResultList": Results of the Evaluation of a Multiple Recommender Methods
evaluationScheme-class

Class "evaluationScheme": Evaluation Scheme
internalFunctions

Internal Utility Functions
sparseNAMatrix-class

Sparse Matrix Representation With NAs Not Explicitly Stored
realRatingMatrix

Class "realRatingMatrix": Real-valued Rating Matrix
predict

Predict Recommendations
topNList

Class "topNList": Top-N List
ratingMatrix

Class "ratingMatrix": Virtual Class for Rating Data
dissimilarity

Dissimilarity and Similarity Calculation Between Rating Data
MovieLense

MovieLense Dataset (100k)
Recommender

Create a Recommender Model
Recommender-class

Class "Recommender": A Recommender Model
binaryRatingMatrix

Class "binaryRatingMatrix": A Binary Rating Matrix
MSWeb

Anonymous web data from www.microsoft.com
Error

Error Calculation
HybridRecommender

Create a Hybrid Recommender
Jester5k

Jester dataset (5k sample)
calcPredictionAccuracy

Calculate the Prediction Error for a Recommendation