贝叶斯公式/贝叶斯法则/贝叶斯定理

介绍

贝叶斯法则

贝叶斯定理是用来做什么的?简单说,概率预测:某个条件下,一件事发生的概率是多大?

wiki 把为什么要做这个定理谈的很清楚,是为了覆盖逆概的场景:

在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大”。

而一个自然而然的问题是反过来:“如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测”。这个问题,就是所谓的逆概问题。

了解一下公式

事件B发生的条件下,事件A发生的概率为:
这里写图片描述

同理可得,事件A发生的条件下,事件B发生的概率为:

这里写图片描述

很容易推导得到:

这里写图片描述

假设若P(A)≠0,那么就可以得到用来预测概率的贝叶斯定理了:

扫描二维码关注公众号,回复: 137450 查看本文章

这里写图片描述

这个定理显然是可以推导到多个条件的,比如在2个条件的情况下:

这里写图片描述

经典案例

信某宗教的人是恐怖分子的概率是多少?

假设 100% 的恐怖分子都相信某宗教,而某人相信某宗教,并不代表此人 100% 是恐怖分子,还需要考虑先验概率,假设全球有 7万 恐怖分子(全球人口 70亿 ),假设全球有 1/3 的人口相信某宗教,那么这个人是恐怖分子的概率是多少?

解:

我们要求解的是这个概率: P(恐怖分子|信某教)

套用公式,得到 :

P(恐怖分子|信某教)

= P(信某教|恐怖分子) P(恐怖分子) / P(信某教)

= 100% * (7万人/70亿人) / (1/3)

= 0.003%

也即十万分之三的概率。

延展开去,从数学理论上讲,民主党不针对某个信教人群是对的,但是题目中设定 100% 的恐怖分子信某教,这个假设就比较…

检测呈阳性的雇员吸毒概率是多少?

假设一个常规的检测结果的敏感度与可靠度均为 99% ,即吸毒者每次检测呈阳性 (+) 的概率为 99% 。而不吸毒者每次检测呈阴性 (-) 的概率为 99% 。假设某公司对全体雇员进行吸毒检测,已知 0.5% 的雇员吸毒。请问每位检测结果呈阳性的雇员吸毒的概率有多高?

解:

我们要求解的是这个概率: P(吸毒|检测呈阳性的雇员)

套用公式,得到 :

P(吸毒|检测呈阳性雇员)

= P(检测呈阳性雇员|吸毒) P(吸毒) / P(检测呈阳性雇员)

= 99% * 0.5% / [P(检测呈阳性雇员∩吸毒) + P(检测呈阳性∩不吸毒)]

= 99% * 0.5% / [P(检测呈阳性雇员|吸毒) * P(吸毒) + P(检测呈阳性|不吸毒) * P(不吸毒)]

= 99% * 0.5% / [99% * 0.5% + 1% * 99.5%]

= 0.3322

也就是说,尽管吸毒检测的准确率高达 99% ,但贝叶斯定理告诉我们:如果某人检测呈阳性,其吸毒的概率只有大约 33% ,不吸毒的可能性比较大。

不过也要注意,检测的准确率高低,十分影响结果的概率,如果检测精度达到 99.9% ,那么检测呈阳性的雇员吸毒的概率就上升到了 83.39%

垃圾邮件的过滤

这是 Paul Graham《黑客与画家》 中提到的办法。这个问题其实可以倒推,我们要求解的是这个概率: P(垃圾邮件|检测到某种特征)

这个某种特征可以是 关键词,可以是 时间,可以是 频次,可以是 邮件附件类型 …包括以上各种特征 混合 的特征等等。

我们先用最简单的 关键词 来做推测,根据我个人的经验,一个中国式垃圾邮件很可能会包含两个字:发票 。好,那么我们要求解的一封邮件是不是垃圾邮件的概率就变成 P(垃圾邮件|检测到“发票”关键词),根据贝叶斯定理

P(垃圾邮件|检测到“发票”关键词)

= P(检测到“发票”关键词|垃圾邮件) / P(检测到“发票”关键词)

好,这里遇到了一个问题,我们怎么知道垃圾邮件里出现 发票 关键词的概率?

怎么知道在所有邮件里出现 发票 关键词的概率?理论上,除非我们统计所有邮件,否则我们是得不出的。这时候,就得做个妥协,在工程上做个近似,我们自己找到一定数量的真实邮件,并分为两组,一组正常邮件,一组垃圾邮件,然后进行计算,看 发票 这个词,在垃圾邮件中出现的概率是多少,在正常邮件里出现的概率是多少。

显然,这里的训练数量大一些的话,计算得到的概率会更逼近真实值。 Paul Graham 使用的邮件规模,是正常邮件和垃圾邮件各 4000封 。如果某个词只出现在垃圾邮件中, Paul Graham 就假定,它在正常邮件的出现频率是 1% ,反之亦然,这样做是为了避免概率为 0 。随着邮件数量的增加,计算结果会自动调整。

这样的话,将公式继续分解为如下:

P(垃圾邮件|检测到“发票”关键词)

= P(检测到“发票”关键词|垃圾邮件) / P(检测到“发票”关键词)

= P(检测到“发票”关键词|垃圾邮件) / [P(检测到“发票”关键词∩垃圾邮件) + P(检测到“发票”关键词∩正常邮件)]

= P(检测到“发票”关键词|垃圾邮件) / [P(检测到“发票”关键词|垃圾邮件) / P(垃圾邮件) + P(检测到“发票”关键词|正常邮件) / P(正常邮件)]

就又可以根据训练模型得到的概率,进行初始值计算了。此后,可以通过大量用户将垃圾邮件标注为正常邮件,正常邮件挪到垃圾邮件的动作,进行反复训练纠正,直至逼近一个合理值了。

不过这里还涉及到一个问题,就是单个关键词的概率(单个条件)无论如何再高,这封邮件仍然有可能不是垃圾邮件,所以在此处应用贝叶斯定理时,我们显然要用到多个条件,也就是计算这个概率:

P(垃圾邮件|检测到“A”关键词,检测到“B”关键词,检测到"C",...)

Paul Graham 的做法是,选出邮件中 P(垃圾邮件|检测到“X”关键词) 最高的 15个词 ,计算它们的联合概率。(如果关键词是第一次出现,Paul Graham 就假定这个值等于 0.4 ,也即认为是negative normal)。

猜你喜欢

转载自blog.csdn.net/jichunw/article/details/80196360