贝叶斯定理的简单应用

问题是最好的行动助推器。

从贝叶斯公式推导开始的结尾提出了两个问题:

  • $P(B\cap A)=P(B)P(A\mid B)$是如何得到的?
  • 基于贝叶斯定理,形成了“贝叶斯学派”,这个定理到底有哪些具体的应用,为什么有那么大的影响力?
    让我们从问题开始此次的探索。

回归定义

从贝叶斯公式推导开始最开始回顾概念的时候提到了概率的最基本的定义:$$P(A)=\dfrac{发生事件A的可能数目}{所有可能结果的数目}=\dfrac{n(A)}{n(S)}$$定义需要多做一步解释,其中S为样本空间,A为事件空间。
$P(B\cap A)=P(B)P(A\mid B)$公式的推理可以从韦恩图开始:

$P(B\cap A)$的含义是在B发生的情况下,A发生的概率。回到上面的基本定义,需要确定$P(B\cap A)$的样本空间和事件空间是什么。因为B已经发生,所以样本空间应该为B的区域,即粉红色和橘黄色的区域:$$Sample space = B = Pink+Orange$$
此时的事件空间呢?事件空间是A可能发生的区域,此时体现出了$P(A\mid B)$与$P(A)$的差异,$P(A)$的事件空间是整个A区域,包括了粉红色和其他部分的A圆中的区域。$P(A\mid B)$仅仅是粉红色区域。因为基于样本空间B,A可能的事件空间被限制了:$$Event space = Pink$$回到定义公式:$$P(A\mid B)=\dfrac{n(A)}{n(S)}=\dfrac{Pink}{Pink+Orange}=\dfrac{P(A \cap B)}{P(B)}$$

公式的理解

与贝叶斯定理的一般形式$P(A_i\mid B)=\dfrac{P(A_i)P(B\mid A_i)}{\sum_{i=1}^n=P(A_i)P(B\mid A_i)}$比起来,下面的格式更容易让人产生联想。$$P(A\mid B)=\dfrac{P(A)P(B\mid A)}{P(B)}$$回到上一篇博客重新梳理推理过程会发现,其实贝叶斯定理的一般形式就是基于刚才的$P(B\cap A)=P(B)P(A\mid B)$加上全概率公式进行数学推导得出的结论。我们尝试用自然语言来解读一下公式就变成了:
$P(A\mid B)=\dfrac{P(A\cap B)}{P(B)}=\dfrac{P(B\mid A)P(A)}{P(B)}$:要想知道在$B$发生的前提下$A$发生的概率,只要知道$A$和$B$同时发生的概率和$B$单独发生的概率中的占比就可以了。然后把$P(A\cap B)$变形,直接得到了贝叶斯定理的简单表达。
$P(A\mid B)=\dfrac{P(B\mid A)P(A)}{P(B)}$可以分形产生两种理解:

  • $P(A\mid B)=P(B\mid A)*\dfrac{P(A)}{P(B)}$:抛开推理的过程换个思路,因为贝叶斯定理是一个逆概率的问题,
  • $P(A\mid B)=P(A) \dfrac{P(B\mid A)}{P(B)}$:因为求解$P(A\mid B)$是在假设已知$P(B\mid A)$的情况下,已知$P(A)$的发生基础得到了$P(B\mid A)$。所以可以把$P(A)$称为”先验概率”(Prior probability),即在$B$事件发生之前,我们对A事件概率的一个判断。$P(A\mid B)$称为”后验概率”(Posterior probability),即在$B$事件发生之后,对$A$事件概率的重新评估。$\dfrac{P(B\mid A)}{P(B)}$称为”可能性函数”(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。所以:$$后验概率=先验概率 * 调整因子$$

反垃圾邮件

Paul Graham写了一篇利用贝叶斯定理做过滤器有效识别垃圾邮件的文章。我们来看看如何利用贝叶斯定理反垃圾邮件。

现在的垃圾邮件和普通邮件很难分别,垃圾邮件变得非常有迷惑性。但是无论垃圾邮件如何迷惑,最终是要传递信息的。只要能识别出垃圾邮件传递的信息,就能区分出哪些内容是垃圾邮件。垃圾邮件传递信息是否有特定的词汇呢,我们来试试看:

机器“训练”

假设现在有2000封邮件,其中有1000封垃圾邮件,1000封正常邮件。对这些邮件中出现的词语进行统计。假设某一个具体的词语”Hello”在垃圾邮件出现了10次,在垃圾邮件中出现的概率是1%;在正常邮件中出现了50次,在正常邮件中出现的概率是5%。
注意:有一种特殊情况需要进行特殊处理,即仅出现在正常邮件或者垃圾邮件的词汇,可以假设为没有出现的那一类出现的概率为1%,避免出现0%的情况影响后续的计算。随着训练集的应用,数据量增大之后会根据实际情况自动调整。

尝试过滤

首先假设,收到垃圾邮件的概率是$P(S)=0.5$,那么非垃圾邮件的概率是$P(N)=0.5$。这里的$P(S)$和$P(N)$都是先验概率。假设出现了某一个单词Word之后,判断该邮件是垃圾邮件的概率是$P(S\mid W)$,判断该邮件不是垃圾邮件的概率是$P(N\mid W)$。根据公式可知:$P(S\mid W)=P(S)\dfrac{P(W\mid S)}{P(W)}$,其中$P(W)$由全概率公式带入求解(注意几个已知的变量关系:$P(S’)=P(N)$、$P(W\mid S’)=P(W\mid N)$):$$P(S\mid W)=\dfrac{P(S)P(W\mid S)}{P(S)P(W\mid S)+P(S’)P(W\mid S’)}=\dfrac{0.5*0.01}{0.5*0.01+0.5*0.05}=\dfrac{1}{6}$$计算的结果和训练集的训练结果选取的词语高度相关。这里经过“训练”后验概率反而降低了。在贝叶斯推断及其互联网应用(二):过滤垃圾邮件的举例中算出的概率就比较高,原理是相同的。自然这也就引出了下一个问题:仅仅靠一个词判断垃圾邮件是否太单薄了点儿?

联合概率

在Paul Graham的做法是计算文章中$P(S\mid W)$最高的15个词语的联合概率。这部分内容涉及到其他知识点,以后再写文章讲解,有兴趣的可以参考下面几篇文章了解详情:

问题..

  • 关于贝叶斯定理我们尝试做了应用和解释,但是还有哪些更通俗具体的应用呢?
  • 其实刚才的垃圾邮件的分析方式已经有了初步的机器学习概念,那么到底贝叶斯定理和机器学习是什么关系呢?

这些问题,我们稍后继续讨论…

Reference

$P(B\cap A)=P(B)P(A\mid B)$的证明
贝叶斯推断及其互联网应用(一):定理简介
贝叶斯推断及其互联网应用(二):过滤垃圾邮件

声明: 本文转载需标明出处,禁止用于商业目的。

ChangeLog

161129 新建