现在贝叶斯已经广泛应用了,海难搜救、生物医药、疾病诊断、邮件过滤、文本分类、侦破案件、工业生产等很多方面。

我们机会每天都会收到类似以下的垃圾短信/邮件:
“XX公司优惠,商品打折,全场八折,返利多少钱”
“金融公司,XX理财产品,XX保险”
“招聘兼职,工资日结”
诸如此类的垃圾邮件,铺天盖地、没完没了的发。我们能不能通过一个算法自动的识别出这些垃圾邮件呢?贝叶斯公式就很好用, 下面我们来一步步的讲如果利用贝叶斯公式解决垃圾邮件。
1、进行中文分词
例如把“晚上在公司聚餐”,进行中文分词会变成:“晚上/ 在/ 公司/ 聚餐”四个单词。常用的中文分词库有jieba等分词工具。
2、分词后去掉停用词
汉语去掉一些“是、在”等之类停用词之后,并不能明显影响句子表达的信息,反而能提高计算速度和准确率。比如“晚上在公司聚餐 ”把“在”去掉之后对句子的影响就有限。常用的停用词也有字典
3、构建词向量
把所有的词语聚起来并去重,形成一个全部的词的集合。然后,根据单词是否出现在每个里面,构建每个邮件的词向量。
4、计算分类概率
根据贝叶斯公式

                                     

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_中文分词



基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_中文分词_02

为垃圾邮件,

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_基于机器学习垃圾短信过滤代码_03

为正常邮件;

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_垃圾邮件_04

为待分类的邮件, 按照贝叶斯算法我们需要求出邮件

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_垃圾邮件_05

为垃圾邮件的概率

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_统计_06

 和为正常邮件的概率

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_中文分词_07

,二分类里面最大的概率作为推测的分类。然而,事情往往没有这么容易, 邮件A可能在我们的已知分类库没有出现过,所以很难求出

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_统计_08


基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_机器学习_09

。事情进行到这里仿佛陷入了僵局。。。。让我们在梳理一下思绪,我们刚刚把邮件通过分词都向量化了,邮件

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_基于机器学习垃圾短信过滤代码_10

可以表示为一个

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_基于机器学习垃圾短信过滤代码_11

的特征, 就是说事件

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_机器学习_12

是由若干个特征表示,如果特征彼此独立而都有相等的重要性,那么

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_基于机器学习垃圾短信过滤代码_13

的每一项都可以通过已知的条件计算出来。这就是传说的朴素贝叶斯分类器(Naive Bayes classifiers),naive的英文意思是“幼稚的; 天真的; 单纯的”。我们把汉语中每个单词出现想象成“独立的和同等重要的”,这件事情确实够“天真的”,但是当我们天真一回后,通过结果你会发现这种“天真”反而很有用。

再来回顾公式

                                  

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_统计_14

我们会发现分母都有

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_统计_15

, 所以我只需要比较

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_中文分词_16

,求出最大的

基于机器学习垃圾短信过滤代码 垃圾短信过滤软件_基于机器学习垃圾短信过滤代码_17

就可以认为是我们预测出来的分类。