Algorithm 基于属性的相似度计算

Algorithm 基于属性的相似度计算,algorithm,similarity,euclidean-distance,cosine-similarity,Algorithm,Similarity,Euclidean Distance,Cosine Similarity,我的目标是根据两个用户的属性计算他们之间的相似度。例如,让我们考虑一个球员,考虑年龄、薪水和分数作为属性。 我还想按重要性顺序对每个属性设置权重。就我而言,年龄比薪水和分数更重要。例如,假设我们使用欧几里德距离计算相似度 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

我的目标是根据两个用户的属性计算他们之间的相似度。例如,让我们考虑一个球员,考虑年龄、薪水和分数作为属性。 我还想按重要性顺序对每个属性设置权重。就我而言,年龄比薪水和分数更重要。例如,假设我们使用欧几里德距离计算相似度

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)


我的方法正确吗?我还应该考虑其他算法,如余弦相似性来计算相似性吗?

我目前正在从事一个项目,该项目涉及计算不同实体之间的测量值,因此我熟悉您的问题

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

你必须小心,检查你的数据,必要时进行清理。e、 g.年龄为200岁时的坏值将破坏正常化,大多数缩放年龄值将以较低的部分结束(接近于零)

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

关于使用哪种距离度量,这是一个好问题。有很多。e、 g.检查


但根据我的经验,我会选择欧几里得的,尽管你应该尝试一些,并检查它对你的数据的作用

关于什么是正确的?这种方法至少是合理的。您希望使用的其他相似性度量完全取决于您的应用程序。你可能需要测试一些,以找出哪一个效果最好。@NicoSchertler我不确定是否正确添加了权重,而且我想知道是否有其他算法可以更准确地计算两个用户之间的相似度。例如,年龄是我申请的最重要因素。权重对我来说很好。当然,您应该知道属性的范围。如果它们不同,那么您可能需要引入一些规范化。还有很多其他的相似性度量。列出了其中的一些属性(参见数字数据)。@NicoSchertler很好的一点,我肯定会确保属性被规范化。谢谢你,这是一个很好的资源。如果你能把你的评论列为一个答案,我可以接受。这不是一个真正的答案,所以我会把它作为一个评论。如果你完成了研究,你可以自己发布一个答案,描述最适合你的案例的方法。