如果一个数据流,其中m为数据流的大小,
。我们可以定义每个
元素出现的次数为,其中
为第i个元素出现的次数。这篇博客就是讲下
的估计问题
(Frequency Estimation)。在数据流基本问题--确定频繁元素里面的方法也可以对元素出现次数进行估计。但是这个
方法如果该这种方法处理了两个数据流,无法对处理的结果进行汇总得到两个数据流合并后的结果进行估计。而且该
方法只能针对vanilla model,无法处理元素可能离开的情形。下面介绍的sketch方法可以很好的处理这两个缺点。数据
流的sketch是对输入的一个线性转换。这些方法和Bloom Filter非常像,只不过在Bloom Filter中存储的是0/1,这里存储
是计数。
一、Basic Sketch
1、算法步骤
这个方法是后面Count Sketch的原型,包含了它的大部分想法。算法需要一个计数的数组(代表了Sketch的意思)和
两个哈希函数。哈希函数h将元素哈希到1到k中,k正好是计数数组的大小。哈希函数g的作用就是为了产生无偏估计。
处

本文探讨了数据流中的频率估计问题,介绍了Basic Sketch、Count Sketch和Count-Min Sketch三种方法。Basic Sketch作为Count Sketch的基础,通过两个哈希函数提供无偏估计。Count Sketch利用median trick减少误差,而Count-Min Sketch简化了算法,适用于查找频繁元素、区间求和等任务。通过对误差概率的分析,Count Sketch在元素出现次数差距较大时表现更优。
最低0.47元/天 解锁文章
885





