“Count–Min 对非负频率使用无符号桶和逐行最小值,碰撞只会造成单边高估;CountSketch加入随机符号并取中位数,误差围绕真实频率摆动,更适合 turnstile 流和 $\ell…”
形式陈述 ​
CountSketch 属于线性 Sketch:每行对频率向量做带随机符号的桶投影,更新和摘要合并保持线性,坐标估计则在这些线性测量上取作为顺序统计量的中位数。
线性摘要 ​
每行从具有所需独立性与碰撞界的通用哈希族选择桶哈希
第
无偏与方差 ​
展开得
随机符号使交叉噪声期望为零;配合桶碰撞概率,方差受
直觉
符号哈希先把碰撞键随机翻转,使它们的贡献围绕零而不是单向累加;桶哈希再把总尾部能量分摊到多个桶。不同重复行给出彼此独立的噪声样本,中位数忽略少数灾难性碰撞,所以最终保证自然以
例子与边界
正负碰撞例子 ​
turnstile 流中两个其他键可能与目标同桶。一个符号与目标同号、另一个反号时,噪声相互抵消;不同重复行重新抽桶和符号,单行偶然大偏差不会主导中位数。这也是它比 Count–Min 更适合有正负更新与
边界与对照 ​
估计可高可低,不提供单调上界。把行间中位数换成平均会让少数重尾碰撞破坏同样的失败概率;桶哈希和符号哈希需要规定独立性。Count–Min给非负流的一侧
推论与应用
Heavy hitters 恢复 ​
点查询只在给定键时估计。若要从巨大宇宙中找 heavy hitters,需候选生成机制,例如按键位建立分层 CountSketch、递归识别高能桶,再对候选精查。扫描整个宇宙虽正确,却把查询时间变成
误差中
中位数为什么不可省 ​
对固定
符号独立使交叉项期望为零,方差约为
更新可正可负且摘要线性,故适合 turnstile 流。恢复 heavy hitters 时,点查询只是验证工具:还要有候选生成、层级哈希或编码机制找到可能的大坐标;遍历整个宇宙逐项查询会把子线性空间优势变成
参考资料
- Moses Charikar, Kevin Chen, Martin Farach-Colton, Finding Frequent Items in Data Streams, ICALP, 2002.
- Piotr Indyk, Stable Distributions, Pseudorandom Generators, Embeddings, and Data Stream Computation, JACM, 2006.