我正在为在线计算半方差(下行部分方差)寻找等价的welford's algorithm。有谁知道一个很好的参考?这样的算法是否存在?
编辑:相对于固定目标采用半方差的情况是微不足道的。问题是计算与平均值相关的半方差
答案 0 :(得分:0)
我相信答案是不存在的,我将尝试概述为何如此的证据。
考虑一个'有害'的在线算法,由两个标准定义:
这比顺序/增量/在线算法的字面定义更严格,它实际上只要求数据可以一次传递一个。但是,考虑到如果1)或2)不是真的那么在处理足够大量的元素之后,运行算法所需的存储器或时间最终将变得不可行。通常,使用在线算法的原因之一是它们可以连续使用而不用担心性能会慢慢恶化。另外,请注意,存在用于计算满足1和1的均值和方差的在线算法。 2我认为这就是我们的目标。
现在提出的问题。在处理过程中,平均值将随着新数据的每一位而变化。这反过来意味着低于平均值的观察结果将发生变化。当发生这种情况时,我们需要根据集合“delta”调整我们的运行半方差,“delta”定义为旧均值下面的元素集和新均值下面的元素集之间的并集中的元素。在存在新数据的情况下,我们必须在将旧半方差调整为新半方差的过程中计算这个增量。
现在让我们考虑一下计算这个集合delta的复杂性。我们需要找到旧均值和新均值之间的所有元素。我们将始终跟踪旧的均值,而新的均值可以在固定的时间内逐步计算,因此它们没有问题。然而,为了计算delta本身,除了要求我们跟踪集合中的所有先前元素之外,没有办法做到这一点。这立即打破了在线算法的内存条件。其次,即使我们将前面的元素保持在我们的集合中,我们可以实现的最佳速度来找到旧均值和新均值之间的那些是O(log(元素数量)),这比固定更差。所以最终,有了足够的元素,在线算法不仅需要比我们更多的内存,而且还需要更多的时间。
答案 1 :(得分:0)
http://www3.sympatico.ca/jean-v.cote/computation_of_semi-variance.pdf P.S .:这不是增量计算。我有另一个想法。我会告诉你的。
答案 2 :(得分:0)