《R语言与数据挖掘》⑨智能推荐算法
写在前面,目前的推荐算法重要分为四类
- 基于关联规则的推荐算法
- 基于物品的协同过滤算法
- 基于用户的协同过滤算法
- 基于内容的推荐算法
协同过滤
一个重要的环节就是如何选择合适的相似度计算方法,常用的两种相似度计算方法包括皮尔逊相关系数和余弦相似度等。
皮尔逊相关系数
余弦相似度
基于R语言的实现主要依赖recommenderlab
recommenderlab包主要处理的对象为ratingMatrix。
ratingMatrix有两种:realRatingMatrix和 binaryRatingMatrix。
realRatingMatrix是一个评分矩阵,以真实的评分数据反映在矩阵当中,而 binaryRatingMatrix为布尔矩阵,相当于把realRatingMatrix中大于0的数值赋值为1。
在R中,realRatingMatrix和binaryRatingMatrix矩阵储存空间小,计算效率高,并且能够很方便地转化成数据框和列表。
recommender()
功能:构建推荐模型。
格式:Recommender(data, method, parameter=NULL)
data为一个ratingMatrix,调用 recommender()之前需给矩阵的所有列进行列命名,否则会出现报错。
method 的选项包括:IBCF(基于物品的协同过滤推荐)、UBCF(基于用户的协同过滤推荐)、SVD(矩阵因子化)、PCA(主成分分析)、 RANDOM(随机推荐)、POPULAR(基于流行度的推荐)。
parameter的参数有很多,运行以下代码可以看到不同method下参数的默认设置:
recommenderRegistry$get_entries(dataType = “realRatingMatrix”)
参数设置
Predict()
# 9.1 示例:将matrix转化成realRatingMatrix,并将realRatingMatrix转化成list和data.frame。
# realRatingMatrix格式转换
library(recommenderlab)
m <- matrix(sample(c(NA, 0:5), 100, replace = TRUE, prob = c(.7, rep(.3/6, 6))), nrow = 10, ncol = 10, dimnames = list(user = paste('u', 1:10, sep = ''), item = paste('i', 1:10, sep = '') ))
r <- as(m, "realRatingMatrix") # 将matrix格式转换成realRatingMatrix格式
r
list.m <- as(r, "list") # 把realRatingMatrix转化成list
df.m <- as(r, "data.frame") # 把realRatingMatrix转化成data.frame# 9.1 示例:根据用户对电影的评分进行电影推荐和电影评分预测
# recommender推荐
library(recommenderlab)
library(ggplot2)
data(MovieLense) # 电影评分数据
as(MovieLense, "matrix")[1:3, 1:4] # 显示部分电影评分# 利用前940位用户建立基于物品的协同过滤推荐模型,method = "IBCF"
m.recomm <- Recommender(MovieLense[1:940], method = "IBCF")
m.recomm# 对后三位用户进行推荐预测,使用predict()函数,默认是topN推荐
(ml.predict <- predict(m.recomm, MovieLense[941:943], n = 3)) # n = 3 表示Top3推荐
as(ml.predict, "list") # 电影推荐预测结果# 用户对item的评分预测,使用predict()函数,type = "ratings"
ml.predict2 <- predict(m.recomm, MovieLense[941:943], type = "ratings")
as(ml.predict2, "matrix")[1:3, 1:4] # 显示部分电影评分预测结果# 9.2 示例:建立基于流行度、基于用户的协同过滤和基于物品的协同过滤推荐模型,并对这三个模型进行评价
# 推荐模型评价
library(recommenderlab)
data(MovieLense)# 建立评价方案
# 使用evaluationScheme函数将MovieLense分成训练集和测试集
scheme <- evaluationScheme(MovieLense, method = "split", train = 0.9, k = 1, given = 10, goodRating = 4)
# 设置模型popular,ubcf,ibcf的参数
algorithms <- list(popular = list(name = "POPULAR", param = list(normalize = "Z-score")), ubcf = list(name = "UBCF", param = list(normalize = "Z-score", method = "Cosine", nn = 25, minRating = 3)), ibcf = list(name = "IBCF", param = list(normalize = "Z-score")))
# 对模型进行评价
results <- evaluate(scheme, algorithms, n = c(1, 3, 5, 10, 15, 20))# 输出ROC曲线和precision-recall曲线
plot(results, annotate = 1:3, legend = "topleft") # ROC
plot(results, "prec/rec", annotate = 3) # precision-recall# 按照评价方案建立推荐模型
model.popular <- Recommender(getData(scheme, "train"), method = "POPULAR", parameter = algorithms[[1]][[2]])
model.ibcf <- Recommender(getData(scheme, "train"), method = "UBCF",parameter = algorithms[[2]][[2]])
model.ubcf <- Recommender(getData(scheme, "train"), method = "IBCF", parameter = algorithms[[3]][[2]])# 对推荐模型进行预测
predict.popular <- predict(model.popular, getData(scheme, "known"), type = "ratings")
predict.ubcf <- predict(model.ubcf, getData(scheme, "known"), type = "ratings")
predict.ibcf <- predict(model.ibcf, getData(scheme, "known"), type = "ratings")# 做误差的计算
# calcPredictionAccuracy()的参数"know "和"unknow "表示对测试集的进一步划分:
# "know "表示用户已经评分的,要用来预测的items;"unknow "表示用户已经评分,要被预测以便于进行模型评价的items。
predict.err <- rbind(calcPredictionAccuracy(predict.popular, getData(scheme, "unknown")), calcPredictionAccuracy(predict.ubcf, getData(scheme, "unknown")), calcPredictionAccuracy(predict.ibcf, getData(scheme, "unknown")))
rownames(predict.err) <- c("POPULAR", "UBCF", "IBCF")
predict.err
《R语言与数据挖掘》⑨智能推荐算法相关推荐
- R语言实现关联规则与推荐算法(学习笔记)
R语言实现关联规则 笔者前言:以前在网上遇到很多很好的关联规则的案例,最近看到一个更好的,于是便学习一下,写个学习笔记. 推荐算法中 物品-物品用关联规则: 人物-物品用协同过滤: 人-人用社会网络分 ...
- R语言笔记⑧——数据挖掘算法
目录 数据挖掘算法 聚类算法 Kmeans算法 协同过滤算法 决策树算法 关联规则 支持度 置信度 增益 Apriori算法 R语言中的关联规则 神经网络算法 人工神经元 转移函数 BP神经网络 算法 ...
- 金融领域下的数据挖掘算法应用:智能推荐算法模型
摩天,用友旗下社会化的企业数智化学习认证社区,提供数智营销.智慧医疗.数智金融.智能制造.项目管理等精品课程,数智化人才上摩天!https://mot.yonyou.com/ 你将会学到: 智能推荐系 ...
- 【数据挖掘之关联规则实战】关联规则智能推荐算法
数据说明 数据参数 OrderNumber: 客户昵称 LineNumber:购买顺序,如前三行分别表示同一个客户购买的三样商品 Model:商品名 问题描述 基于购物篮的关联规则智能算法推荐的应用. ...
- 智能推荐算法在直播场景中的应用
本文概览: 1. 推荐系统是什么? 推荐系统是帮助用户发现内容,克服信息过载的重要工具: 它通过分析用户行为,对用户兴趣建模.从而预测用户的兴趣并给用户做推荐: 信息过载: 信息过载是信息时代信息过于 ...
- 《R语言与数据挖掘》⑦聚类分析建模
书籍:<R语言与数据挖掘> 作者:张良均 出版社:机械工业出版社 ISBN:9787111540526 本书由北京华章图文信息有限公司授权杭州云悦读网络有限公司电子版制作与发行 版权所有· ...
- 【转载】R语言与数据挖掘学习笔记
(1):数据挖掘相关包的介绍 今天发现一个很不错的博客(http://www.RDataMining.com),博主致力于研究R语言在数据挖掘方面的应用,正好近期很想系统的学习一下R语言和数据挖掘的整 ...
- 《R语言与数据挖掘最佳实践和经典案例》—— 第3章 数 据 探 索
本节书摘来自华章出版社<R语言与数据挖掘最佳实践和经典案例>一 书中的第3章,第3.1节,作者:(澳)Yanchang Zhao,更多章节内容可以访问云栖社区"华章计算机&quo ...
- 《R语言与数据挖掘最佳实践和经典案例》—— 3.5 将图表保存到文件中
本节书摘来自华章出版社<R语言与数据挖掘最佳实践和经典案例>一 书中的第3章,第3.5节,作者:(澳)Yanchang Zhao,更多章节内容可以访问云栖社区"华章计算机&quo ...
- 《R语言与数据挖掘》④R语言数据可视化最全的总结
书籍:<R语言与数据挖掘> 作者:张良均 出版社:机械工业出版社 ISBN:9787111540526 本书由北京华章图文信息有限公司授权杭州云悦读网络有限公司电子版制作与发行 版权所有· ...
最新文章
- Markdown使用文档
- 【错误记录】布局组件加载错误 ( Attempt to invoke virtual method ‘xxx$Callback android.view.Window.getCallback()‘ )
- 玩转服务器(华为云)—购买配置登录篇
- 指针:调用自定义排序函数sort,对输入的n个数进行从小到大输出。
- mysql 优化20点
- 任意文件读取及删除漏洞
- Azkaban业务流程如何转化为DataWorks业务流程
- 【OGG】OGG简单配置双向复制(三)
- mac vulkan_在 macOS 上开发 Vulkan 程序
- vncserver 设置过万的分辨率_修改vnc远程桌面分辨率,2种修改vnc远程桌面分辨率的方法...
- Linux学习3 :用户及文件权限管理
- 小强统一认证中心-项目工程介绍
- LVS之ipvsadm命令
- TFHE同态库的Torus32
- 传销式招聘!被骗到东南亚的程序员到底有多惨?
- 好事成双--庆祝牛郎织女一年一次的见面
- im4java 水印_app后端设计(13)--IM4JAVA+GraphicsMagick实现中文水印
- python删除一列数据_python删除txt第一列数据库
- 建设工程法规专科【7】
- Zemax操作30--目镜基础知识和凯涅尔目镜仿真