文章目录

  • 前言
  • 算法
    • 流程
    • 精度
  • 实现及改进
    • 实现
    • 改进

前言

大数据统计中的频率估计问题,即求一个元素出现的次数。和Cardinality Estimation场景相似,面临着内存开销大的问题,不适合直接存储原始数据。本篇文章介绍解决这个问题的一个算法,Count-Min Sketch 。

算法

Count-Min Sketch 算法是在论文An Improved Data Stream Summary:
The Count-Min Sketch and its Applications中阐述的,下面介绍的算法流程精度均参考自该论文,相关证明请参考原文。

流程


算法流程:

  1. 创建二维数组,count[d, w],每一位初始化为0。
  2. d个hash函数,h1h_1h1​ . . . hdh_dhd​ : {1 . . . n} → {1 . . . w}。
  3. 输入元素(iti_tit​, ctc_tct​),更新二维数组:count[jjj, hjh_jhj​ (iti_tit​)] ← count[jjj, hjh_jhj​(iti_tit​)] + ctc_tct​,此过程如上图所示。
  4. 查询某个元素出现频率,等于 minjjj count[jjj, hjh_jhj​(iii)]。

简单理解,Count-Min Sketch算法使用d个长度为w的一维数组,对于每个输入元素(iti_tit​, ctc_tct​),分别用d个hash函数处理,每个hash函数的处理结果进入对应的一维数组w的位置,如上图所示。由于hash函数的使用,不同元素会产生冲突,导致统计增大,为了减少这种误差,取二维数组count[jjj, hjh_jhj​(iii)]的最小值。

精度

从上面的算法流程中,可以初略看出,二维数组的dw越大,hash冲突的概率越低,结果的精度也越高。论文An Improved Data Stream Summary:
The Count-Min Sketch and its Applications也给出了相应的结论和证明,这里我们仅看下结论

  1. 最小值


    如上图(取自论文),我们取数组count[jjj, hjh_jhj​(iii)]的最小值估算元素出现频率时,有1 − δ的信心,aˆiaˆ_iaˆi​ ≤ aia_iai​ + ε∣∣a∣∣1ε||a||_1ε∣∣a∣∣1​。
    上面的δε跟二维数组中的dw相关,如下
  2. 中位数
    论文中还给出了一个和数组count[jjj, hjh_jhj​(iii)]中位数相关的结论,如下

实现及改进

实现

Count-Min Sketch的实现可以参考stream-lib CountMinSketch.java和stream-lib ConservativeAddSketch.java,ConservativeAddSketch做了点优化,更新时不只是count[jjj, hjh_jhj​(iti_tit​)] + ctc_tct​,不详解,查看代码。

改进

Count-Min Sketch算法的改进版本非常多,可以参考这篇Sketch调研。

参考
1.An Improved Data Stream Summary: The Count-Min Sketch and its Applications
2.stream-lib CountMinSketch.java
3.stream-lib ConservativeAddSketch.java
4.Sketch调研

Frequency Estimation相关推荐

  1. Locally Differential for Frequency Estimation

    Frequency Estimation LDP 参考文献: Wang T, Blocki J, Li N, et al., 2017. Locally Differentially Private ...

  2. 论文解读2019INFOCOM_Calibrate: Frequency Estimation and Heavy Hitter Identification with LDP

    以下是本人对该论文的解读,如有不当,欢迎批评指正 INTRODUCTION 频数估计(frequency estimation)是高级数据分析的基础,有非常广泛的应用.比如每个网页作为一个item,谷 ...

  3. Frequency Estimation Heavy Hitter under Local Differential Privacy的一些重要组件

    Frequency Estimation under Local Differential Privacy 该论文是一个综述类(survey)文章,主要介绍了一个 公共框架--将各种不同的LDP协议放 ...

  4. Locally Differential Private Frequency Estimation with Consistency: LDP的主流后处理算法

    Locally Differential Private Frequency Estimation with Consistency 目录 Locally Differential Private F ...

  5. Frequency Estimation in Local and Multiparty Differential Privacy

    Frequency Estimation in Local and Multiparty Differential Privacy 此为Graham Cormode在ICLR2021上的讲座笔记,由于 ...

  6. 【机器学习】数据不平衡问题都怎么解?

    作者 | Chilia 整理 | NewBeeNLP 本文主要讨论两种不平衡问题. 一是数据的类别本来就不平衡,比如在广告CTR预估中,可能90%的广告都不会被点击,只有一少部分被点击; 二是由于误分 ...

  7. PU learning学习笔记

    一.背景介绍 现实生活许多例子只有正样本和大量未标记样本,这是因为获取负类样本较为困难.负类数据太过多样化且动态变化.比如在推荐系统,用户点击为正样本,却不能因为用户没有点击就认为它是负样本,因为可能 ...

  8. 从DSSM语义匹配到Google的双塔深度模型召回和广告场景中的双塔模型思考

    ▼ 相关推荐 ▼ 1.基于DNN的推荐算法介绍 2.传统机器学习和前沿深度学习推荐模型演化关系 3.论文|AGREE-基于注意力机制的群组推荐(附代码) 4.论文|被"玩烂"了的协 ...

  9. msk 频偏_一种MSK-Type信号的频率同步改进算法

    第 49 卷 第 11 期 2 0 1 7 年 11 月 哈 尔 滨 工 业 大 学 学 报 JOURNAL OF HARBIN INSTITUTE OF TECHNOLOGY Vol. 49 No. ...

最新文章

  1. 细节定成败!汕头网络推广提醒你在做网站内容收录时需注意什么?
  2. 动态代理-JDK_proxycglib
  3. PS制作立体效果——圆柱
  4. Java 8:CompletableFuture的权威指南
  5. MySQL笔记——多表查询
  6. 50道Java集合经典面试题
  7. Hadoop框架:NameNode工作机制详解
  8. 2018-2019-1 20165227 20165228 20165237 实验五 通讯协议设计
  9. 认真学习系列:《深入理解计算机系统》读书笔记
  10. stm32核心板可以点亮灯吗_利用STM32F103C8T6最小系统板点亮流水灯
  11. 进阶16 网络编程入门
  12. git报错error: src refspec refs/heads/master does not match any.
  13. Node.js 下载安装教程
  14. 基于深度学习的单目2D/3D姿态估计综述(2021)
  15. 空间梁单元C语言有限元编程,有人会有限元编程吗
  16. c语言中isupper用法,C 库函数 - isupper()
  17. Oracle--同义词详解
  18. 三层架构(网络冗余学习)
  19. python 回溯法 01背包问题_01背包问题(回溯法)python实现
  20. Android 获取当前设备SIM运营商

热门文章

  1. 华为CCA汽车域控制器
  2. 计算机中容量单位B、KB、MB、GB和TB的关系
  3. 大数据入门概念及应用场景
  4. CAD显示顺序(com接口)
  5. 创品牌强农精品培育消费引领 国稻种芯百团计划行动发布
  6. AR互动大屏项目实战
  7. 微信故障,算不算是小事?
  8. 仿网易云PC端项目-vue
  9. vmvare打开虚拟机时报错:vmx文件已损坏
  10. HTML5期末大作业:游戏网页网站设计——CCG-游戏网页介绍(6页)高质量 HTML+CSS+JavaScript