我使用这些增量/递归均值和中值估计器,它们都使用常量存储:
mean += eta * (sample - mean)
median += eta * sgn(sample - median)
where eta是一个小的学习率参数(例如 0.001),并且sgn() 是返回 {-1, 0, 1} 之一的符号函数。 (使用常数eta如果数据不稳定并且您想要跟踪随时间的变化;否则,对于固定源,您可以使用类似的东西eta=1/n 对于均值估计器,其中 n 是迄今为止看到的样本数...不幸的是,这似乎不适用于中值估计器。)
这种类型的增量均值估计器似乎到处都在使用,例如在无监督的神经网络学习规则中,但中值版本似乎不太常见,尽管它有好处(对异常值的鲁棒性)。在许多应用中,中值版本似乎可以用作均值估计器的替代品。
我很想看到类似形式的增量模式估计器......
更新 (2011-09-19)
我刚刚修改了增量中值估计器来估计任意分位数。一般来说,一个分位数函数告诉您将数据分为两个分数的值:p 和 1-p。以下逐步估计该值:
quantile += eta * (sgn(sample - quantile) + 2.0 * p - 1.0)
p 值应在 [0,1] 范围内。这本质上改变了sgn() 函数的对称输出 {-1,0,1} 偏向一侧,将数据样本划分为两个大小不等的箱(数据的分数 p 和 1-p 分别小于/大于分位数估计值) )。请注意,对于 p=0.5,这会减少到中值估计量。
更新 (2021-11-19)
有关此处描述的中值估计量的更多详细信息,我想重点介绍以下评论中链接的这篇论文:Bylander & Rosen,1997,用于跟踪中位数的类似感知器的在线算法。这里有一个后记版本来自作者的网站。