您的位置:首页 > 其它

朴素贝叶斯实例——邮件分类

2016-06-29 20:09 267 查看
朴素贝叶斯在文本分类方面使用比较广,即使文本单词之间在现实生活中并不是独立的变量,但是使用朴素贝叶斯进行分类还是能达到很好的效果。

朴素贝叶斯的一个实例就是分辨邮件是否是垃圾邮件,其过程如下。

1.首先我们是存在一定的训练集供我们来建立模型。在已有的实例集里,我们通常是用一部分来作为训练集,剩下的部分作为测试用。

2.从训练集里,我们要计算如下几个参数:

正常邮件的概率,即P(Y=0)

垃圾邮件的概率,即P(Y=1)

每个单词Xi出现在正常邮件里的概率,即Pi(Xi | Y=0)

每个单词Xi出现在垃圾邮件里的概率,即Pi(Xi | Y=1)

3.根据公式,我们来分辨一封邮件是否为垃圾邮件:



我们要做的就是去找到此封邮件里的单词(剔除掉训练集之外的单词)对应的第二步里计算的四个参数。

这里会出现一个问题,当某个单词只在正常邮件或者垃圾邮件之一出现时,那么必定有一项P(Xi | Y=0/1)会为0,导致整个算式都为零。为了避免此种情况,采用的办法是拉普拉斯顺滑,即将单词出现的次数以及单词总数同时加一,避免了全部为零的特殊情况。

另外一个问题是,当以上情况的单词比较多时,那么相乘后概率就会很小很小,趋近于零,此时的一个解决方案就是取对数,让乘法变为加法,就能解决了。

最后,我们只要比较:

P(Y=0) * P(X1 | Y=0) * P(X2 | Y=0) * P(X3 | Y=0) *….. *P(Xn | Y=0)

P(Y=1) * P(X1 | Y=1) * P(X2 | Y=1) * P(X3 | Y=1) *….. *P(Xn | Y=1)

以上两项的大小,就可以判断此封邮件是否是垃圾邮件了。

朴素贝叶斯在文本分类的应用里还有很多。

比如中文断句,根据断后的词出现的概率大小,就可以很准确地进行断句了。

还比如输入法里的错拼也能搜出正确的词,根据输入的字母及其周边可能出现的字母出现的概率,可以推荐出最符合想输入的词组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息