返回博客列表

相似度计算:推荐的度量衡

详细介绍推荐系统中常用的相似度计算方法,包括余弦相似度、欧氏距离等,以及它们的应用场景。

2024-02-065 分钟阅读Yaron
#召回算法#相似度计算#机器学习

相似度计算:推荐的度量衡 (小白版)

你好呀!欢迎来到我们系列文档的最后一站!今天,我们要探讨一个非常朴素但又极其重要的话题:在推荐的世界里,我们怎么知道两个人"志趣相投"?

这就要靠我们的"度量衡"——相似度计算了。它就像一把尺子,能精确地量出两个用户或两个物品之间的"缘分指数"。

1. 万物皆可量:先变成向量

要想用数学尺子去量,我们得先把要量的东西变成"看得见、摸得着"的数学对象。在推荐系统里,这个对象就是向量 (Vector)。

想象一下,我们要衡量两个用户的品味,我们就把他们对所有电影的评分,变成一个长长的"评分向量":

  • 用户A (小红) 的评分向量 U_A = [5, 4, 0, 1, 0] (分别对应《战狼》、《流浪地球》、《小时代》、《前任3》、《喜羊羊》的评分,0代表没看过)
  • 用户B (小明) 的评分向量 U_B = [4, 3, 0, 2, 0]

好了,现在"小红和小明有多像"这个问题,就变成了"向量A和向量B有多像"这个数学问题了。

2. 三把神奇的"尺子":从不同角度量相似

世界上没有哪一把尺子能包治百病,不同的场景需要用不同的尺子。

尺子一:余弦相似度 —— "品味方向"测量尺

它量什么:两个向量在空间中的夹角。夹角越小,说明方向越一致,就越相似。

好比是:小红和小明都更喜欢科幻片(《战狼》《流浪地球》),而不是言情片(《小时代》《前任3》)。尽管小红打分普遍偏高,但他们喜欢的"大方向"是一致的。这把尺子就专门量这种"品味方向",而不太关心打分的绝对高低。

尺子二:皮尔逊相关系数 —— "体谅你"的智能尺

它量什么:两个变量的线性相关程度。

好比是:这是余弦尺子的"情商升级版"。它在测量前,会先做一个非常贴心的动作:减去每个人的平均分。我们马上就会看到,这个小动作有多厉害。

尺子三:杰卡德相似度 —— "购物篮"重合度测量尺

它量什么:两个集合的交集大小,除以并集大小。

好比是:我们不关心你给苹果打了几分,只关心你的购物篮里有没有苹果。这把尺子就是看小红和小明的购物篮里,共同的商品占了所有不重复商品的多大比例。非常适合衡量"买没买"、"点没点"这种0/1行为的相似度。

3. 用更好的尺子,治推荐的"病"

推荐算法的进步,很大程度上就是"发明更好的尺子"来治病的过程。

病症一:打分标准不一样怎么办?(评分尺度偏置)

病症描述: 小红是个"乐观派",电影不难看就给4-5分。小明是个"纠结派",觉得还不错的电影也只给1-2分。就算他们俩喜欢的电影类型一模一样,用第一把"余弦尺子"去量,也会因为分数差异大,觉得他们"不是一路人"。

治疗方案: 立刻换上第二把"皮尔逊智能尺"!它在计算前,会先算出小红的平均分是4.5,小明的平均分是1.5。然后,它把每个人的原始打分都减去自己的平均分,得到一个"中心化"之后的分数。

看!经过"体谅"(中心化)之后,模型发现他们的品味趋势完全一样!病治好了。

病症二:人人都买的东西能说明啥?(热门物品偏置)

病症描述: 小红和小明都买过"可口可乐"。如果系统仅凭这个共同点,就认为他们是"同好",那也太草率了。热门商品对区分用户的真实、独特品味的贡献应该更小。

治疗方案: 给我们的尺子加上"权重"功能!在计算相似度时,我们认为,越是小众的东西,权重越高。

好比是

  • "你俩都爱喝可乐?" -> 相似度 +1分
  • "我的天!你俩居然都喜欢那个超级小众的、从没听过的乐队?" -> 相似度 +100分!

通过给小众物品更高的权重,我们就能更好地找到那些真正"灵魂共鸣"的用户。

到这里,我们本次深度探讨的所有内容就都总结完毕了。希望这六份"小白版"文档,能成为您在构建智能推荐系统道路上的一份清晰、易懂的导航图!