问题背景:我们每天都会收到很多的邮件,想象一下,如果再某一天内,我们收到了几百封邮件,但是这几百封邮件中,自己需要处理的邮件只有寥寥的数十封。所以我们需要一个“筛选器”在众多邮件中,将垃圾邮件和正常邮件筛选出来,以便我们进行正常邮件的处理。
朴素贝叶斯算法对于垃圾邮件的分类具有较高的准确度。
贝叶斯公式简介和应用:http://t.csdn.cn/fAm15
主要思路:首先我们假设所有词语彼此之间是不相关的(严格说这个假设不成立;实际上各词语之间不可能完全没有相关性,但可以忽略)。然后要明确我们要计算的内容是:在某几个关键词下,该邮件是正常邮件的概率:P(正常邮件|关键词)和在某几个关键词下,该邮件是垃圾邮件的概率:P(垃圾邮件|关键词)。
基于贝叶斯公式和条件概率公式,我们可以把P(正常邮件|关键词)转化为:
将 P(垃圾邮件|关键词)转化为:
可以看到,二者的分母是一样的,但是分子不同,所以我们只要计算分子的大小即可。
存在的问题:例如当P1(中奖|正常)很小,P2(免费|正常)也很小,并且在正常条件下,其他的关键词的概率Pn(关键词|正常)的概率也很小的时候,就会导致P1*P2*...*Pn无限小,我们对上式的分子取以e为底的对数ln。经过处理之后,分子就变成了:
取对数存在的问题:经过这样的处理之后,仍存在一个问题就是例如“中奖”,没有在邮件中出现的时候,就会导致上述公式中的P(中奖|正常)和P(中奖|垃圾邮件)的结果为零,这是我们不想要的,因为这样的话不能筛选出垃圾邮件,所以为了处理这种特殊情况,我们引入了laplace smoothing-拉普拉斯平滑。
拉普拉斯平滑主要思想:主要的思想是对词的个数+1,对训练数据进行平滑处理。当训练样本很大时&