数据挖掘:Bloom filter
文章目录
- 前言
- 一、Bloom filter的重要性质
- 二、Bloom filter的计算
- 2.假阳性计算
- 总结
前言
Bloom Filters是一种空间效率很高的概率数据结构。 由Burton Howard Bloom于1970年提出的,用于测试一个元素是否是集合的成员。
一、Bloom filter的重要性质
1,假阳性的匹配是可能的,但假阴性匹配是不可能的。即:一个查询返回的结果是“可能在集合中”或“绝对不在集合中”。
2,添加的项目越多,假阳性的概率越大
二、Bloom filter的计算
Bloom filter包括:
– 一个空的Bloom filter是一个由n个比特位组成的比特数组,全部设置为0.
– k个哈希函数h1,h2,…,hk的集合。 K个不同的哈希函数将一个元素哈希到K个位置
– 一组m大小的键值称为S
处理:–K个不同的哈希函数将一个元素哈希到K的位置,如果相应的位置是0,则改成1.
测试:–通过检查是否所有h1(key),h2(key),…,hk(key)= 1,都等于1则可能在集合中。 否则不在S中。
没看明白的附上一个视频链接
2.假阳性计算
列举:在垃圾邮件过滤器中,我们设置n = 8GB,| S | = 1GB和k = 1
假阳率
当我们增加一个哈希函数
假阳率
总结
如果我们想减少假阳率,方法是增大n bits
另外,哈希函数的最佳数量为k = m / n ln 2
Bloom filter的好处是非常快! (查询的成本本质上是计算哈希函数的成本)另外,如果元素不在S→array [h(key)] = 0,那么肯定是垃圾邮件(没有假阴性)。
坏处是:
–无法从过滤器中删除元素
–数组值的1/8左右将为1
–存在假阳性,假设array [h(key)] = 1。
●可以在S中
●不能在S中,只是偶然哈希到第1位并通过(允许误报)。 不在S中的电子邮件地址的1/8将通过…
●可以通过一系列过滤器来改善这一比例!
数据挖掘:Bloom filter相关推荐
- C++拾取——Linux下实测布隆过滤器(Bloom filter)和unordered_multiset查询效率
布隆过滤器是一种判定元素是否存在于集合中的方法.其基本原理是使用哈希方法将数据映射到一个很长的向量上.在维基百科上,它被称为"空间效率和查询时间都远远超过一般的算法"的方法.由于它 ...
- Bloom Filter:海量数据的HashSet
Bloom Filter一般用于数据的去重计算,近似于HashSet的功能:但是不同于Bitmap(用于精确计算),其为一种估算的数据结构,存在误判(false positive)的情况. 1. 基本 ...
- mysql布隆过滤器源码_布隆过滤器(Bloom Filter)的原理和实现
什么情况下需要布隆过滤器? 先来看几个比较常见的例子 字处理软件中,需要检查一个英语单词是否拼写正确 在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上 在网络爬虫里,一个网址是否被访问过 yahoo, ...
- 布隆过滤器+布隆过滤器(Bloom Filter)详解
布隆过滤器+布隆过滤器(Bloom Filter)详解 程序 = 数据结构 + 算法 -- 图灵奖得主,计算机科学家N.Wirth(沃斯) A Bloom filter is a space effi ...
- 探索C#之布隆过滤器(Bloom filter)
阅读目录: 背景介绍 算法原理 误判率 BF改进 总结 背景介绍 Bloom filter(后面简称BF)是Bloom在1970年提出的二进制向量数据结构.通俗来说就是在大数据集合下高效判断某个成员是 ...
- 大数据量下的集合过滤—Bloom Filter
算法背景 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定.链表.树.散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘 ...
- Bloom Filter 大规模数据处理利器
2019独角兽企业重金招聘Python工程师标准>>> 最近工作中涉及到bloom Filter,真是一把科研利器呀,大数据.网络.云等等都可以用到! Bloom Filter是由B ...
- 布隆过滤器(Bloom Filter)详解——基于多hash的概率查找思想
转自:http://www.cnblogs.com/haippy/archive/2012/07/13/2590351.html 布隆过滤器[1](Bloom Filter)是由布隆(Burton ...
- 海量数据处理之Bloom Filter详解
前言 本博客内曾已经整理过十道海量数据处理面试题与十个方法大总结.接下来,本博客内会重点分析那些海量数据处理的方法,并重写十道海量数据处理的面试题.如果有任何问题,欢迎不吝指正.谢谢. 一.什么是Bl ...
- 布隆过滤器(Bloom Filter)原理及优缺点剖析
直观的说,bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中. 和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储 ...
最新文章
- 几条跟堆栈扯上关系的汇编指令
- Javaweb 项目内所有页面都是404问题
- Unity Shader 序列帧动画
- 传统的Web应用程序和RESTful API
- 漫画:如何给初学者讲“为什么计算机只认识 0 和 1”?
- 概率、随机数、随机数生成函数(面试题)
- C#winfrom播放音乐
- ubuntu16.04使用腾达U6网卡驱动+建立无线热点(手机可链接)
- 神经网络预测模型基本原理与编程实现
- 敏捷管理-PDCA循环(戴明环)
- Loser,除了努力你还会什么?
- 臀部肌群锻炼方法大全
- 《3D ISP核心技术算法》系列(1)——ToF测量中的多径现象与消除方法
- java jxl导出excel小结
- Linux Centos装机全过程总结,小白入(持续更新中...)
- 优秀!华为诺亚方舟实验室联合中山大学发布新一代半/自监督的2D基准数据集SODA10M
- 推荐 : 5个机器学习开源项目来挑战你的数据科学技能!(附链接)
- 帆软报表查询结果为空时不显示报表内容
- 面试官常问的几个问题
- SSD中没有efi分区的解决办法即固态硬盘不能设置uefi引导的解决办法