基数估计之HyperLogLog算法
参考资料:
- 基数估计之HyperLogLog算法
问题一:抛硬币实验:连续抛硬币,直到出现正面停止。得到抛的次数K。这样的实验重复n次,则n=2^kmax;这个也很好理解。如果kmax是1000,即在某次实验中出现了连续1000次的反面,那我有理由相信,你肯定进行了很多很多很多次实验才得到这个结果的。
这个例子延申到基数统计上:每个元素经过哈希之后,实际上去重了(同一个元素的hash结果是相同的,不同元素的hash结果可能相同)得到一个01字符串。这个字符串的前缀0的个数,表示一次抛硬币实验中的k。这个k的最大值反应了抛硬币实验的次数,也就是整个数据流的基数。
- Linear Counting
- Flajolet-Martin
- LogLog Counting(LLC)算法
- HyperLogLog(HLL)算法

浙公网安备 33010602011771号