No.17【大数据算法】Bloom Filter 的数学背景

本文深入探讨Bloom Filter的数学背景,详细推导错误率公式、最佳哈希函数个数的选择以及如何估算Bloom Filter中的元素数量,帮助理解其工作原理和性能优化。
摘要由CSDN通过智能技术生成

0x00 前言

程序员应该无所畏惧,所以,一起来推导数学公式吧!

上文我们分享了 Bloom Filter 的基本原理和代码实现,在文章的结尾提到了 BF 的误判率以及几个重要参数的选取,我们只给出了最后的公式,而没有具体的推导过程。 这是会被狠狠地挑战的,本着追根刨底的精神,我们推导一下 BF 相关的数学公式。

文章结构

本文会分享关于 BF 的三个知识点:

  1. 错误率公式的推导
  2. 最佳哈希函数个数的推导
  3. BF 的基数估计公式,即如何计算 BF 中的元素个数

0x01 背景补充

错误率

错误率有两种:

  • FP = A false positive error, or in short a false positive, commonly called a “false alarm”, is a result that indicates a given condition exists, when it does not.
  • FN = A false negative error, or in short a false negative, is a test result that indicates that a condition does not hold, while in fact it does.

对应 BF 的情况下,FP 就是「集合里没有某元素,查找结果是有该元素」,FN 就是「集合里有某元素,查找结果是没有该元素」。

FN 显然总是0,只要集合中有某元素,那么肯定能查到。FP 会随着 BF 中插入元素的数量而增加——极限情况就是所有 bit 都为 1,这时任何元素都会被认为在集合里。

0x02 数学推导

一、误判率怎么来?

假设哈希函数以相等的概率选择位数组中的位置。如果 m 是位数组中的比特数,则在插入元素期间某一特定比特位不被某个哈希函数设置为 1 的概率是:

11m

如果哈希函数的数量是 k,则通过 k 个哈希函数都未将该位设置为 1 的概率是:

(11m)k

那么,如果我们插入了 n 个元素,某个位仍然为 0 的概率就是:

(11m)k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值