贝叶斯推断及其互联网应用(一)作者:阮一峰日期:2011年8月25日一年前的这个时候,我正在翻译PaulGraham的《黑客与画家》。那本书大部分谈的是技术哲学,但是第八章却写了一个非常具体的技术问题----如何使用贝叶斯推断过滤垃圾邮件(英文版)?说实话,我没完全看懂那一章。那时,交稿截止日期已经过了,没时间留给我去啃概率论教科书了。我只好硬着头皮,按照字面意思把它译了出来。虽然交稿了,译文质量也还可以,但是心里很不舒服,下决心一定要搞懂它。一年过去了,我读了一些概率论文献,逐渐发现贝叶斯推断并没有想象的那么难。相反的,它的原理部分实际上很容易理解,甚至不需要用到高等数学。下面就是我的学习笔记。需要声明的是,我并不是这方面的专家,数学其实是我的弱项。所以,欢迎大家提出宝贵意见,让我们共同学习和提高。=====================================贝叶斯推断及其互联网应用作者:阮一峰一、什么是贝叶斯推断贝叶斯推断(Bayesianinference)是一种统计学方法,用来估计统计量的某种性质。它是贝叶斯定理(Bayes'theorem)的应用。英国数学家托马斯·贝叶斯(ThomasBayes)在1763年发表的一篇论文中,首先提出了这个定理。贝叶斯推断与其他统计学推断方法截然不同。它建立在主观判断的基础上,也就是说,你可以不需要客观证据,先估计一个值,然后根据推断结果不断修正。正是因为它的主观性太强,曾经遭到许多统计学家的诟病。贝叶斯推断需要大量的计算,因此历史上很长一段时间,无法得到广泛应用。只有等到计算机诞生以后,它才获得真正的重视。人们发现,许多统计量是无法事先进行客观判断的,而互联网时代出现的大型数据集,再加上高速运算能力,为验证这些统计量提供了方便,也为应用贝叶斯推断创造了条件,它的威力正在日益显现。二、贝叶斯定理要理解贝叶斯推断,就必须先理解贝叶斯定理。后者实际上就是计算"条件概率"的公式。所谓"条件概率"(Conditionalprobability),就是指在事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。根据文氏图,可以很清楚地看到在事件B发生的情况下,事件A发生的概率就是P(A∩B)除以P(B)。因此,同理可得,所以,即这就是条件概率的计算公式。三、全概率公式由于后面要用到,所以除了条件概率以外,这里还要推导全概率公式。假定样本空间S,是两个事件A与A'的和。上图中,红色部分是事件A,绿色部分是事件A',它们共同构成了样本空间S。在这种情况下,事件B可以划分成两个部分。即在上一节的推导当中,我们已知所以,这就是全概率公式。它的含义是,如果A和A'构成样本空间的一个划分,那么事件B的概率,就等于A和A'的概率分别乘以B的条件概率之和。将这个公式代入上一节的条件概率公式,就得到了条件概率的另一种写法:四、贝叶斯推断的含义对条件概率公式进行变形,可以得到如下形式:我们把P(A)称为"先验概率"(Priorprobability),即在B事件发生之前,我们对A事件概率的一个判断。P(A|B)称为"后验概率"(Posteriorprobability),即在B事件发生之后,我们对A事件概率的重新评估。P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。所以,条件概率可以理解成下面的式子:这就是贝叶斯推断的含义。我们先预估一个"先验概率",然后加入实验结果,看这个实验到底是增强还是削弱了"先验概率",由此得到更接近事实的"后验概率"。在这里,如果"可能性函数"P(B|A)/P(B)>1,意味着"先验概率"被增强,事件A的发生的可能性变大;如果"可能性函数"=1,意味着B事件无助于判断事件A的可能性;如果"可能性函数"<1,意味着"先验概率"被削弱,事件A的可能性变小。五、【例子】水果糖问题为了加深对贝叶斯推断的理解,我们看两个例子。第一个例子。两个一模一样的碗,一号碗有30颗水果糖和10颗巧克力糖,二号碗有水果糖和巧克力糖各20颗。现在随机选择一个碗,从中摸出一颗糖,发现是水果糖。请问这颗水果糖来自一号碗的概率有多大?我们假定,H1表示一号碗,H2表示二号碗。由于这两个碗是一样的,所以P(H1)=P(H2),也就是说,在取出水果糖之前,这两个碗被选中的概率相同...