探索相似性度量

基于用的推荐程序的一个重要的部分是用户相似度(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偏移。或者在基于较少物品计算相关系数时,可以让相关值向偏好值的均值偏移;这与前面的效果类似但实现会比较复杂,因为它需要记录用户对的平均偏好值。

推荐算法-皮尔逊相关系数的相似度相关推荐

  1. ML之KG:基于MovieLens电影评分数据集利用基于知识图谱的推荐算法(networkx+基于路径相似度的方法)实现对用户进行Top电影推荐案例

    ML之KG:基于MovieLens电影评分数据集利用基于知识图谱的推荐算法(networkx+基于路径相似度的方法)实现对用户进行Top电影推荐案例 目录 基于MovieLens电影评分数据集利用基于 ...

  2. 皮尔逊相关系数 余弦相似度

    两个向量 相似度计算 高中知识计算cos. n维同理 . 越接近1 越相似. 推荐系统中协同过滤 user-item矩阵中某个用户的向量评分假设 A(1,1,2,1,1,1,0,0,0) B(1,1, ...

  3. 推荐系统入门学习(二)【余弦相似度|皮尔逊相关系数】

    搭建你的第一个推荐系统 初识推荐系统 最初的推荐系统,作用是过滤垃圾邮件.今日机器学习算法的发展,朴素贝叶斯.神经网络已然成为了过滤垃圾邮件的好手.但是在30年前,算法还没有如今使用得广泛的时候,&q ...

  4. 基于Mahout实现协同过滤推荐算法的电影推荐系统

    1 Mahout介绍 Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更 ...

  5. 《R语言与数据挖掘》⑨智能推荐算法

    写在前面,目前的推荐算法重要分为四类 基于关联规则的推荐算法 基于物品的协同过滤算法 基于用户的协同过滤算法 基于内容的推荐算法 协同过滤 一个重要的环节就是如何选择合适的相似度计算方法,常用的两种相 ...

  6. 【个性化推荐系统】推荐算法

    推荐算法 1. 推荐模型构建流程 2. 最经典的推荐算法:协同过滤推荐算法(Collaborative Filtering) 3. 相似度计算(Similarity Calculation) 4. 协 ...

  7. 推荐系统的常见推荐算法的性能比较

    数据集是movielens-1M(下载)版本. 1. 训练集大小对于推荐性能的影响 使用SlopeOne算法,每次随机选取6%的用户预测其喜好,进行5次实验,取MAE的均值,得到下表: 训练集大小(% ...

  8. Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法

    1.数据分类 实物值(物品或者其他的评分) 布尔值(是或者否的行为),1,0这种布尔值,表肯定或者否定的行为 2.余弦相似度 度量的是两个向量之间的夹角,用夹角的余弦值来度量相似的情况 两个向量的夹角 ...

  9. 推荐算法中常用的几种相似度计算方法

    无论在信息检索(Information retrieval,IR)或是在推荐系统(Recommendation system,RS)中,其一般思路就是先进行合理的数据处理,再计算相似度,从而得出结果. ...

最新文章

  1. 蜘蛛搜索引擎_各大搜索引擎的蜘蛛特点
  2. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
  3. 在linux 下配置firewalld
  4. Google的深度学习强在哪?谷歌首席科学家说了这些奇妙特性
  5. 10.14.2 快捷键,环境变量等
  6. 如何升级浏览器_前谷歌员工爆料:谷歌工程师们是如何合谋“杀死”IE6浏览器的...
  7. POJ 2485 Highways (prim最小生成树)
  8. jqgrid columnChooser列的自定义及存储和获取
  9. python输出变量的值使用_Python捕获任何异常,并使用变量值打印或记录回溯
  10. bootstrap treetable 树形网格,动态扩展,连数据库
  11. 【考试总结贴】工程测量学
  12. AJDK-Wisp协程
  13. UML建模学习1:UML统一建模语言简介
  14. UPC 桐桐的爬山计划
  15. 动网新闻系统IWMS中实现带标题幻灯片的功能效果
  16. 三种查看文件MD5 SHA*等校验值的方法
  17. SQL Server DBCC
  18. 解决微信小程序调试进入 paused in debugger 状态解决办法
  19. Android 文件中断续传
  20. 振兴当当,李国庆如何逐鹿中原?

热门文章

  1. 2019年大学热门专业有哪些?
  2. Swing 各种组件组合大全
  3. matlab的normpdf,normfit和normpdf用法
  4. Twitter如何去中心化?看看这十个SocialFi项目
  5. 汉源高科工业级光纤收发器百兆1光4电钉轨式IP网络光电转换器
  6. Writing a Numeral
  7. 双向链表实现水浒排行增删改查
  8. 使用污点分析检查log4j问题
  9. 小丸工具箱-将视频格式转化为mp4或其他格式的简单方法
  10. KMP算法-超级无敌详细(嚼碎了喂你)