文章目录

  • 前言
  • 一、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相关推荐

  1. C++拾取——Linux下实测布隆过滤器(Bloom filter)和unordered_multiset查询效率

    布隆过滤器是一种判定元素是否存在于集合中的方法.其基本原理是使用哈希方法将数据映射到一个很长的向量上.在维基百科上,它被称为"空间效率和查询时间都远远超过一般的算法"的方法.由于它 ...

  2. Bloom Filter:海量数据的HashSet

    Bloom Filter一般用于数据的去重计算,近似于HashSet的功能:但是不同于Bitmap(用于精确计算),其为一种估算的数据结构,存在误判(false positive)的情况. 1. 基本 ...

  3. mysql布隆过滤器源码_布隆过滤器(Bloom Filter)的原理和实现

    什么情况下需要布隆过滤器? 先来看几个比较常见的例子 字处理软件中,需要检查一个英语单词是否拼写正确 在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上 在网络爬虫里,一个网址是否被访问过 yahoo, ...

  4. 布隆过滤器+布隆过滤器(Bloom Filter)详解

    布隆过滤器+布隆过滤器(Bloom Filter)详解 程序 = 数据结构 + 算法 -- 图灵奖得主,计算机科学家N.Wirth(沃斯) A Bloom filter is a space effi ...

  5. 探索C#之布隆过滤器(Bloom filter)

    阅读目录: 背景介绍 算法原理 误判率 BF改进 总结 背景介绍 Bloom filter(后面简称BF)是Bloom在1970年提出的二进制向量数据结构.通俗来说就是在大数据集合下高效判断某个成员是 ...

  6. 大数据量下的集合过滤—Bloom Filter

    算法背景 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定.链表.树.散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘 ...

  7. Bloom Filter 大规模数据处理利器

    2019独角兽企业重金招聘Python工程师标准>>> 最近工作中涉及到bloom Filter,真是一把科研利器呀,大数据.网络.云等等都可以用到! Bloom Filter是由B ...

  8. 布隆过滤器(Bloom Filter)详解——基于多hash的概率查找思想

    转自:http://www.cnblogs.com/haippy/archive/2012/07/13/2590351.html   布隆过滤器[1](Bloom Filter)是由布隆(Burton ...

  9. 海量数据处理之Bloom Filter详解

    前言 本博客内曾已经整理过十道海量数据处理面试题与十个方法大总结.接下来,本博客内会重点分析那些海量数据处理的方法,并重写十道海量数据处理的面试题.如果有任何问题,欢迎不吝指正.谢谢. 一.什么是Bl ...

  10. 布隆过滤器(Bloom Filter)原理及优缺点剖析

    直观的说,bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中. 和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储 ...

最新文章

  1. 几条跟堆栈扯上关系的汇编指令
  2. Javaweb 项目内所有页面都是404问题
  3. Unity Shader 序列帧动画
  4. 传统的Web应用程序和RESTful API
  5. 漫画:如何给初学者讲“为什么计算机只认识 0 和 1”?
  6. 概率、随机数、随机数生成函数(面试题)
  7. C#winfrom播放音乐
  8. ubuntu16.04使用腾达U6网卡驱动+建立无线热点(手机可链接)
  9. 神经网络预测模型基本原理与编程实现
  10. 敏捷管理-PDCA循环(戴明环)
  11. Loser,除了努力你还会什么?
  12. 臀部肌群锻炼方法大全
  13. 《3D ISP核心技术算法》系列(1)——ToF测量中的多径现象与消除方法
  14. java jxl导出excel小结
  15. Linux Centos装机全过程总结,小白入(持续更新中...)
  16. 优秀!华为诺亚方舟实验室联合中山大学发布新一代半/自监督的2D基准数据集SODA10M
  17. 推荐 : 5个机器学习开源项目来挑战你的数据科学技能!(附链接)
  18. 帆软报表查询结果为空时不显示报表内容
  19. 面试官常问的几个问题
  20. SSD中没有efi分区的解决办法即固态硬盘不能设置uefi引导的解决办法

热门文章

  1. Windows下一个MySQL有些错误的解决方法
  2. CentOS 6.4 php环境配置以及安装wordpress
  3. 效果实现JS实现飞雪飘飘的效果
  4. SystemCenter2012SP1实践(2)部署证书服务器
  5. Nginx+tomcat整合
  6. linux下RRDTool安装方法
  7. 如何创建git账户的chroot
  8. 使用Intellij Idea生成可执行文件jar,转为exe文件步骤
  9. CF1047E Region Separation
  10. Keepalived高可用(原理、安装、启动、单实例配置、双实例双主配置实战篇)