推荐系统笔记三、基于近邻的推荐系统进阶篇
来源:互联网 发布:音乐剪切合并软件 mac 编辑:程序博客网 时间:2024/05/16 01:19
一、概述:
基于近邻的推荐算法在推荐系统中占有重要的地位,是学术界的一个重点研究方向,在产业界也得到了广泛的应用。基于近邻的推荐算法大致可以分为user-based和item-based两类,关于近邻推荐算法的基础性介绍,请参见博文: “推荐系统笔记一、基于近邻的推荐系统(基础篇)”。由于user-based方法和item-based方法的相似性,本文主要讨论item-based方法上的一些技术,这些技术可以被直接套用到user-based方法上。本文主要介绍五种近邻模型。
二、符号定义:
- U:用户集合;I:item集合;
- R:评分集合,
rui 表示用户u∈U 对itemi∈I 的评分; Ui :已经给item i打分的用户集合;Iu :已经被用户u打分的item集合;Iuv :Iu∩Iv ,同时被用户u和用户v打过分的item集合;Uij :同时对item i和j打过分的用户集合;wuv :用户u和v之间的相似度;wij :item i和j之间的相似度;
三、相似权值计算:
两个用户或者item间的近邻关系是由他们之间的相似度来判断的,与一个用户(或item)相似度最大的k个用户(或item)称为他的k近邻。
cosine相似度是其中一种常用的度量方法:
即
如果考虑均值和方差,则得到Pearson相关系数:
Pearson Correlation是在集合
相似权值改进:
在实际中,不同用户或者item的评分往往是带偏差的,例如A和B两个用户的偏好类似,但是A比较容易满足,倾向于给item打高分;而B倾向于给item打低分(Item 上也有类似的情况)。为了解决这个问题,需要为每个用户和item增加一个偏置项。在前面的式子中,用均值
其中
把这个偏置代入Pearson Correlation,得到:
当使用Pearson Correlation方法时,如果item i和j只被一个用户同时评分过,并且恰好在这两个item上的评分相同,那么根据Pearson公式他们之间的相似度等于1,这显然不大合理。可以用以下方法对权值进行收缩:
四、相似度插值:
Similarity-Based Interpolation:定义
这可以看做一个插值函数,
- 可解释性。通过用户对item的历史评分(喜好)推荐新的item。
- 实时性。一旦用户给出新的评分,item-based模型可以立即提供新的推荐,而不需要重新训练模型或计算参数(通常认为item间的相似度在短时间内是恒定的,只需每隔较长一段时间重新计算)。
五、联合派生插值权重:
Jointly Derived Interpolation Weights:相似度插值方法直接使用item间的相似度作为插值权重(系数),忽略了近邻间的相互关系,为了更好的预测评分,需要重新学习插值权重
插值权重通过求解一个最小二乘问题得到:
如果写成
由于评分矩阵是稀疏的,很少有用户v对
六、全局近邻模型:
前面介绍的近邻模型都是局部的(k近邻),全局近邻模型吸取了矩阵分解模型的优点,从而可以得到更优的结果。这种模型可以使用隐式反馈,并且具有较好的实时性。重新定义预测函数:
七、因子分解近邻模型:
可以对全局近邻模进行因子分解以减少时间和空间复杂度,提高准确率:
可以发现最后的表示和SVD++很相似。
八、近邻模型添加时间信息:
用户的偏好是随着时间不断发生变化的,\emph{如一个人喜欢的电影在2年前和2年后很可能是不同的}。在全局近邻模型中可以很容易加入时间信息:
九、参考资料
Recommender Systems Handbook
- 顶
- 0
- 推荐系统笔记三、基于近邻的推荐系统(进阶篇)
- 推荐系统笔记三、基于近邻的推荐系统进阶篇
- 推荐系统笔记三、基于近邻的推荐系统(进阶篇)
- [推荐系统02]基于近邻的推荐
- 推荐系统笔记一、基于近邻的推荐系统(基础篇)
- 推荐系统笔记一、基于近邻的推荐系统(基础篇)
- 推荐系统笔记一、基于近邻的推荐系统(基础篇)
- 基于近邻用户协同过滤算法的音乐推荐系统
- 推荐系统笔记四、基于内容的推荐系统
- 推荐系统笔记四、基于内容的推荐系统
- 推荐系统简述(2)基于近邻推荐方法
- 基于内容的推荐算法(推荐系统)(三)
- 【推荐系统】协同过滤之基于用户的最近邻推荐
- 《推荐系统》--基于内容的推荐
- 《推荐系统》--基于知识的推荐
- 推荐系统_基于内容的推荐
- 《推荐系统》基于图的推荐算法
- [推荐系统01]基于内容的推荐
- zstack之应用层的发送函数及绑定(CC2530)
- HBase集群配置
- 推荐系统笔记一、基于近邻的推荐系统(基础篇)
- LeetCode 301. Remove Invalid Parentheses(删除无效的括号)
- 推荐系统笔记二、矩阵分解协同过滤
- 推荐系统笔记三、基于近邻的推荐系统进阶篇
- Python-回文检测和布尔操作(and,or,not)
- 散列学习(二)
- 跟黄哥学python序列文章之python方法链(method chaining)
- raft实现
- sklearn画ROC曲线
- eclipse、ddms、android studio连接不上手机问题解决
- 【接口测试】FitNesse中文指南
- 15个顶级Java多线程面试题及回答 / Java程序员面试中的多线程问题