将每个元素与列表中的其他元素进行比较时的平均值

average value when comparing each element with each other element in a list

我有多个字符串(n 个字符串),我正在计算字符串之间的编辑距离,我将第一个字符串与剩余的 (n-1) 个字符串进行比较,将第二个字符串与 ( n-2) remaining, ..., 比较直到我 运行 out of the strings.

为什么要将平均编辑距离计算为所有字符串之间的所有编辑距离之和除以比较次数的平方。这个平方让我很困惑。

谢谢, 珍妮

如果用笔和纸手写一个小例子,这些事情会变得更容易理解。

如果您有 7 个字符串,名称为 abcdefg,那么最简单的版本就是

  • 比较 abac,...,ag(这是 6)
  • 比较 babc,...,bg(这是 6)
  • . . .
  • 比较 gagb,...,gf(这是 6)

所以你有 7*6 或 n*(n-1) 个值,所以你除以接近 7^2这就是广场的来源。也许您甚至可以将 aa 进行比较,这应该带来 0 的距离并将值增加到 7*7n*n。但我会把它算作平均距离作弊。

您可以将算法的速度提高一倍,只需稍作更改

  • 比较 abac,...,ag(这是 6)
  • 比较 bc,...,bg(这是 5)
  • 比较 cd, ..., bg(这是 4)

  • . . .

  • 比较 fg(这是 1)

那是跟随好的 ol' Gauss 7*6/2,或 n*(n-1)/2

本质上:尝试在纸上做一个简单的例子,然后计算你的距离值。

因为平均值仍然和以前一样,而且非常简单:

sum(values) / count(values)

我假设你在某个地方找到了一个似乎带有平方因子的答案——我将其作为 n^2,其中 n 是字符串的数量(不是不同比较的数量,即 n* (n-1)/2,因为 +flaschenpost 指向 )。如果您准确引用该答案是什么,将更容易为您提供更准确的答案。

根据我对你的问题的理解,它不是,至少它不是通常的样本平均值。然而,它是一个有效的集中趋势估计量,但需要注意的是它是一个有偏估计量。 参见 https://en.wikipedia.org/wiki/Bias_of_an_estimator

让我们定义样本平均值,我将其表示为 X',通过 X' =​​ \sum^m_i X_i/N

如果 N=m,我们得到标准平均值。在您的情况下,这是不同对的数量,即 m=n*(n-1)/2。我们称这个平均值为 Xo。

那么如果N=n*n,就是 X' =​​ (n-1)/(2*n) Xo

Xo 是总体均值 \mu 的无偏估计量。因此,X' 因因子 f=(n-1)/(2*n) 而产生偏差。对于非常大的 n,此偏差趋于 1/2。

就是说,您看到的答案的总和可能不仅仅是不同的对。当然,规范化会随之改变。例如,我们可以在不改变平均值的情况下将该总和扩展到所有对:那么正确的归一化将是 N = n*(n-1);尽管被加数的数量也增加了一倍,但平均值仍将是 Xo。