Frequency Estimation
文章目录
- 前言
- 算法
- 流程
- 精度
- 实现及改进
- 实现
- 改进
前言
大数据统计中的频率估计问题,即求一个元素出现的次数。和Cardinality Estimation场景相似,面临着内存开销大的问题,不适合直接存储原始数据。本篇文章介绍解决这个问题的一个算法,Count-Min Sketch 。
算法
Count-Min Sketch 算法是在论文An Improved Data Stream Summary:
The Count-Min Sketch and its Applications中阐述的,下面介绍的算法流程及精度均参考自该论文,相关证明请参考原文。
流程
算法流程:
- 创建二维数组,count[d, w],每一位初始化为0。
- d个hash函数,h1h_1h1 . . . hdh_dhd : {1 . . . n} → {1 . . . w}。
- 输入元素(iti_tit, ctc_tct),更新二维数组:count[jjj, hjh_jhj (iti_tit)] ← count[jjj, hjh_jhj(iti_tit)] + ctc_tct,此过程如上图所示。
- 查询某个元素出现频率,等于 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)]的最小值。
精度
从上面的算法流程中,可以初略看出,二维数组的d和w越大,hash冲突的概率越低,结果的精度也越高。论文An Improved Data Stream Summary:
The Count-Min Sketch and its Applications也给出了相应的结论和证明,这里我们仅看下结论
- 最小值
如上图(取自论文),我们取数组count[jjj, hjh_jhj(iii)]的最小值估算元素出现频率时,有1 − δ的信心,aˆiaˆ_iaˆi ≤ aia_iai + ε∣∣a∣∣1ε||a||_1ε∣∣a∣∣1。
上面的δ和ε跟二维数组中的d和w相关,如下
- 中位数
论文中还给出了一个和数组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相关推荐
- Locally Differential for Frequency Estimation
Frequency Estimation LDP 参考文献: Wang T, Blocki J, Li N, et al., 2017. Locally Differentially Private ...
- 论文解读2019INFOCOM_Calibrate: Frequency Estimation and Heavy Hitter Identification with LDP
以下是本人对该论文的解读,如有不当,欢迎批评指正 INTRODUCTION 频数估计(frequency estimation)是高级数据分析的基础,有非常广泛的应用.比如每个网页作为一个item,谷 ...
- Frequency Estimation Heavy Hitter under Local Differential Privacy的一些重要组件
Frequency Estimation under Local Differential Privacy 该论文是一个综述类(survey)文章,主要介绍了一个 公共框架--将各种不同的LDP协议放 ...
- Locally Differential Private Frequency Estimation with Consistency: LDP的主流后处理算法
Locally Differential Private Frequency Estimation with Consistency 目录 Locally Differential Private F ...
- Frequency Estimation in Local and Multiparty Differential Privacy
Frequency Estimation in Local and Multiparty Differential Privacy 此为Graham Cormode在ICLR2021上的讲座笔记,由于 ...
- 【机器学习】数据不平衡问题都怎么解?
作者 | Chilia 整理 | NewBeeNLP 本文主要讨论两种不平衡问题. 一是数据的类别本来就不平衡,比如在广告CTR预估中,可能90%的广告都不会被点击,只有一少部分被点击; 二是由于误分 ...
- PU learning学习笔记
一.背景介绍 现实生活许多例子只有正样本和大量未标记样本,这是因为获取负类样本较为困难.负类数据太过多样化且动态变化.比如在推荐系统,用户点击为正样本,却不能因为用户没有点击就认为它是负样本,因为可能 ...
- 从DSSM语义匹配到Google的双塔深度模型召回和广告场景中的双塔模型思考
▼ 相关推荐 ▼ 1.基于DNN的推荐算法介绍 2.传统机器学习和前沿深度学习推荐模型演化关系 3.论文|AGREE-基于注意力机制的群组推荐(附代码) 4.论文|被"玩烂"了的协 ...
- msk 频偏_一种MSK-Type信号的频率同步改进算法
第 49 卷 第 11 期 2 0 1 7 年 11 月 哈 尔 滨 工 业 大 学 学 报 JOURNAL OF HARBIN INSTITUTE OF TECHNOLOGY Vol. 49 No. ...
最新文章
- 细节定成败!汕头网络推广提醒你在做网站内容收录时需注意什么?
- 动态代理-JDK_proxycglib
- PS制作立体效果——圆柱
- Java 8:CompletableFuture的权威指南
- MySQL笔记——多表查询
- 50道Java集合经典面试题
- Hadoop框架:NameNode工作机制详解
- 2018-2019-1 20165227 20165228 20165237 实验五 通讯协议设计
- 认真学习系列:《深入理解计算机系统》读书笔记
- stm32核心板可以点亮灯吗_利用STM32F103C8T6最小系统板点亮流水灯
- 进阶16 网络编程入门
- git报错error: src refspec refs/heads/master does not match any.
- Node.js 下载安装教程
- 基于深度学习的单目2D/3D姿态估计综述(2021)
- 空间梁单元C语言有限元编程,有人会有限元编程吗
- c语言中isupper用法,C 库函数 - isupper()
- Oracle--同义词详解
- 三层架构(网络冗余学习)
- python 回溯法 01背包问题_01背包问题(回溯法)python实现
- Android 获取当前设备SIM运营商