平均减重异常值

机器算法验证 异常值 强大的 加权平均数 增删改查 修剪平均
2022-03-23 02:34:27

我有一堆点并且想计算一种不强调异常值的加权平均值。我的第一个想法是将每个点加权然而,问题是这已经包括了平均值我可以从 weights = 1 开始重复执行此操作(计算平均值、计算新权重、重复),并在加权平均值不再发生太大变化时停止。xi1/(xiμ)2μ

另一个问题是,如果其中一个点太接近均值,就会出现分歧。解决此问题的一种方法是选择一个单调递增的函数,对于 0 为 = 0,对于为 = 1 ,例如 tanh。所以我的体重是我尝试了这个,它似乎收敛了,并且忽略了异常值。但这似乎很复杂,我认为这可能已经是一个已解决的问题。xtanh(1/(xiμ)2)

那么:计算这种不强调离群值的加权平均值的规范方法是什么?有没有不迭代的技术?或者如果我必须进行迭代,是否有一种技术可以保证收敛(对于行为良好的输入数据)?

我看到有些人在类似情况下建议截断均值。这对我不起作用,因为我只有几个数据点(每组点大约 10 个)。此外,我不一定知道比例或典型标准偏差。有时 10 的偏差是正常的,有时是 0.1。解决方案应该是合理的规模无关的。

如果重要的话,我目前有二维数据点,并使用与当前中点的欧几里德距离作为上述计算中的度量。

1个回答

将具有答案价值的评论四舍五入,这里可以使用几种方法。

1. 修剪平均值(@Bernhard)

计算位于第 5 和第 95 个百分位之间的数据的平均值,有效地丢弃极值。https://en.wikipedia.org/wiki/Truncated_mean

2. Winsorized 平均值(@kjetil b halvorsen)

将底部 5% 设置为第 5 个百分位,将顶部 5% 设置为第 95 个百分位,然后计算所有这些的平均值。https://en.wikipedia.org/wiki/Winsorizing

3. M-估计器(@Michael M)

很抱歉,我无法提供简明扼要的解释。最好看看 https://en.wikipedia.org/wiki/M-estimator

4. EM算法(@Tim)

https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm

5. 中位数(@Tim)

中位数受异常值的影响较小,并且比均值更稳健。考虑一组数字,平均值为 3,中位数为 3。如果我将 5 更改为 50,则平均值变为 12,但中位数保持为 3。1,2,3,4,5

https://en.wikipedia.org/wiki/Median