主旨
讨论贝叶斯垃圾邮件分类问题中联合概率的计算问题。通过借鉴现有的资料,整理出一种数学上等价,同时基于本科概率论课程较容易理解的计算公式。
背景知识
2002年Paul Graham提出了一种利用贝叶斯原理做垃圾邮件分类的方法[1],这种方法在应用中取得了良好的效果。阮一峰发表了一篇中文介绍资料[2]对此方法做了清晰、明确的介绍。
在Paul Graham提出的垃圾邮件分类算法中,涉及到使用文本中出现的多个单词判断当前文本是否是垃圾邮件的问题,即当文本中出现了多个单词,如何计算垃圾邮件的概率。在文献[2]中,第十部分“联合概率的计算”就是对这部分的描述。
问题导入
在[1]中,对于给定多个单词计算联合概率的原理并未涉及,而是从其他位置[3][4]引用结论,给出
其中r_i代表P{TRUE | 第i个条件成立},公式成立的两个假定
1) N个条件之间两两独立且
2) TRUE和FALSE的先验概率相等
此外文献[2]的作者给出了N = 2条件下的一种推导方法(参阅第十部分“联合概率的计算”),想证明上述公式。在我写作这篇文章的时候(2017年2月),[2]中间已经有不少公式已经不可见,好在通过搜索引擎,基本可以复现出[2]作者的推导过程如下
问题在于无论是文献[4]还是文献[2],对于上述公式的推导都不够易懂。从 [2]的读者评论区讨论就可以看到,很多读者不理解[2]的作者是如何定义出E1/E2两个事件并完成推导的,我也和这些读者一样,无法理解[2]的作者的推导方法。
[4]中同样给出了N = 2情况下公式的推导过程,但对于我来说,其中也有不少难以理解的步骤,例如假定S/J两者统计独立之后,给出的数学表达式就较为费解。在[2]的讨论区中,也没有人对[4]中的推导逻辑给予清晰的说明。
此外,上述公式中为了计算P,都需要计算P(S|Wi)。从文本中统计得到的Wi词频是P(Wi|S),如果要计算P(S|Wi),还要用贝叶斯公式计算一遍,从程序设计讲,如果能直接使用P(S|Wi)计算,则会直观的多。
本文受到[2]的讨论区中多名评论者的启发。
讨论与推导
定义:
- Wi 为第 i 个单词出现这一事件,
i=1…N . 这里先从 N=2 的情况开始分析。在分析中假定不同单词的出现概率互相独立。 - S 代表当前邮件是垃圾邮件,
S¯¯¯ 代表当前邮件不是垃圾邮件。
问题可以描述为计算
根据贝叶斯公式,
考虑到[1][2]在文本中W1与W2统计独立的假定, P(W1W2|S)=P(W1|S)∗P(W2|S)
将这条推论代入上式,得到
注意:此处切不可由统计独立性误以为P(W1W2) = P(W1)P(W2).
根据全概率公式,上述公式可得到