移动平均精度?

时间:2012-08-02 11:57:19

标签: algorithm language-agnostic approximation tradeoff

我有一些人们对事情进行投票的数据,如果每个投票的人都投票给每个项目的平均值,那就太好了。您可以将投票视为不断传入的数字流。现在我可以准确地计算出平均值,但为了这样做,我必须存储两个数字,要么是总数,要么是当前的平均值,以及到目前为止看到的项数。如果我这样做,我可以使用

AVG[n+1] = (AVG[n]*count + item)/(count+1)

但这很痛苦,因为它迫使我为每个我想要投票的项目存储两个数据。还有另一种我所知道的方法叫做移动平均线或迭代器平均值,它可以处理流数据,但只能给出近似的平均值:

AVG[n+1] = alpha*(item - AVG[n]) + AVG[n]

其中alpha是一些小的固定学习率。这只是试图在新项目的方向上移动新的平均值,并且与新项目和当前估计值之间的差异成比例。这给了我一种方法,只需要存储一个数字(当前平均值),并且当新项目进入时仍然能够更新它,但这只是一个近似值。

我想知道这个方法引入的错误是否有任何已知的界限...是否有一个公式来估计这个估计与真相的距离,以及我应该如何选择一个好的alpha?有关详情,请参阅此post和此question

0 个答案:

没有答案