前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何为协同过滤选择合适的相似度算法

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

作者头像
abs_zero
修改2018-05-26 14:47:42
1.8K0
修改2018-05-26 14:47:42
举报
文章被收录于专栏: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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 到底什么是相似度呢
  • 相似度计算方法
    • 欧氏距离
      • 余弦相似度
        • 修正余弦相似度
          • 皮尔逊相关系数
            • 杰卡德(Jaccard)相似度
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档