贝叶斯垃圾邮件分类问题中联合概率的推导

来源:互联网 发布:网络谣言的危害 编辑:程序博客网 时间:2024/06/05 06:25

主旨

讨论贝叶斯垃圾邮件分类问题中联合概率的计算问题。通过借鉴现有的资料,整理出一种数学上等价,同时基于本科概率论课程较容易理解的计算公式。

背景知识

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]的讨论区中多名评论者的启发。

讨论与推导

定义:

  1. Wi为第i个单词出现这一事件,i=1N. 这里先从N=2的情况开始分析。在分析中假定不同单词的出现概率互相独立。
  2. S代表当前邮件是垃圾邮件,S¯¯¯代表当前邮件不是垃圾邮件。

问题可以描述为计算

P(S|W1W2)

根据贝叶斯公式,

P(S|W1W2)=P(S)P(W1W2|S)/P(W1W2)

考虑到[1][2]在文本中W1与W2统计独立的假定,P(W1W2|S)=P(W1|S)P(W2|S)
将这条推论代入上式,得到
P(S|W1W2)=P(S)P(W1|S)P(W2|S)/P(W1W2)

注意:此处切不可由统计独立性误以为P(W1W2) = P(W1)P(W2).

根据全概率公式,上述公式可得到

P(SW1W2)=P(S)P(W1|S)P(W2|S)P(S)P(W1W2S)+P(S¯¯¯)P(W1W2S¯¯¯)=P(S)P(W1|S)P(W2|S)P(S)P(W1|S)P(W2|S)+P(S¯¯¯)P(W1|S¯¯¯)P(W2|S¯¯¯)

扩展到N个单词的情形

P(SW1W2...WN)=P(S)Ni=1P(Wi|S)P(S)Ni=1P(Wi|S)+P(S¯¯¯)Ni=1P(Wi|S¯¯¯)

在上式右边,P(Wi|S)是训练集垃圾邮件中Wi出现的概率,P(Wi|S¯¯¯)是训练集正常邮件中Wi出现的概率。P(S)是垃圾邮件的先验概率,P(S¯¯¯)=1P(S). 这些概率都是基于训练集可以知道的,因此推导到这一步就已经可以算出P(SW1W2...WN)了。

问题是,这样推出的公式是否与文献[1]或[2]中使用的联合概率公式等价?是等价的,N=2的情况下证明过程如下

根据贝叶斯公式
P(W1|S)=P(S|W1)P(W1)/P(S)
P(W2|S)=P(S|W2)P(W2)/P(S)

代入前述公式

P(SW1W2)=P(S)(P(SW1)P(W1))/P(S)(P(SW2)P(W2))/P(S)P(S)(P(SW1)P(W1))/P(S)(P(SW2)P(W2))/P(S)+P(S¯¯¯)(P(S¯¯¯W1)P(W1))/P(S¯¯¯)(P(S¯¯¯W2)P(W2))/P(S¯¯¯)

根据[1]和[2]的假定P(S)=P(S¯¯¯)=1/2,则上式等于

P(SW1W2)=(P(SW1)P(W1))(P(SW2)P(W2))(P(SW1)P(W1))(P(SW2)P(W2))+(P(S¯¯¯W1)P(W1))(P(S¯¯¯W2)P(W2)))=P(SW1)(SW2)P(SW1)(SW2)+P(S¯¯¯W1)P(S¯¯¯W2)=P(SW1)(SW2)P(SW1)(SW2)+(1P(SW1))(1P(SW2))

与[1]和[2]中给出的形式完全相同.

总结

针对贝叶斯垃圾邮件分类问题,本文利用概率论课程中学过的方法,推导出与[1]和[2]中等价的联合概率计算方法。

P(SW1W2...WN)=P(S)Ni=1P(Wi|S)P(S)Ni=1P(Wi|S)+P(S¯¯¯)Ni=1P(Wi|S¯¯¯)

这个方法不但利于理解,而且其中需要的变量均为P(Wi|S)P(Wi|S¯¯¯)的形式,对训练集统计就可以得到。

参考文献

[1] http://www.paulgraham.com/spam.html
[2] http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_two.html
[3] http://www.paulgraham.com/naivebayes.html
[4] http://www.mathpages.com/home/kmath267.htm

0 0