Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何为协同过滤选择合适的相似度算法

如何为协同过滤选择合适的相似度算法

作者头像
abs_zero
修改于 2018-05-26 06:47:42
修改于 2018-05-26 06:47:42
2K0
举报
文章被收录于专栏:AI派AI派

推荐阅读时间:8min~9min 文章内容:相似度算法选择

近邻推荐之基于用户的协同过滤 以及 近邻推荐之基于物品的协同过滤 讲解的都是关于如何使用协同过滤来生成推荐结果,无论是基于用户的协同过滤还是基于物品的协同过滤,相似度的计算都是必不可少的,那么都有哪些计算相似度的方法呢?

到底什么是相似度呢

推荐系统中,近邻推荐的核心就是相似度计算方法的选择,由于近邻推荐并没有采用最优化思路,所以效果通常取决于矩阵的量化方式和相似度的选择。

与相似度通常一起使用的一个概念是距离,这两个概念都可以用来衡量物体在高维空间的亲疏程度。

在近邻推荐中,最常用的是相似度计算方法是余弦相似度,事实上,除了余弦相似度,还有其他的计算方法,比如:欧式距离、修正余弦相似度、皮尔逊相关系数、杰卡德(Jaccard)相似度。

相似度计算方法

相似度计算的对象是向量,向量的取值有两种,一种是 0 或 1,另一种是实数值。

欧氏距离

每个向量可以认为是在高维空间中的一个点,欧式距离就是衡量这两个点之间的距离,欧式距离不适合布尔向量之间。

可以看到,欧式距离得到的结果是一个非负数,最大值是正无穷大,但是通常情况下相似度结果的取值范围在 [-1, 1] 之间。可以对它求倒数将结果转化到 (0, 1]之间。

欧式距离度量的是空间中两个点的绝对差异,适用于分析用户能力模型之间的差异,比如消费能力、贡献内容的能力等

余弦相似度

余弦相似度度量的是两个向量的夹角。

可以看到,余弦相似度对向量长度进行了归一化,所以它的结果与向量长度无关,只与向量的夹角有关。

余弦相似度的取值范围是[0,1],当两个向量的夹角为 0 度时,余弦值为 1,当夹角为 90 度时,余弦值为 0,为 180 度时,余弦值则为 -1。

另外,余弦相似度对向量的绝对值大小也不敏感。例如:用户A对 a、b 两部电影的评分分别是 1 分和 2 分,用户B对两部电影的评分分别是 4 分 和 5 分,计算两个用户向量的余弦相似度,即 [1, 2] 和 [4, 5],结果为 0.98,说明这两个用户比较相似,但实际上这是非常不合理的。

余弦相似度在度量文本相似度、用户相似度、物品相似度的时候都较为常用。

修正余弦相似度

余弦相似度读绝对值不敏感的问题可以通过修正余弦相似度来解决。

修正后的余弦相似度在计算时,会将向量中的每个维度的元素减去该维度对应的均值作为计算值。

接着上面的例子,具体来说,就是得到电影a和电影b的平均评分:[2.5, 3.5],然后重新生成用户A和用户B对应的向量。

用户A: [1, 2] - [2.5, 3.5] = [-1.5, -1.5] 用户B: [4, 5] - [2.5, 3.5] = [1.5, 1.5]

再次计算两个向量的余弦相似度,得到结果为 -1。

皮尔逊相关系数

皮尔逊相关系数衡量的是两个变量之间的线性关系。

可以看出,皮尔逊相关系数会将原始的向量将去该向量的平均值,修正后的余弦相似度会将原始的向量中的值减去每列的平均值。

皮尔逊相关系数的取值范围是 [-1, 1],-1 表示两个变量负相关,1 表示两个变量正相关,0 表示两个变量之间没有线性关系,但不代表没有其他关系。

皮尔逊相关系数不适合用作计算布尔值向量之间相关度。

杰卡德(Jaccard)相似度

杰卡德相似度,是两个集合的交集元素个数在并集中所占的比例。

集合非常适用于布尔向量表示,所以向量为布尔值时非常适合使用杰卡德相似度。

总结

这里介绍了几种常见向量的相似度计算方法,如果向量的元素是布尔类型的相似度,适合使用杰卡德相似度、余弦相似度、修正余弦相似度,如果向量的元素是实数值,适合使用欧氏距离、余弦相似度、修正余弦相似度。

