计算加权相似度

Kri*_*son 2 algorithm

我有2个数据行,每个行有4个字段

这样的事情:

        field1  field2  field3  field4
Row 1
Row 2
Run Code Online (Sandbox Code Playgroud)

现在我必须比较这两个记录并计算相似性.我通过导出余弦相似度来计算每个场的相似性.

所以我最终得到类似的相似之处:(0代表一周的相似性,1代表强烈的相似性)

field1: 0.12
field2: 0.67
field3: 1.00
field3: 0.93
Run Code Online (Sandbox Code Playgroud)

我现在可以通过对值进行平均来找到总相似度,但问题是:
我想在字段中添加权重

因此,如果field2的权重高于field1,那么field2的相似性将对平均相似性有显着贡献.

你能建议一个公式或算法来满足这样的要求吗?

谢谢,Vidhu

Wil*_*ill 10

简单,

  1. 将4个值中的每一个乘以它们的权重
  2. 将结果一起添加
  3. 除以权重之和

例子

((field1 * field1_weight) + (field2 * field2_weight) + ... + (fieldn * fieldn_weight)) / (field1_weight + field2_weight + ... + fieldn_weight) = weighted_average
Run Code Online (Sandbox Code Playgroud)

分数重量

如果给出分数作为权重,则公式的工作原理相同.例如,如果您希望第四个字段的权重加权,150%那么您可以为其他字段分配权重1.5

// Weights are (1 + 1 + 1 + 1.5) = 4.5
((0.12 * 1) + (0.67 * 1) + (1.00 * 1) + (0.93 * 1.5)) / 4.5 = 0.7077777777777778
Run Code Online (Sandbox Code Playgroud)

重量是相对的

您不需要从设置为1的每个权重开始,如果您愿意,可以使用100或1000.

例如,如果所有4个字段的权重均为100,则如果它们都是1,则最终平均值将相同.

进一步阅读

维基百科:加权算术平均值