我爱上了概率数据结构。对于我当前的问题,似乎最小计数结构几乎是正确的选择。我想使用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。
希望有道理!?
答案 0 :(得分:1)
如果您知道条目数和不同条目数,则应该能够计算平均计数:
averageCount = totalNumberOfEntries / numberOfDistinctEntries
对吗?为了计算不同条目的数量,您可以使用HyperLogLog。您已经在问题中添加了hyperloglog标记,所以也许您已经知道这一点?