【问题标题】:How can I equal out a probability distribution in a realtime stream?如何平衡实时流中的概率分布?
【发布时间】:2011-09-06 11:01:35
【问题描述】:

我得到了一个(真正快速的)0 到 1 之间的实时数据点流,需要将它们分类到“桶”中。

假设有一个 0.6 来了,我的桶覆盖了 0.25 的区域,每个。这意味着 0.6 进入第三个桶。但是,当有很多 0.6 左右的数字出现时,它们都将在桶 3 中结束,这很糟糕。

我想改变四个桶覆盖的区域,使每个桶被击中的概率相等。例如,最好让第一个桶覆盖 0-0.5,第二个桶覆盖 0.5-0.6,第三个桶覆盖 0.6-0.65,最后一个桶覆盖 0.65-1。

问题是,我无法存储这些值 - 只能存储哪些存储桶被命中的频率。那么有没有一个有效的更新公式呢?!

非常感谢您!

【问题讨论】:

  • 我认为您需要一种用于等宽直方图的流式算法。这是一份调查报告,可帮助您入门:paul.luon.net/papers/AA-Space-Efficient-Alg.pdf
  • 输入点数有限制吗?存储桶是否会重置或丢弃旧积分?
  • 目标是准确的直方图还是简单的负载平衡?

标签: machine-learning real-time probability


【解决方案1】:

如果您不存储这些值,那么在某个时间点您所拥有的只是

x 和 y 之间有多少个值。

为了在您的箱/桶之间保持相同的概率,这些值非常关键。 让我们从这个实时流开始,假设它最初是从 0.12 0.37 0.62 和 0.87 开始的 每个垃圾箱都有 1 个。

对于值 0.24,0.49,0.74,0.99,每个 bin 将再次得到 1

对于值 0.01,0.26,0.51,0.76,每个 bin 将再次得到 1

您最终会在每个垃圾箱中得到 3 个。现在,如果 0.6 开始进入大约 6 次,则在 9 时产生第 3 个 bin,而其余的为 3。现在说你必须更新你的边界。如果您现在移动 bin 边界,那么每个 bin 的概率将不正确。

您不能根据计数或什至平均值来移动垃圾箱。我的示例值可以按任何顺序出现,因此在不知道所有先前值的情况下,甚至不可能在第一个值之后移动 bin。

想知道其他人对此的看法会很有趣。

【讨论】:

    【解决方案2】:

    我认为您想保留一种桶树。

    这听起来像是Huffman codingArithmetic coding 的变体的工作。

    我知道霍夫曼编码有一个流式变体。我不确定算术。但似乎至少您可以定期定义一个新模型并将旧值复制到新模型中。

    由于您没有旧值,您可能不得不猜测边界而不是计算它们。例如,您可以定义 100 个低于 0.6 的新存储桶,然后再折叠未使用的存储桶。

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多