点击这里领取BAT面试题 ==》:BAT机器学习/深度学习面试300题

点击这里领取AI小抄表 ==》:AI 小抄表福利大放送,快来收藏吧

作者:无邪,个人博客:脑洞大开,专注于机器学习研究。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 脑洞科技栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【推荐系统算法实战】协同过滤 CF 算法(Collaborative Filtering)
仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法。学术界对协同过滤算法 进行了深入研究,提出了很多方法,比如基于邻域的方法(neighborhood-based)、隐语义模型 (latent factor model)、基于图的随机游走算法(random walk on graph)等。在这些方法中, 最著名的、在业界得到最广泛应用的算法是基于邻域的方法。
一个会写诗的程序员
2019/12/24
5.2K1
【推荐系统算法实战】协同过滤 CF 算法(Collaborative Filtering)
Collaborative Filtering(协同过滤)算法详解
基本思想 基于用户的协同过滤算法是通过用户的历史行为数据发现用户对商品或内容的喜欢(如商品购买,收藏,内容评论或分享),并对这些喜好进行度量和打分。根据不同用户对相同商品或内容的态度和偏好程度计算用户
Angel_Kitty
2018/04/08
5.8K0
Collaborative Filtering(协同过滤)算法详解
基于协同过滤的推荐引擎(理论部分)
记得原来和朋友猜测过网易云的推荐是怎么实现的,大概的猜测有两种:一种是看你听过的和收藏过的音乐,再看和你一样听过这些音乐的人他们喜欢听什么音乐,把他喜欢的你没听过的音乐推荐给你;另一种是看他听过的音乐或者收藏的音乐中大部分是什么类型,然后把那个类型的音乐推荐给他。当然这些都只是随便猜测。但是能发现一个问题,第二种想法很依赖于推荐的东西本身的属性,比如一个音乐要打几个类型的标签,属性的粒度会对推荐的准确性产生较大影响。今天看了协同过滤后发现其实整个算法大概和第一种的思想差不多,它最大的特点就是忽略了推荐的东西
用户1332428
2018/03/08
1K0
基于协同过滤的推荐引擎(理论部分)
【算法】推荐算法--协同过滤
协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
陆勤_数据人网
2018/07/30
5.4K0
【算法】推荐算法--协同过滤
协同过滤推荐算法(一)原理与实现
协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法(user-based collaboratIve filtering),和基于物品的协同过滤算法(item-based collaborative filtering)。简单的说就是:人以类聚,物以群分。下面我们将分别说明这两类推荐算法的原理和实现方法。
全栈程序员站长
2022/09/07
3.1K0
协同过滤推荐算法(一)原理与实现
协同过滤推荐算法在python上的实现
信息大爆炸时代来临,用户在面对大量的信息时无法从中迅速获得对自己真正有用的信息。传统的搜索系统需要用户提供明确需求,从用户提供的需求信息出发,继而给用户展现信息,无法针对不同用户的兴趣爱好提供相应的信息反馈服务。推荐系统相比于搜索系统,不需要提供明确需求,便可以为每个用户实现个性化推荐结果,让每个用户更便捷地获取信息。它是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。
全栈程序员站长
2022/07/22
1.3K0
协同过滤推荐算法在python上的实现
【机器学习】几种相似度算法分析
欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
全栈程序员站长
2022/07/21
2.3K0
【机器学习】几种相似度算法分析
简单易学的机器学习算法——协同过滤推荐算法(2)
一、基于协同过滤的推荐系统     协同过滤(Collaborative Filtering)的推荐系统的原理是通过将用户和其他用户的数据进行比对来实现推荐的。比对的具体方法就是通过计算两个用户数据之间的相似性,通过相似性的计算来说明两个用户数据之间的相似程度。相似度函数的设计必须满足度量空间的三点要求,即非负性,对称性和三角不等性。常用的相似度的计算方法有:欧式距离法、皮尔逊相关系数法和夹角余弦相似度法。具体的可以参见上一篇文章“协同过滤推荐算法(1) ”。 二、面临的问题     在基本的协同过滤的推荐
felixzhao
2018/03/15
6080
简单易学的机器学习算法——协同过滤推荐算法(2)
推荐系统 —— 协同过滤
作为推荐系统 这一系列的第二篇文章,我们今天主要来聊一聊目前比较流行的一种推荐算法——协同过滤; 当然,这里我们只讲理论,并不会涉及到相关代码或者相关框架的使用,在这一系列的后续文章,如果可能,我们可以将我们的所有理论知识整合一下,实践一个 推荐系统的 实战。
solve
2019/10/30
8340
Python AI 教学|SVD(Singular Value Decomposition)算法及应用
如果一个向量v是方阵A的特征向量,则将其可以表示为Av=λv。λ被称为特征向量v对应的特征值。
用户1621951
2019/10/18
2.8K0
Python AI 教学|SVD(Singular Value Decomposition)算法及应用
简单易学的机器学习算法——协同过滤推荐算法(1)
    推荐系统(Recommendation System, RS),简单来说就是根据用户的日常行为,自动预测用户的喜好,为用户提供更多完善的服务。举个简单的例子,在京东商城,我们浏览一本书之后,系统会为我们推荐购买了这本书的其他用户购买的其他的书:
