推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8年推荐系统工程师
立即订阅
11433 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 用知识去对抗技术不平等
免费
第1章 概念篇 (3讲)
【概念篇】你真的需要个性化推荐系统吗?
【概念篇】个性化推荐系统那些绕不开的经典问题
【概念篇】这些你必须应该具备的思维模式
第2章 原理篇 (20讲)
【内容推荐】画鬼容易画人难:用户画像的“能”和“不能”
【内容推荐】从文本到用户画像有多远
【内容推荐】超越标签的内容推荐系统
【近邻推荐】人以群分,你是什么人就看到什么世界
【近邻推荐】解密“看了又看”和“买了又买”
【近邻推荐】协同过滤中的相似度计算方法有哪些
【矩阵分解】那些在Netflix Prize中大放异彩的推荐算法
【矩阵分解】Facebook是怎么为十亿人互相推荐好友的
【矩阵分解】如果关注排序效果,那么这个模型可以帮到你
【模型融合】经典模型融合办法:线性模型和树模型的组合拳
【模型融合】一网打尽协同过滤、矩阵分解和线性模型
【模型融合】深度和宽度兼具的融合模型 Wide and Deep
【MAB问题】简单却有效的Bandit算法
【MAB问题】结合上下文信息的Bandit算法
【MAB问题】如何将Bandit算法与协同过滤结合使用
【深度学习】深度学习在推荐系统中的应用有哪些?
【深度学习】用RNN构建个性化音乐播单
【其他应用算法】构建一个科学的排行榜体系
【其他应用算法】实用的加权采样算法
【其他应用算法】推荐候选池的去重策略
第3章 工程篇 (10讲)
【常见架构】典型的信息流架构是什么样的
【常见架构】Netflix个性化推荐架构
【常见架构】总览推荐架构和搜索、广告的关系
【关键模块】巧妇难为无米之炊:数据采集关键要素
【关键模块】让你的推荐系统反应更快:实时推荐
【关键模块】让数据驱动落地,你需要一个实验平台
【关键模块】 推荐系统服务化、存储选型及API设计
【效果保证】推荐系统的测试方法及常用指标介绍
【效果保证】道高一尺魔高一丈:推荐系统的攻防
【开源工具】和推荐系统有关的开源工具及框架介绍
第4章 产品篇 (3讲)
【产品篇】推荐系统在互联网产品商业链条中的地位
【产品篇】说说信息流的前世今生
【团队篇】组建推荐团队及工程师的学习路径
尾声与参考阅读 (2讲)
推荐系统的参考阅读
【尾声】遇“荐”之后,江湖再见
推荐系统三十六式
登录|注册

【近邻推荐】协同过滤中的相似度计算方法有哪些

刑无刀 2018-03-23
今天,我们来聊聊协同过滤中的相似度计算方法有哪些。

相似度的本质

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

相似度的计算方法

数据分类

在真正开始巡视相似度计算方法前,我先给你把度量对象做个简单分类。相似度计算对象是向量,或者叫做高维空间下的坐标,一个意思。那表示这个向量的数值就有两种:
实数值;
布尔值,也就是 0 或者 1。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《推荐系统三十六式》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(18)

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

    作者回复: 赞!

    2018-03-23
    1
    49
  • auroroa
    余弦相似度的小例子,用调整的余弦相似度计算得到的相似度是 -0.1。

    这里计算的结果应该是 -1 吧,实际转换成(-1.5,-1.5)和(1.5,1.5)的余弦值
    2018-07-19
    15
  • 愚公移山
    老师,感觉改进的余弦相似度和皮尔逊相关度是一样的?

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

    2018-03-23
    12
  • 曾阿牛
    看过某厂分享过一种方法。
    将社交网络看成图,用node2vec方法:
    1.定义网络:用户为点,用户之间的沟通次数/点赞次数等互动行为定义为边的权重
    2.根据边的权重进行随机游走,生成序列
    3.用word2vec生成点的向量值
    4.选择相似度公式计算
    2018-03-24
    7
  • Aaron
    收藏为什么是隐式反馈数据呢?已经很强的表明用户的感兴趣程度了

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

    2018-07-22
    2
  • 林彦
    用户好友关系是布尔值,适合Jaccard相似度和余弦相似度

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

    2018-03-23
    2
  • 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/
    2019-09-23
    1
  • liuchen
    调整的余弦相似度计算就是用用户均值中心化后的向量进行余弦相似度计算,因为中心化后的值才相对真实反映用户的喜好
    皮尔逊相关系数就是概率论的一种度量向量之间相关性的方法
    2018-12-01
    1
  • auroroa
    老师,有个这种情况请教下:
    假设 A、B 是物品被购买的向量,向量的维度是用户 a,b,c 分别是物品被购买的次数,有如下两种情况:
    第一种
    A向量:[1,0,0]
    B向量:[1,0,0]
    第二种:
    A向量:[1,1,0]
    B向量:[1,1,0]
    我用余弦相似度计算两种情况 A、B 向量的距离,发现结果是一样的,都是 1,相似度已经最大了。但实际上我当然希望的是第二种情况下的相似度更高,并且不希望这种只有一组共同购买的情况相似度这么高。
    我换过其他计算距离的算法,都比这个好,但是为啥都说这个余弦相似度又是用的最广泛最好的?
    2018-07-19
    1
  • Lz
    现在在做的项目打算直接w2v+wmd计算文档相似度。想请教一下,对于同一组数据和feature使用多种度量方式有帮助么?
    2018-05-08
    1
  • shoxx
    維度中心化—adjusted cosine similarity
    向量中心化—皮爾森
    是這樣嗎?
    2018-03-30
    1
  • holysky
    讲的非常好。

    作者回复: 欢迎传阅。

    2018-03-23
    1
  • neohope
    感觉不同产品用的好友推荐策略是不太一样:

    微博,可以通过关心的话题,转发情况以及点赞情况,是可以计算相似度的,但要适当降低大V和热门时间的系数。当然也会推荐你关注的人关注的人,这个是天然成立的。

    微信,是熟人社交,但有时候不能通过点赞转发来判断是不是关系好,因为有时候是不得已而为之。可能通过好友的标签、屏蔽关系和联系的多少来计算亲密度会更准确一些。所以微信一开始是通过通讯录来完成市场占领的,后面是通过转发名片、群聊、扫一扫等方式,多数情况下并不需要主动推荐。

    linkedin,是职场社交,更像基于图数据库,你有几个朋友通过几次跳转能联系到某人然后推荐。因为熟人的熟人可能是熟人。

    facebook,其实是一个更纯粹的社交网络,需要多种推荐方式要一起使用才可以的。包括教育经历、工作经历、兴趣爱好、喜欢的话题、追星、择友标准、喜欢的食物等很多维度都要用到。感觉今天讲到的几种方法其实都可以使用,图数据库也要用到。
    2019-12-04
  • 张方
    老师 不是一个对行 一个对列吧 得分是基于用户的还是商品的吧
    2018-05-26
  • 竹子
    关于相似度的算法,基本理解了。有一个问题,对推荐内容的评分预测,是否能讲解下
    2018-04-11
  • Leeb
    图书借阅的话,没有评分,只能是布尔值了?用slope one合适吗?
    2018-03-24
  • 林彦
    第一个长回答已经不错了。如果有亲密度或其他量化数据可以用欧氏距离,调整的余弦相似度或皮尔逊相关系数。自己还未时间对比过不同距离的效果,不知道哪种更适合什么特定场景。
    2018-03-23
  • damonhao
    Jaccard和余弦都可
    2018-03-23
收起评论
18
返回
顶部