“估计可高可低,不提供单调上界。取行均值仍可无偏,但少数极端碰撞会拉动结果,不能照搬中位数的指数失败界。Count–Min在当前频率非负等条件下给一侧 $L 1$ 误差,本页给双侧 $L 2$…”
形式陈述
Count–Min 是线性 Sketch的一个实例:计数表可写成频率向量经固定随机矩阵的线性映射,而查询时的逐行最小值是施加在摘要之上的非线性解码器。
结构与更新
对从零开始的频率更新,取
点查询返回
一侧误差证明
固定与哈希随机性独立的频率向量
资源口径
在哈希求值与计数器算术均按常数时间计的模型下,一次更新处理
直觉
每一行都把目标频率与碰撞噪声加在同一个桶里;在非负流中噪声只能向上推高估计。多行独立哈希后取最小值,相当于等待至少一行避开严重碰撞,因此保留“不低估”的方向并把同时坏掉的概率指数压低。
例子与边界
Count–Min 对非负频率使用无符号桶和逐行最小值,碰撞只会造成单边高估;CountSketch加入随机符号并取中位数,误差围绕真实频率摆动,更适合 turnstile 流和
频率查询例子
统计 API 路径请求量时,每次请求把对应键加一。冷门路径可能因热门路径碰撞被高估,但多行中只要一行避开主要碰撞,最小值就恢复较小误差;结构不会把真实请求数估得更低。
边界与保证类型
误差是全局
推论与应用
合并与范围聚合
使用相同
若键有顺序,不能直接从单个 CMS 回答任意范围和,因为哈希打散顺序;可在 dyadic interval 层级各维护 sketch,把范围分解成
从固定查询到查询集合
上述概率界先固定一个键
计数器还要按流总质量选择位宽。若使用饱和整数,热门桶到上限后便不再是频率向量的线性映射;若发生无符号回绕,min 甚至可能严重低估。因此要选用足够宽的计数器,或明确报告溢出策略带来的额外误差。
CMS 只提供候选键的点估计,不会自行列出 heavy hitters。若宇宙很大,仍需 Misra–Gries、分层编码或外部候选生成器;对全宇宙逐键查询虽正确,却要
参考资料
- Graham Cormode, S. Muthukrishnan, An Improved Data Stream Summary: The Count-Min Sketch and Its Applications, J. Algorithms, 2005,§2 区分非负与一般 turnstile,§4.1 给出点查询保证。
- Graham Cormode, Ke Yi, Small Summaries for Big Data, Cambridge University Press, 2020.