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

介绍

贝叶斯法则web

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

wiki 把为何要作这个定理谈的很清楚,是为了覆盖逆概的场景:3d

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

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

了解一下公式

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

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

这里写图片描述

很容易推导获得:事件

这里写图片描述

假设若P(A)≠0,那么就能够获得用来预测几率的贝叶斯定理了:图片

这里写图片描述

这个定理显然是能够推导到多个条件的,好比在2个条件的状况下:get

这里写图片描述

经典案例

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

假设 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)。