手推垃圾邮件分类的简单例子。
先了解朴素贝叶斯算法,百度百科有详细介绍。只要得到它!
示例如下:
训练数据:
正常邮件(3封) 垃圾邮件(3封)
1、老师 机器 论文 1、学习 开会
2、产品 开会 老师 2、 老师 邮件
3、论文 点击 学习 3、链接 论文
新邮件:教师课程 点击学习
如何判断新邮件是否为垃圾邮件?
解决方案:词库 = {教师、机器、论文、产品、会议、点击、学习、电子邮件、链接}
V=9
条件概率(做了Add one smoothing处理):
P(老师|正常)=(2+1)/(9+9)=3/18 P(老师|垃圾)=(1+1)/(6+9)=2/15
P(机器|正常)=(1+1)/(9+9)=2/18 P(机器|垃圾)=(0+1)/(6+9)=1/15
P(论文|正常)=(2+1)/(9+9)=3/18 P(论文|垃圾)=(1+1)/(6+9)=2/15
P(产品|正常)=(1+1)/(9+9)=2/18 P(产品|垃圾)=(0+1)/(6+9)=1/15
P(开会|正常)=(2+1)/(9+9)=3/18 P(开会|垃圾)=(1+1)/(6+9)=2/15
P(点击|正常)=(1+1)/(9+9)=2/18 P(点击|垃圾)=(0+1)/(6+9)=1/15
P(学习|正常)=(1+1)/(9+9)=2/18 P(学习|垃圾)=(1+1)/(6+9)=2/15
P(邮件|正常)=(0+1)/(9+9)=1/18 P(论文|垃圾)=(1+1)/(6+9)=2/15
P(链接|正常)=(0+1)/(9+9)=1/18 P(链接|垃圾)=(1+1)/(6+9)=2/15
先验概率:P(正常)=1/2 P(垃圾)=1/2
以上条件概率和先验概率的计算就是训练过程。
现在求:
1)P(正常|新邮件)=P(新邮件|正常)*P(正常)/P(新邮件)
=P(老师|正常)*P(课程|正常) *P(点击|正常) *P(学习|正常) *P(正常)/P(新邮件)
=(3/18)*(3/18)*(2/18)*(1/2)/P(新邮件)
2)P(垃圾|新邮件)=P(新邮件|垃圾)*P(垃圾)/P(新邮件)
=P(老师|垃圾)*P(课程|垃圾) *P(点击|垃圾) *P(学习|垃圾) *P(垃圾)/P(新邮件)
=(2/15)*(1/15)*(2/15)*(1/2)/P(新邮件)
P(正常|新邮件)>P(垃圾|新邮件),所以,该新邮件是正常邮件
“课程”在新邮件中被忽略;
P(新邮件)不用计算,因为t比较分子已经能够比较P(正常|新邮件)与P(垃圾|新邮件)大小了。
版权声明:本文为博主wdd_100原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/wdd_100/article/details/123253667