The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
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.
The following R packages use recommenderlab
: cmfrec, crassmat, recometrics,
recommenderlabBX,
recommenderlabJester,
RMOA
Please cite the use of this package as:
Hahsler M (2022). “recommenderlab: An R Framework for Developing and Testing Recommendation Algorithms.” arXiv:2205.12371 [cs.IR]. doi:10.48550/ARXIV.2205.12371 https://doi.org/10.48550/ARXIV.2205.12371.
@Misc{,
title = {recommenderlab: An R Framework for Developing and Testing Recommendation Algorithms},
author = {Michael Hahsler},
year = {2022},
doi = {10.48550/ARXIV.2205.12371},
howpublished = {arXiv:2205.12371 [cs.IR]},
month = {May},
}
The framework supports given-n and all-but-x protocols with
Available evaluation measures are
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")
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")
<- MovieLense[rowCounts(MovieLense) > 100, ]
MovieLense100 MovieLense100
## 358 x 1664 rating matrix of class 'realRatingMatrix' with 73610 ratings.
Train a user-based collaborative filtering recommender using a small training set.
<- MovieLense100[1:300]
train <- Recommender(train, method = "UBCF")
rec rec
## Recommender of type 'UBCF' for 'realRatingMatrix'
## learned using 300 users.
Create top-N recommendations for new users (users 301 and 302).
<- predict(rec, MovieLense100[301:302], n = 5)
pre 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.
<- evaluationScheme(MovieLense100, method = "cross-validation", k = 10, given = -5,
scheme 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.
<- list(`random items` = list(name = "RANDOM", param = NULL), `popular items` = list(name = "POPULAR",
algorithms param = NULL), `user-based CF` = list(name = "UBCF", param = list(nn = 3)), `item-based CF` = list(name = "IBCF",
param = list(k = 100)))
<- evaluate(scheme, algorithms, type = "topNList", n = c(1, 3, 5, 10), progress = FALSE)
results
plot(results, annotate = 2, legend = "topleft")
A simple Shiny App running recommenderlab can be found at https://mhahsler-apps.shinyapps.io/Jester/ (source code).
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.