推荐系统系列教程之十:协同过滤中的相似度计算方法有哪些?
编者按:之前推出了《推荐系统系列教程》,反响不错,前面已经推出了九期,今天按约推出第十期:协同过滤中的相似度计量方法有哪些?希望朋友们多点“在看”,多多转发,我会在“在看”数超过20后推出下一篇教程。
数据分类
一、欧氏距离
欧氏距离,如名字所料,是一个欧式空间下度量距离的方法。两个物体,都在 同一个空间下表示为两个点,假如叫做 p 和 q,分别都是n个坐标。那么欧氏距离就是衡量这两个点之间的距离,从 p 到 q 移动要经过的距离。欧氏距离不适合布尔向量之间。
计算方式可以表示如下:
距离加1后取倒数。这个公式能够把范围为 0 到正无穷的欧氏距离转换为 0
欧氏距离度量的是空间中两个点的绝对差异,适用于分析用户能力模型之间的
二、余弦相似度
大名鼎鼎的余弦相似度,度量的是两个向量之间的夹角,其实就是用夹角的余弦值来度量,所以名字叫余弦相似度。当两个向量的夹角为 0 度时,余弦值为 1,当夹角为 90 度时,余弦值为 0,为 180 度时,余弦值则为 -1。
余弦相似度在度量文本相似度、用户相似度、物品相似度的时候都较为常用;但是在这里需要提醒你一点,余弦相似度的特点:它与向量的长度无关。因为余弦相似度计算需要对向量长度做归一化:
经过向量长度归一化后的相似度量方式,背后潜藏着这样一种思想:两个向量,只要方向一致,无论程度强弱,都可以视为“相似”。
这简直就是:招聘人才时只看价值观,不考核代码能力,只要肯干,搬砖嘛,谁搬不是搬。这样做错不错呢?很显然,有非常大的合理性。
比如,我用140 字的微博摘要了一篇 5000 字的博客内容,两者得到的文本向量可以认为方向一致,词频等程度 同,但是余弦相似度仍然认为他们是相似的。
在协同过滤中,如果选择余弦相似度,某种程度上更加依赖两个物品的共同评价用户数,而不是用户给予的评分多少。这就是由于余弦相似度被向量长度归一化后的结果。
余弦相似度对绝对值大小不敏感这件事,在某些应用上仍然有些问题。
举个例子,用户 A 对两部电影评分分别是 1 分和 2 分,用户 B 对同样这两部电影评分是 4 分和 5 分。 余弦相似度计算出来,两个 户的相似度达到 0.98。这和实际直觉不符,用户 A 明显不喜欢这两部电影。
针对这个问题,对余弦相似度有个改进,改进的算法叫做调整的余弦相似度(Adjusted Cosine Similarity)。调整的方法很简单,就是先计算向量每个维度上的均值,然后每个向量在各个维度上都减去均值后,再计算余弦相似度。
前面这个小例子,用调整的余弦相似度计算得到的相似度是 -0.1,呈现出两个用户口味相反,和直觉相符。
三、皮尔逊相关度
皮尔逊相关度,实际上也是一种余弦相似度,不过先对向量做了中心化,向量p和 q 各自减去向量的均值后,再计算余弦相似度。
由于皮尔逊相关度度量的是两个变量的变化趋势是否一致,所以不适合用作计 算布尔值向量之间相关度,因为两个布尔向量也就是对应两个 0-1 分布的随机变 量,这样的随机变量变化只有有限的两个取值,根本没有“变化趋势,高低起 伏”这一说。
四、Jaccard相似度
1、分子是两个布尔向量做点积计算,得到的就是交集元素个数;
余弦相似度适用于评分数据,Jaccard相似度适合用于隐式反馈数据。例如,使用户的收藏行为,计算用户之间的相似度,Jaccard相似度就适合来承担这个任务。
总结
推荐系统教程之九:解密“看了又看”和“买了又买”(Item-based)
推荐系统教程之八:人以群分,你是什么人就看到什么世界
推荐系统教程之七:超越标签的内容推荐系统
推荐系统教程之六:从文本到用户画像有多远
推荐系统教程之五:画鬼容易画人难,用户画像的“能”与“不能”
推荐系统教程之四:这些你必须具备的思维模式
推荐系统教程之三:个性化推荐系统那些绕不开的经典话题
推荐系统教程之二:你真的需要搭建个性化推荐系统吗?
推荐系统教程之一:用知识去对抗技术不平等
【推荐算法】基于用户和产品的协同过滤推荐算法
AI换脸APP“ZAO”刷屏并一夜爆火,它能红多久?
今日头条推荐系统原理
feed流设计:那些谋杀你时间的APP
关注我们
智能推荐 个性化推荐技术与产品社区 |
长按并识别关注 |
一个「在看」,一段时光!?
推荐系统系列教程之十:协同过滤中的相似度计算方法有哪些?相关推荐
- 【重磅推出】推荐系统系列教程之九:解密“看了又看”和“买了又买”(Item-Based)...
编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了八期,今天按约推出第九期:解密"看了又看"和"买了又买"(基于物品的协同过滤).希望 ...
- 《使用QSortFilterProxyModel实现QTreeView行列过滤》:系列教程之十
本文属于<QTreeView使用系列教程>之一,欢迎查看其它文章. 一.QSortFilterProxyModel简介 QSortFilterProxyModel的使用比较简单,我们在上一 ...
- SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户
本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自 ...
- sap系统搭建教程_SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户...
本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上: https://blogs.sap.com/2017/12/10/wechat-development-ser ...
- 推荐系统系列教程之十五:一网打尽协同过滤、矩阵分解和线性模型
编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了十四期,今天按约推出第十五期:一网打尽协同过滤.矩阵分解和线性模型.希望朋友们多点"在看",多多转发,我 ...
- 推荐系统系列教程之十六:深度和宽度兼具的融合模型
编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了十五期,今天按约推出第十六期:深度和宽度兼具的融合模型.希望粉丝朋友们多点"在看",多多转发,我会在&q ...
- 推荐系统系列教程之十四:经典模型融合方法----线性模型和树模型的组合拳
编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了十三期,今天按约推出第十四期:经典模型融合办法----线性模型和树模型的组合拳.希望朋友们多点"在看", ...
- AutoML在推荐系统协同过滤中的探索与发现(附交流视频和PPT下载链接)
导读:今天给大家带来第四范式资深研究员.香港科技大学博士姚权铭,在2019年底所做的分享<AutoML在推荐系统协同过滤中的探索与发现>,本文介绍了第四范式研究组将自动化机 ...
- java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作
什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...
最新文章
- 硬盘分区表知识——详解硬盘MBR(转)
- HDU 2546 饭卡(贪心+DP)
- msql安装(zip)
- python博弈论代码_使用 40 多行的 Python 代码实现一个简单的演化过程
- php fopen插入文本_PHP 文件创建/写入
- 上海区块链会议演讲ppt_所以您想参加会议演讲吗? 这是我的建议。
- [转载]基于Aaf的数据拆分
- 机器学习相关——协同过滤
- python 服务器框架_python 服务器框架
- layui select监听选中的值 二级联动
- c#与access建立连接用作登录_SQLServer成功与服务器建立连接,但在登录中发生错误
- 开源项目:测试安卓设备摄像头的帧率
- paraview热流图(2):3D glyphs representation
- xp系统共享服务器怎么设置权限,xp系统局域网设置权限不让其他人访问的方法...
- matlab移植linux qt总结 (未实现)(21.8.25 已另寻别径)
- 赛效:超级简历在线简历助手教您一键制作简历
- 社会神经网络有哪些,神经网络的神经网络
- javascript案例30——continue、break
- Scikit-Learn与 TensorFlow 机器学习实用指南 中文PDF 免费领取
- 计算广告第一章——在线广告综述