![](https://csdnimg.cn/release/download_crawler_static/86753894/bg6.jpg)
七、什么是贝叶斯过滤器?
垃圾邮件是一种令人头痛的顽症,困扰着所有的互联网用户。
正确识别垃圾邮件的技术难度非常大。传统的垃圾邮件过滤方法,主要有"关键词法"和"校验
码法"等。前者的过滤依据是特定的词语;后者则是计算邮件文本的校验码,再与已知的垃圾
邮件进行对比。它们的识别效果都不理想,而且很容易规避。
2002 年,Paul Graham 提出使用"贝叶斯推断"过滤垃圾邮件。他说,这样做的效果,好得不可
思议。1000 封垃圾邮件可以过滤掉 995 封,且没有一个误判。
另外,这种过滤器还具有自我学习的功能,会根据新收到的邮件,不断调整。收到的垃圾邮
件越多,它的准确率就越高。
八、建立历史资料库
贝叶斯过滤器是一种统计学过滤器,建立在已有的统计结果之上。所以,我们必须预先提供
两组已经识别好的邮件,一组是正常邮件,另一组是垃圾邮件。
我们用这两组邮件,对过滤器进行"训练"。这两组邮件的规模越大,训练效果就越好。Paul
Graham 使用的邮件规模,是正常邮件和垃圾邮件各 4000 封。
"训练"过程很简单。首先,解析所有邮件,提取每一个词。然后,计算每个词语在正常邮件
和垃圾邮件中的出现频率。比如,我们假定"sex"这个词,在 4000 封垃圾邮件中,有 200 封
包含这个词,那么它的出现频率就是 5%;而在 4000 封正常邮件中,只有 2 封包含这个词,那
么出现频率就是 0.05%。(【注释】如果某个词只出现在垃圾邮件中,Paul Graham 就假定,
它在正常邮件的出现频率是 1%,反之亦然。随着邮件数量的增加,计算结果会自动调整。)
有了这个初步的统计结果,过滤器就可以投入使用了。
九、贝叶斯过滤器的使用过程
现在,我们收到了一封新邮件。在未经统计分析之前,我们假定它是垃圾邮件的概率为 50%。
(【注释】有研究表明,用户收到的电子邮件中,80%是垃圾邮件。但是,这里仍然假定垃圾
邮件的"先验概率"为 50%。)
我们用 S 表示垃圾邮件(spam),H 表示正常邮件(healthy)。因此,P(S)和 P(H)的先验概
率,都是 50%。
然后,对这封邮件进行解析,发现其中包含了 sex 这个词,请问这封邮件属于垃圾邮件的概
率有多高?
我们用 W 表示"sex"这个词,那么问题就变成了如何计算 P(S|W)的值,即在某个词语(W)已
经存在的条件下,垃圾邮件(S)的概率有多大。
根据条件概率公式,马上可以写出