首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于属性的相似度计算

基于属性的相似度计算
EN

Stack Overflow用户
提问于 2016-11-02 14:53:41
回答 1查看 1.5K关注 0票数 4

我的目标是根据两个用户的属性来计算它们之间的相似度。例如,让我们考虑一个球员,并考虑年龄,工资,和分数作为属性。

另外,我还想按重要性的顺序对每个属性进行加权。在我看来,年龄比薪水和分数更重要。例如,假设我们用欧几里得距离来计算相似性。

代码语言:javascript
复制
Given user 1 who is age 20, salary 50, points scored 100

Given user 2 who is age 24, salary 60, points scored 85

Given user 3 who is age 19, salary 62, points scored 80

要计算用户1和用户2之间的相似性,我可以这样做。

( (20-24)^2 + (60-50)^2 + (85-100)^2 )

现在我们也要加权,所以在欧几里得距离越小,两个物体的相似性就越接近。如前所述,年龄是最重要的,因此我们将按以下方式分配权重

( 0.60*(20-24)^2 + 0.20*(60-50)^2 + 0.20*(85-100)^2 )

我的方法正确吗?另外,我是否应该考虑其他算法,例如余弦相似来计算相似度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-04 15:02:17

我目前正在进行一个项目,该项目涉及计算不同实体之间的度量,因此我熟悉您的问题。

在你的例子中,好的事情是你没有各种各样的混合类型的特性(例如文本或分类等等)。年龄、薪水和分数都是数字,正如评论中已经提到的,你应该做的第一件事就是正常化。这是一个“必须做”,因为如果你不这样做,那么有一个危险,一个特点将占主导地位时,计算距离。

你必须小心,检查你的数据,并在必要时进行清理。例如,当年龄为200岁时,坏值会破坏您的标准化,而大多数缩放的年龄值将在较低的部分(接近于零)结束。

关于权重和加权欧几里德的计算,你是对的。这些权重的和值为1(如在示例0.6+0.2+0.2 =1中所示)。

关于使用何种距离度量,这是一个很好的问题。有一群人。例如检查https://docs.scipy.org/doc/scipy/reference/spatial.distance.html

但是根据我的经验,我会选择,欧几里德,尽管你应该很少尝试,并且检查它是如何工作在你的数据上的。

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

https://stackoverflow.com/questions/40383029

复制
相关文章

相似问题

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