首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >评级建议的余弦相似性?为什么要用它?

评级建议的余弦相似性?为什么要用它?
EN

Data Science用户
提问于 2014-10-09 01:41:11
回答 2查看 8.7K关注 0票数 7

比方说,我有一个用户数据库,他们对不同产品的评分范围为1-5。我们的推荐引擎根据其他高度相似的用户的喜好向用户推荐产品。我寻找相似用户的第一种方法是使用余弦相似度,并将用户评分作为向量组件来处理。这种方法的主要问题是它只是测量矢量角度,而不考虑等级尺度或大小。

我的问题是:

仅仅用两个向量的向量分量之间的百分比差作为相似性的度量有什么缺点吗?如果我使用这个方法,而不是余弦相似或欧几里得距离,我会遇到什么缺点?

例如,

,为什么不直接这样做:

代码语言:javascript
复制
n = 5 stars
a = (1,4,4)
b = (2,3,4)

similarity(a,b) = 1 - ( (|1-2|/5) + (|4-3|/5) + (|4-4|/5) ) / 3 = .86667

而不是余弦相似:

代码语言:javascript
复制
a = (1,4,4)
b = (2,3,4)

CosSimilarity(a,b) = 
(1*2)+(4*3)+(4*4) / sqrt( (1^2)+(4^2)+(4^2) ) * sqrt( (2^2)+(3^2)+(4^2) ) = .9697
EN

回答 2

Data Science用户

回答已采纳

发布于 2014-10-09 02:24:07

等级偏差和规模很容易通过标准化来解释。在向量空间共嵌入中使用欧几里德相似度量的目的是将推荐问题简化为寻找最接近的邻域问题,这是一种既精确又近似的有效方法。在现实生活中,您不想做的是比较每一项/用户对,并根据一些昂贵的度量对它们进行排序。那只是没有规模。

其中一个诀窍是使用近似方法将羊群筛选成可管理的试探性推荐,然后在此基础上运行昂贵的排名。

编辑: Microsoft正在RecSys上发表一篇关于这个主题的论文:内积空间欧氏变换加速Xbox推荐系统

票数 5
EN

Data Science用户

发布于 2014-10-09 01:57:41

对于评级,我认为您需要使用斯皮尔曼秩相关作为您的相似性度量。

在比较文档时经常使用余弦相似度,这可能不适合于秩变量。欧氏距离对于较低维数是很好的,但是秩变量的比较通常需要Spearman。

这里有一个关于斯皮尔曼的越值化问题(vs皮尔森),它可能为您提供更多的光线。

票数 5
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/1229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档