专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
51好读  ›  专栏  ›  机器学习研究会

【学习】海量数据处理算法总结【超详解】

机器学习研究会  · 公众号  · AI  · 2017-06-19 19:28

正文




点击上方 “机器学习研究会” 可以订阅哦
摘要

转自:Angel_Kitty

1. Bloom Filter

【Bloom Filter】
Bloom Filter(BF)是一种空间效率 很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。 Bloom Filter有可能会出现错误判断,但不会漏掉判断。也就是 Bloom  Filter判断元素不再集合,那肯定不在。如果判断元素存在集合中,有一定的概率判断错误。 因此,Bloom Filter不适合那些“零错误”的应用场合。

而在能容忍低错误率的应用场合下,Bloom Filter 比其他常见的算法 (如hash,折半查找) 极大节省了空间。

Bloom Filter的详细介绍: 海量数据处理之Bloom Filter详解

【适用范围】
可以用来实现数据字典,进行数据的判重,或者集合求交集


【基本原理及要点】

原理要点:一是位数组, 而是k个独立hash函数。

1)位数组:

假设Bloom  Filter使用一个m比特的数组来保存信息, 初始状态时, Bloom Filter 是一个包含 m 位的 位数组 ,每一位都置为 0, 即BF整个数组的元素都设置为0。


2)k个独立hash函数

为了表达S={x 1 , x 2 ,…,x n }这样一个n个元素的集合,Bloom Filter使用k个相互独立的哈希函数(Hash  Function),它们分别将集合中的每个元素映射到{1,…,m}的范围中。

当我们往 Bloom Filter中增加任意一个元素x时候, 我们使用k个哈希函数得到k个哈希值,然后将数组中对应的比特位设置为1。 即第 i 个哈希函数映射的位置 hash i (x) 就会被置为 1 1 i k )。 注意,如果一个位置多次被置为1,那么只有第一次会起作用,后面几次将没有任何效果。在下图中,k=3,且有两个哈希函数选中同一个位置(从左边数第五位,即第二个“1“处)。







请到「今天看啥」查看全文