使用固定数量的内存计算百分位数

时间:2013-10-26 00:52:39

标签: algorithm resampling percentile streaming-algorithm

我有一个以一定速率到达的int值流。每隔5分钟,我想从数值中计算一些百分位数,然后重新开始。

问题:我不想浪费太多内存,所以我想只为这些值保留几KB。如果我的缓冲区在5分钟内没有填满,我可以完美地计算百分位数。但是,如果缓冲区填充了,我想开始删除一些值(可能使用reservoir sampling和随机驱逐,如此处所示 - Percentiles of Live Data Capture)。不幸的是,我无法找到一个在两种情况下都能正常运行的解决方案 - 如果缓冲区未满,我不想逐出或忽略值,一旦它变满并且我开始驱逐,我总是会引入偏见。

1 个答案:

答案 0 :(得分:0)

好吧我想我想出来了 - 我可以使用Algorithm R统一选择传入元素的固定大小的子集。然后我可以从这个子集计算百分位数。