检索“最小计数”数据结构中的平均计数

时间:2018-09-21 22:07:44

标签: data-structures bloom-filter hyperloglog

我爱上了概率数据结构。对于我当前的问题,似乎最小计数结构几乎是正确的选择。我想使用count-min-sketch存储每个ID的事件。

假设我确实有以下

Map<String, Int> {
   [ID1, 10],
   [ID2, 12],
   [ID2, 15]
}

如果使用count-min-sketch,则可以按ID查询数据结构并检索〜counts。

问题

实际上,我对所有ID的平均出现次数感兴趣,在上面的示例中为:12,33。如果我使用的是最小计数,那么似乎需要存储ID集合,然后遍历该集合并查询每个ID的最小计数并计算平均值。有没有不存储所有ID的改进方法吗?理想情况下,我只想立即检索平均值而不记住所有ID。

希望有道理!?

1 个答案:

答案 0 :(得分:1)

如果您知道条目数和不同条目数,则应该能够计算平均计数:

averageCount = totalNumberOfEntries / numberOfDistinctEntries

对吗?为了计算不同条目的数量,您可以使用HyperLogLog。您已经在问题中添加了hyperloglog标记,所以也许您已经知道这一点?