felixzhao
2019/02/13
5480
小白学推荐1 | 协同过滤 零基础到入门
协同过滤推荐算法是诞生最早,最为基础的推荐算法。 算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。
机器学习炼丹术
2020/08/10
6660
简单易学的机器学习算法——协同过滤推荐算法(1)
一、推荐系统的概念     推荐系统(Recommendation System, RS),简单来说就是根据用户的日常行为,自动预测用户的喜好,为用户提供更多完善的服务。举个简单的例子,在京东商城,我
felixzhao
2018/03/15
1K0
简单易学的机器学习算法——协同过滤推荐算法(1)
基于用户的协同过滤python代码实现
在推荐算法概述中介绍了几种推荐算法的概念,但是没有具体代码实现,本篇文章首先来看一下基于用户的协同过滤python代码。
三猫
2020/05/20
1.8K5
Springboot+vue.js+协同过滤推荐+余弦相似度算法实现新闻推荐系统
针对海量的新闻资讯数据,如何快速的根据用户的检索需要,完成符合用户阅读需求的新闻资讯推荐?本篇文章主要采用余弦相似度及基于用户协同过滤算法实现新闻推荐,通过余弦相似度算法完成针对不同新闻数据之间的相似性计算,实现分类标签。通过协同过滤算法发现具备相似阅读习惯的用户,展开个性化推荐。
计算机程序优异哥
2022/05/18
8050
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
推荐系统是一种通过分析用户历史行为、个人兴趣和社交关系等信息,向用户提供个性化推荐内容的技术。推荐系统在电子商务、社交网络和音乐视频等应用中得到了广泛应用。本文将详细介绍推荐系统算法的研究与实践,重点介绍了协同过滤、基于内容的推荐和深度学习推荐模型,并分析了它们的优缺点和实际应用场景。
网络技术联盟站
2023/07/04
2.5K0
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
计算向量间相似度的常用方法
计算化学中有时会要求我们计算两个向量的相似度,如做聚类分析时需要计算两个向量的距离,用分子指纹来判断两个化合物的相似程度,用夹角余弦判断两个描述符的相似程度等。计算向量间相似度的方法有很多种,本文将简单介绍一些常用的方法。这些方法相关的代码已经提交到github仓库
用户7592569
2020/07/27
33.2K0
计算向量间相似度的常用方法
常见计算用户之间的相似度方法有哪些?
模型计算用户之间的相似度方法在多个领域有着广泛应用,以下是对几种常见方法的详细描述:
jack.yang
2025/04/05
1500
常见计算用户之间的相似度方法有哪些?
协同过滤算法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155142.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
9880
推荐系统基础知识储备
1.1.1 推荐系统概述 首先,需要申明一点的就是推荐系统!=推荐算法。推荐系统是一套完善的推荐机制,包括前期数据的准备、具体推荐的过程(这个过程可能是一套复杂的算法模型,也可能是一个简单的规则,也可能是多种模型的混合结果等等)、后期数据的预测、AB测试效果评估等等。
流川枫
2018/09/12
1.2K0
推荐系统基础知识储备
推荐阅读
相关推荐
【推荐系统算法实战】协同过滤 CF 算法(Collaborative Filtering)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档