“估计可高可低,不提供单调上界。把行间中位数换成平均会让少数重尾碰撞破坏同样的失败概率;桶哈希和符号哈希需要规定独立性。Count–Min给非负流的一侧 $L 1$ 误差,本页给双侧 $L 2…”
结构与更新 ​
取宽度
点查询返回
一侧误差证明 ​
在 insertion-only 非负流中,每桶为
频率查询例子 ​
统计 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.
- Graham Cormode, Ke Yi, Small Summaries for Big Data, Cambridge University Press, 2020.