推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8 年推荐系统工程师
43160 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
开篇词 (1讲)
原理篇 · 深度学习 (2讲)
原理篇 · 其他应用算法 (3讲)
推荐系统三十六式
15
15
1.0x
00:00/00:00
登录|注册

09 | 协同过滤中的相似度计算方法有哪些

今天,我们来聊聊协同过滤中的相似度计算方法有哪些。

相似度的本质

推荐系统中,推荐算法分为两个门派,一个是机器学习派,另一个就是相似度门派。机器学习派是后起之秀,而相似度派则是泰山北斗,以致撑起来推荐系统的半壁江山。
近邻推荐顾名思义就是在地理位置上住得近。如果用户有个邻居,那么社交软件上把邻居推荐给他在直观上就很合理,当然,如果邻居姓王的话,就不要推荐了。
这里说的近邻,并不一定只是在三维空间下的地理位置的近邻,在任意高维空间都可以找到近邻,尤其是当用户和物品的特征维度都很高时,要找到用户隔壁的邻居,就不是那么直观,需要选择好用适合的相似度度量办法。
近邻推荐的核心就是相似度计算方法的选择,由于近邻推荐并没有采用最优化思路,所以效果通常取决于矩阵的量化方式和相似度的选择。
相似度,与之配套的还有另一个概念就是距离,两者都是用来量化两个物体在高维空间中的亲疏程度的,它们是硬币的两面。
推荐算法中的相似度门派,实际上有这么一个潜在假设:如果两个物体很相似,也就是距离很近,那么这两个物体就很容易产生一样的动作。
如果两篇新闻很相似,那么他们很容易被同一个人先后点击阅读,如果两个用户很相似,那么他们就很容易点击同一个新闻。这种符合直觉的假设,大部分时候很奏效。
其实属于另一门派的推荐算法——机器学习中,也有很多算法在某种角度看做是相似度度量。
例如,逻辑回归或者线性回归中,一边是特征向量,另一边是模型参数向量,两者的点积运算,就可以看做是相似度计算,只不过其中的模型参数向量值并不是人肉指定的,而是从数据中由优化算法自动总结出来的。
在近邻推荐中,最常用的相似度是余弦相似度。然而可以选用的相似度并不只是余弦相似度,还有欧氏距离、皮尔逊相关度、自适应的余弦相似度、局部敏感哈希等。使用场景各不相同,今天,我会分别一一介绍如下。

相似度的计算方法

数据分类

在真正开始巡视相似度计算方法前,我先给你把度量对象做个简单分类。相似度计算对象是向量,或者叫做高维空间下的坐标,一个意思。那表示这个向量的数值就有两种:
实数值;
布尔值,也就是 0 或者 1。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《推荐系统三十六式》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(21)

  • 最新
  • 精选
  • 叶晓锋
    如何做社交网络好友相似的度量,我喜欢这个问题。粗略来说我会用这几个特征:帖子发布数量,月均发帖数量,平均帖子字数,头像,一些标签数据,例如是否大V,是否营销号,是否网红,职业等标签数据。另外还可以统计发文Top关键词向量及词频。标签数据可计算杰卡的相似度,Top关键词可计算余弦相似度,发布量,字数等可计算欧氏距离,然后再融合这几种相似度得到总和相似度。

    作者回复: 赞!

    2
    82
  • 愚公移山
    老师,感觉改进的余弦相似度和皮尔逊相关度是一样的?

    作者回复: 不一样。一个是对行向量中心化,一个是对列向量中心化。

    20
  • Aaron
    收藏为什么是隐式反馈数据呢?已经很强的表明用户的感兴趣程度了

    作者回复: 1.不必去纠结这个区分,所有数据你都应该拿来用。 2.用户收藏的目的可不是为了表达或者评价他对物品的喜好,而是为了以后看。 3.我认为反馈的主要直接目的不是表达“自己有多爱”,都是隐式反馈。

    5
  • 林彦
    用户好友关系是布尔值,适合Jaccard相似度和余弦相似度

    作者回复: 如果关系上有亲密度呢?

    2
  • holysky
    讲的非常好。

    作者回复: 欢迎传阅。

    1
  • auroroa
    余弦相似度的小例子,用调整的余弦相似度计算得到的相似度是 -0.1。 这里计算的结果应该是 -1 吧,实际转换成(-1.5,-1.5)和(1.5,1.5)的余弦值
    1
    24
  • 曾阿牛
    看过某厂分享过一种方法。 将社交网络看成图,用node2vec方法: 1.定义网络:用户为点,用户之间的沟通次数/点赞次数等互动行为定义为边的权重 2.根据边的权重进行随机游走,生成序列 3.用word2vec生成点的向量值 4.选择相似度公式计算
    15
  • Geek_75d2a2
    感谢分享,这个blog里面讲述了调整余弦相似度和皮尔逊相关度的区别:http://wulc.me/2016/02/22/%E3%80%8AProgramming%20Collective%20Intelligence%E3%80%8B%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0(2)--%E5%8D%8F%E5%90%8C%E8%BF%87%E6%BB%A4/
    3
  • neohope
    感觉不同产品用的好友推荐策略是不太一样: 微博,可以通过关心的话题,转发情况以及点赞情况,是可以计算相似度的,但要适当降低大V和热门时间的系数。当然也会推荐你关注的人关注的人,这个是天然成立的。 微信,是熟人社交,但有时候不能通过点赞转发来判断是不是关系好,因为有时候是不得已而为之。可能通过好友的标签、屏蔽关系和联系的多少来计算亲密度会更准确一些。所以微信一开始是通过通讯录来完成市场占领的,后面是通过转发名片、群聊、扫一扫等方式,多数情况下并不需要主动推荐。 linkedin,是职场社交,更像基于图数据库,你有几个朋友通过几次跳转能联系到某人然后推荐。因为熟人的熟人可能是熟人。 facebook,其实是一个更纯粹的社交网络,需要多种推荐方式要一起使用才可以的。包括教育经历、工作经历、兴趣爱好、喜欢的话题、追星、择友标准、喜欢的食物等很多维度都要用到。感觉今天讲到的几种方法其实都可以使用,图数据库也要用到。
    2
  • liuchen
    调整的余弦相似度计算就是用用户均值中心化后的向量进行余弦相似度计算,因为中心化后的值才相对真实反映用户的喜好 皮尔逊相关系数就是概率论的一种度量向量之间相关性的方法
    1
收起评论
大纲
固定大纲
相似度的本质
相似度的计算方法
数据分类
显示
设置
留言
21
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部