gpt4 book ai didi

algorithm - 计算加权相似度

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:53 27 4
gpt4 key购买 nike

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

像这样:

        field1  field2  field3  field4
Row 1
Row 2

现在我必须比较这两条记录并计算相似度。我通过推导余弦相似度来计算每个字段的相似度。

所以我最终得到了类似这样的相似之处:(0表示一周相似度,1表示强烈相似度)

field1: 0.12
field2: 0.67
field3: 1.00
field3: 0.93

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

所以如果 field2 的权重高于 field1,那么 field2 的相似度将对平均相似度有显着贡献。

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

最佳答案

简单,

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

例子

  • 在这个例子中,每个字段都可以被认为具有相同的权重 1

    ((0.12 * 1) + (0.67 * 1) + (1.00 * 1) + (0.93 * 1)) / 4 = 0.68
  • 现在如果我们想让 field2 比其他字段多 2 倍

    // Weights are (1 + 2 + 1 + 1) = 5
    ((0.12 * 1) + (0.67 * 2) + (1.00 * 1) + (0.93 * 1)) / 5 = 0.678
  • 如果我们希望字段 3 有 100 倍的权重(字段 2 仍然是 2x)

    // Weights are (1 + 2 + 100 + 1) = 104
    ((0.12 * 1) + (0.67 * 2) + (1.00 * 100) + (0.93 * 1)) / 104 = 0.9845192307692308

公式

((field1 * field1_weight) + (field2 * field2_weight) + ... + (fieldn * fieldn_weight)) / (field1_weight + field2_weight + ... + fieldn_weight) = weighted_average

分数权重

如果您将分数作为权重,则公式的工作原理是一样的。例如,如果您希望第 4 个字段的权重比其他字段高 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

权重是相对的

您不需要一开始就将每个权重都设置为 1,您可以根据需要使用 100 或 1000。

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

进一步阅读

wikipedia: Weighted arithmetic mean

关于algorithm - 计算加权相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16720549/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com