入门好文:
贝叶斯推断
作为一个非统计专业的人,着实是被贝叶斯思想折磨了很久,常见的公式都能倒背如流,但依旧无法理解其精神内核。
近日,有高人指点,自己再查了点资料,才对贝叶斯思想有所领悟。。。
基本框架:前面总结了常见分布的概念,这里贝叶斯也不例外,都是概率论,概率研究的核心就是随机事件发生的概率。以后遇到统计时,要习惯“某事件发生概率”这种专业说法。
例子1:
两个一模一样的碗,一号碗有30颗水果糖和10颗巧克力糖,二号碗有水果糖和巧克力糖各20颗。现在随机选择一个碗,从中摸出一颗糖,发现是水果糖。请问这颗水果糖来自一号碗的概率有多大?
作者的描述有点含糊,这里会修正一下:
我们假定,H1表示摸出的球来自一号碗,H2表示摸出的球来自二号碗。由于我们假定这两个碗是一样的(先验概率已被指定),所以P(H1)=P(H2),也就是说,在取出水果糖之前,这两个碗被选中的概率相同。因此,P(H1)=0.5,我们把这个概率就叫做"先验概率",即没有做实验之前,来自一号碗的概率是0.5。
再假定,E表示取出的是水果糖,所以问题就变成了在已知E的情况下,来自一号碗的概率有多大,即求P(H1|E)。我们把这个概率叫做"后验概率",即在E事件发生之后,对P(H1)的修正。
后面计算就不说了,老生常谈,主要是把概念规范化,不要把数学语言和日常用于混淆在一起。
例子2:
已知某种疾病的发病率是0.001,即1000人中会有1个人得病。现有一种试剂可以检验患者是否得病,它的准确率是0.99,即在患者确实得病的情况下,它有99%的可能呈现阳性。它的误报率是5%,即在患者没有得病的情况下,它有5%的可能呈现阳性。现有一个病人的检验结果为阳性,请问他确实得病的可能性有多大?
假定A事件表示得病,那么P(A)为0.001。这就是"先验概率",即没有做试验之前,我们预计的发病率。再假定B事件表示阳性,那么要计算的就是P(A|B)。这就是"后验概率",即做了试验以后,对发病率的估计。
其实在医学统计学里,99%不叫作准确率,而是sensitivity。
5%也不叫作误报率,而叫做假阳性率,与之对应的是specificity。
计算过程可以参照原文。
实例:垃圾邮件过滤
贝叶斯过滤器是一种统计学过滤器,建立在已有的统计结果之上。所以,我们必须预先提供两组已经识别好的邮件,一组是正常邮件,另一组是垃圾邮件。
我们用这两组邮件,对过滤器进行"训练"。这两组邮件的规模越大,训练效果就越好。Paul Graham使用的邮件规模,是正常邮件和垃圾邮件各4000封。
"训练"过程很简单。首先,解析所有邮件,提取每一个词。然后,计算每个词语在正常邮件和垃圾邮件中的出现频率。比如,我们假定"sex"这个词,在4000封垃圾邮件中,有200封包含这个词,那么它的出现频率就是5%;而在4000封正常邮件中,只有2封包含这个词,那么出现频率就是0.05%。(【注释】如果某个词只出现在垃圾邮件中,Paul Graham就假定,它在正常邮件的出现频率是1%,反之亦然。这样做是为了避免概率为0。随着邮件数量的增加,计算结果会自动调整。)
有了这个初步的统计结果,过滤器就可以投入使用了。
Github上有这个的代码,可以去跑一跑。
前面已经说了贝叶斯是一种思想,它可以被用在任何统计模型上。这也就是为什么你能听到各种贝叶斯相关的术语:贝叶斯线性回归、贝叶斯广义线性回归等等。
接下来就从最简单的贝叶斯线性回归为例,来讲解贝叶斯思想是如何与传统统计模型相结合的。
参考:贝叶斯线性回归(Bayesian Linear Regression)