Skip to content

CountSketch

CountSketch · Count Sketch

以桶哈希和随机符号抵消碰撞,再跨行取中位数估计频率与 L2 heavy hitters。

条目类型
模型

形式陈述

CountSketch 属于线性 Sketch:每行对频率向量做带随机符号的桶投影,更新和摘要合并保持线性,坐标估计则在这些线性测量上取作为顺序统计量的中位数。

线性摘要

每行从具有所需独立性与碰撞界的通用哈希族选择桶哈希 hj:[U][w],并独立选择符号哈希 sj:[U]{1,+1}。更新 (i,Δ)

C[j,hj(i)]+=sj(i)Δ.

j 行对 i 的估计为 Xj=sj(i)C[j,hj(i)],最终取各行中位数。

无偏与方差

展开得

Xj=fi+ki:hj(k)=hj(i)sj(i)sj(k)fk.

随机符号使交叉噪声期望为零;配合桶碰撞概率,方差受 fi22/w 控制。选择 w=Θ(1/ε2) 可让单行以常数概率误差不超过 O(εfi2),再用 d=Θ(log(1/δ)) 行的中位数提升置信度。

直觉

符号哈希先把碰撞键随机翻转,使它们的贡献围绕零而不是单向累加;桶哈希再把总尾部能量分摊到多个桶。不同重复行给出彼此独立的噪声样本,中位数忽略少数灾难性碰撞,所以最终保证自然以 L2 尾部能量而非全局 L1 质量计量。

例子与边界

正负碰撞例子

turnstile 流中两个其他键可能与目标同桶。一个符号与目标同号、另一个反号时,噪声相互抵消;不同重复行重新抽桶和符号,单行偶然大偏差不会主导中位数。这也是它比 Count–Min 更适合有正负更新与 L2 heavy hitters 的原因。

边界与对照

估计可高可低,不提供单调上界。把行间中位数换成平均会让少数重尾碰撞破坏同样的失败概率;桶哈希和符号哈希需要规定独立性。Count–Min给非负流的一侧 L1 误差,本页给双侧 L2 尾部误差,不能只按名字互换。

推论与应用

Heavy hitters 恢复

点查询只在给定键时估计。若要从巨大宇宙中找 heavy hitters,需候选生成机制,例如按键位建立分层 CountSketch、递归识别高能桶,再对候选精查。扫描整个宇宙虽正确,却把查询时间变成 O(U),违背流式目标。

误差中 fi2 可进一步用去掉若干最大频率后的 tail norm 表达,支撑 sparse recovery。具体桶数、行数和候选阈值要随 theorem 版本一致,不能把点查询式直接称完整 heavy-hitter 算法。

中位数为什么不可省

对固定 i,一行经符号还原后的估计为

fi+xi:h(x)=h(i)s(i)s(x)fx.

符号独立使交叉项期望为零,方差约为 fi22/w。单行有常数概率落在 O(fi2/w) 内;多行取中位数把失败概率指数压低。取平均虽仍无偏,却会让一行极端碰撞直接拉动结果,不能沿用同一尾界。

更新可正可负且摘要线性,故适合 turnstile 流。恢复 heavy hitters 时,点查询只是验证工具:还要有候选生成、层级哈希或编码机制找到可能的大坐标;遍历整个宇宙逐项查询会把子线性空间优势变成 Θ(U) 时间。

参考资料
  • 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.
关系图谱15 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。

类型化关系