推荐阅读时间: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 表示两个变量之间没有线性关系,但不代表没有其他关系。
皮尔逊相关系数不适合用作计算布尔值向量之间相关度。
杰卡德相似度,是两个集合的交集元素个数在并集中所占的比例。
集合非常适用于布尔向量表示,所以向量为布尔值时非常适合使用杰卡德相似度。
这里介绍了几种常见向量的相似度计算方法,如果向量的元素是布尔类型的相似度,适合使用杰卡德相似度、余弦相似度、修正余弦相似度,如果向量的元素是实数值,适合使用欧氏距离、余弦相似度、修正余弦相似度。
点击这里领取BAT面试题 ==》:BAT机器学习/深度学习面试300题
点击这里领取AI小抄表 ==》:AI 小抄表福利大放送,快来收藏吧
作者:无邪,个人博客:脑洞大开,专注于机器学习研究。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有