推荐算法-皮尔逊相关系数的相似度
探索相似性度量
基于用的推荐程序的一个重要的部分是用户相似度(UserSimilarity)实现。基于用户的推荐非常依赖这个组件。如果对用户的相似性缺乏可靠有效的定义,这类推荐方法是没有意义的。这也适用于用户的推荐的“近亲”------基于物品的推荐程序,它同样依赖相似性。
基于皮尔逊相关系数的相似度
皮尔逊相关系数是一个介于-1和1之间的数,它度量 两个一一对应数列之间的线性相关程度。也就是说,它表示两个数列中对应数字一起增大或者一起减小的可能性。它度量数字一起按比例改变的倾向性,也就是说两个数列中的数字存在一个大致的线性关系。当该倾向性强时,相关值趋于1。当相关性很弱时,相关值趋于0。在负相关的情况下一个序列的值很高而另一个序列的值低---相关趋势趋于-1
注意: 1、皮尔逊相关系数是两个序列协方差与两者方差乘积的比值。
2、协方差计算的是两个序列变化趋势一致的绝对量。当两个序列相对于各自的均值点向同一个方向移动得越远,协方差就越大。除以方差则是为了对这一变化进行归一化。
这一统计学中广泛使用的概念,同样可以用于度量用户之间的相似性。它度量两个用户针对同一物品的偏好值变化趋势的一致性(都偏高或者都偏低)。
例如:
1,101,5.0
1,102,3.0
1,103,2.5
2,101,2.0
2,102,2.5
2,103,5.0
2,104,2.0
3,101,2.5
3,104,4.0
3,105,4.5
3,107,5.0
4,101,5.0
4,103,3.0
4,104,2.5
4,106,4.0
5,101,4.0
5,102,3.0
5,103,2.0
5,104,4.0
5,105,3.5
5,106,4.0
我们注意到用户1和用户5看起来相似,因为他们的偏好值一同改变。对于物品101,102,103他们大体一致,101最好,102略差,103不理想。类似的用户1和用户2不那么相似。注意关于用户1的分析不包括104-106,因为用户对他们的偏好是未知的。相似度的计算仅能在用户都表达了偏好的物品上进行。
在用户1和其它用户之间基于3个共有物品的皮尔逊相关系数
101 |
102 |
103 |
与用户1的相关性 |
|
用户1 |
5.0 |
3.0 |
2.5 |
1.000 |
用户2 |
2.0 |
2.5 |
5.0 |
-0.764 |
用户3 |
2.5 |
- |
- |
- |
用户4 |
5.0 |
- |
3.0 |
1.000 |
用户5 |
4.0 |
3.0 |
2.0 |
0.945 |
皮尔逊相关系数存在的问题
尽管结果很直观,但某些情况下皮尔逊相关系数在推荐引擎中表现的很奇怪。
首先,它没有考虑两个用户同时给出偏好值得物品数目,在推荐引擎中可能不太可靠
。例如,两个看过200部相同的电影的用户,即便他们给出的评分偶尔不一致,但可能要比两个尽看过两部相同的用户更相似。这在上面的数据中有体现;注意用户1和5对三个共同商品表达了偏好,他们的品味看似比较相近。但是,用户1和4的交集仅包含两个物品,却得到了1.0这个更高的相关值。这有点不符合常规。
其次,基于该计算的定义,如果两个用户的交集仅包含一个物品,则无法计算相关性。这也是没有计算用户1和3之间的相关性的原因。在小的或稀疏的数据集上,这个问题就凸显出来了。因为其中用户的物品集很少重叠。当然,这可能也是一种优点,直观上讲,如果两个用户的交集仅有一个物品的话,他们可能并不太相似。
最后,只要任何一个序列中出现偏好值相同的情况(此时该序列方差为0,导致皮尔逊相关计算公式的分母为0)。相关系数都是未定义(undefined).这种情况并不需要两个序列中的偏好值都完全一样。例如,若用户5对所有三个物品的偏好值都是3.0。即使用户1有3.0以外的偏好值,也无法计算用户1和用户5之间的相似度(因为皮尔逊相关系数将是未定义的)。这一问题同样很可能出现在两个用户的偏好交集很小的情形。
尽管皮尔逊相关系数在早期关于推荐系统的论文中很常见,并且在很多介绍推荐系统的书中被提及,但它未必是最优的。当然,它不差;你只需理解它是如何工作打的。
引入权重
为了解决上述的问题,我们可以在计算的基础上提供扩展,即加权
皮尔逊相关系数并不直接反映其用到的物品数目。而我们是需要这个数字的。考虑的信息越多,所得到的相关结果越可靠。为了体现这一点,最好在基于较多物品计算相关系数时,使正相关值向1.0偏移,而使负相关向-1.0偏移。或者在基于较少物品计算相关系数时,可以让相关值向偏好值的均值偏移;这与前面的效果类似但实现会比较复杂,因为它需要记录用户对的平均偏好值。
推荐算法-皮尔逊相关系数的相似度相关推荐
- ML之KG:基于MovieLens电影评分数据集利用基于知识图谱的推荐算法(networkx+基于路径相似度的方法)实现对用户进行Top电影推荐案例
ML之KG:基于MovieLens电影评分数据集利用基于知识图谱的推荐算法(networkx+基于路径相似度的方法)实现对用户进行Top电影推荐案例 目录 基于MovieLens电影评分数据集利用基于 ...
- 皮尔逊相关系数 余弦相似度
两个向量 相似度计算 高中知识计算cos. n维同理 . 越接近1 越相似. 推荐系统中协同过滤 user-item矩阵中某个用户的向量评分假设 A(1,1,2,1,1,1,0,0,0) B(1,1, ...
- 推荐系统入门学习(二)【余弦相似度|皮尔逊相关系数】
搭建你的第一个推荐系统 初识推荐系统 最初的推荐系统,作用是过滤垃圾邮件.今日机器学习算法的发展,朴素贝叶斯.神经网络已然成为了过滤垃圾邮件的好手.但是在30年前,算法还没有如今使用得广泛的时候,&q ...
- 基于Mahout实现协同过滤推荐算法的电影推荐系统
1 Mahout介绍 Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更 ...
- 《R语言与数据挖掘》⑨智能推荐算法
写在前面,目前的推荐算法重要分为四类 基于关联规则的推荐算法 基于物品的协同过滤算法 基于用户的协同过滤算法 基于内容的推荐算法 协同过滤 一个重要的环节就是如何选择合适的相似度计算方法,常用的两种相 ...
- 【个性化推荐系统】推荐算法
推荐算法 1. 推荐模型构建流程 2. 最经典的推荐算法:协同过滤推荐算法(Collaborative Filtering) 3. 相似度计算(Similarity Calculation) 4. 协 ...
- 推荐系统的常见推荐算法的性能比较
数据集是movielens-1M(下载)版本. 1. 训练集大小对于推荐性能的影响 使用SlopeOne算法,每次随机选取6%的用户预测其喜好,进行5次实验,取MAE的均值,得到下表: 训练集大小(% ...
- Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法
1.数据分类 实物值(物品或者其他的评分) 布尔值(是或者否的行为),1,0这种布尔值,表肯定或者否定的行为 2.余弦相似度 度量的是两个向量之间的夹角,用夹角的余弦值来度量相似的情况 两个向量的夹角 ...
- 推荐算法中常用的几种相似度计算方法
无论在信息检索(Information retrieval,IR)或是在推荐系统(Recommendation system,RS)中,其一般思路就是先进行合理的数据处理,再计算相似度,从而得出结果. ...
最新文章
- 蜘蛛搜索引擎_各大搜索引擎的蜘蛛特点
- 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
- 在linux 下配置firewalld
- Google的深度学习强在哪?谷歌首席科学家说了这些奇妙特性
- 10.14.2 快捷键,环境变量等
- 如何升级浏览器_前谷歌员工爆料:谷歌工程师们是如何合谋“杀死”IE6浏览器的...
- POJ 2485 Highways (prim最小生成树)
- jqgrid columnChooser列的自定义及存储和获取
- python输出变量的值使用_Python捕获任何异常,并使用变量值打印或记录回溯
- bootstrap treetable 树形网格,动态扩展,连数据库
- 【考试总结贴】工程测量学
- AJDK-Wisp协程
- UML建模学习1:UML统一建模语言简介
- UPC 桐桐的爬山计划
- 动网新闻系统IWMS中实现带标题幻灯片的功能效果
- 三种查看文件MD5 SHA*等校验值的方法
- SQL Server DBCC
- 解决微信小程序调试进入 paused in debugger 状态解决办法
- Android 文件中断续传
- 振兴当当,李国庆如何逐鹿中原?