R软件包recommenderlab - 开发和测试推荐算法的实验室
简介
提供研究基础设施以开发和评估协同过滤推荐算法。这包括用户-项目矩阵的稀疏表示、多种流行算法、Top-N推荐和交叉验证。该软件包支持评分(如1-5星)和二元(0-1)数据集。
以下R软件包使用了recommenderlab
:
cmfrec、
crassmat、
recometrics、
recommenderlabBX、
recommenderlabJester、
RMOA
使用本软件包时请引用:
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},
}
支持的算法
推荐算法
- 基于用户的协同过滤(UBCF)
- 基于项目的协同过滤(IBCF)
- 带列均值填充的SVD(SVD)
- Funk SVD(SVDF)
- 交替最小二乘法(ALS)
- 使用LIBMF的矩阵分解(LIBMF)
- 基于关联规则的推荐器(AR)
- 热门项目(POPULAR)
- 随机选择项目进行比较(RANDOM)
- 重新推荐喜欢的项目(RERECOMMEND)
- 混合推荐(HybridRecommender)
推荐评估
该框架支持给定n和all-but-x协议,包括:
- 训练/测试集拆分
- 交叉验证
- 重复引导抽样
可用的评估指标有:
- 评分误差:MSE、RMSE、MAE
- Top-N推荐:TPR/FPR(ROC)、精确度和召回率
安装
稳定CRAN版本: 在R中使用以下命令安装
install.packages("recommenderlab")
当前开发版本: 从r-universe安装。
install.packages("recommenderlab", repos = "https://mhahsler.r-universe.dev")
使用方法
加载软件包并准备数据集(包含在软件包中)。MovieLense数据包含用户对电影的1到5星评分。我们这里只使用评分超过100条的用户。
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 <- MovieLense100[1:300]
rec <- Recommender(train, method = "UBCF")
rec
'realRatingMatrix'类型的'UBCF'推荐器
使用300名用户学习。
为新用户(用户301和302)创建top-N推荐。
pre <- predict(rec, MovieLense100[301:302], n = 5)
pre
## 为2个用户生成的n = 5的'topNList'推荐。
as(pre, "list")
## $`0`
## [1] "勇者无惧 (1997)" "爱经:爱的故事 (1996)"
## [3] "霸王别姬 (1993)" "室友 (1995)"
## [5] "新鲜 (1994)"
##
## $`1`
## [1] "苦月亮 (1992)" "邪恶之触 (1958)"
## [3] "活死人黎明 (1992)" "大独裁者 (1940)"
## [5] "M就是凶手 (1931)"
使用10折交叉验证方案比较几种算法的top-N列表。4星或更高评分的电影被视为好的推荐。我们绘制不同长度的top-N列表的真阴性率和真阳性率。
scheme <- evaluationScheme(MovieLense100, method = "cross-validation", k = 10, given = -5,
goodRating = 4)
scheme
## 使用除5项外的所有项目的评估方案
## 方法:'交叉验证',10次运行。
## 好评:>=4.000000
## 数据集:358 x 1664 评分矩阵,'realRatingMatrix'类,包含73610个评分。
algorithms <- list(`随机项目` = list(name = "RANDOM", param = NULL), `热门项目` = list(name = "POPULAR",
param = NULL), `基于用户的协同过滤` = list(name = "UBCF", param = list(nn = 3)), `基于项目的协同过滤` = 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应用
一个运行recommenderlab的简单Shiny应用可以在https://mhahsler-apps.shinyapps.io/Jester/找到([源代码](https://github.com/mhahsler/recommenderlab/tree/master/Work/apps))。
参考文献
- Michael Hahsler (2022) recommenderlab:用于开发和测试推荐算法的R框架。arXiv:2205.12371 [cs.IR]。DOI:10.48550/arXiv.2205.12371。
- recommenderlab参考手册
- Suresh K. Gorakala和Michele Usuelli (2015) 使用R构建推荐系统(Packt出版社)介绍了recommenderlab包。