神奇的贝叶斯---垃圾邮件过滤

本文详细介绍了如何运用贝叶斯原理进行垃圾邮件的精准过滤,包括计算邮件是垃圾邮件的概率以及如何通过多个关键词联合计算来提高过滤准确率。文中还解释了在计算过程中遇到的挑战及解决方案,例如当某个词语仅出现在垃圾邮件中时的处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        使用贝叶斯进行垃圾邮件过滤的原理很简单,假如我们在邮件中发现一个词--“发票”,那么就根据这个词来计算这封邮件是垃圾邮件的概率

        P(垃圾|发票) = P(发票|垃圾)P(垃圾)/P(发票)

        P(垃圾|发票)  :邮件中出现发票一词时,该邮件是垃圾邮件的概率

        P(发票|垃圾): 在垃圾邮件中,发票一词出现的概率

        P(垃圾)     : 垃圾邮件的概率

        P(发票)          : 发票一词在邮件中出现的概率

        P(正常)     : 正常邮件的概率

       P(发票) = P(发票|垃圾)P(垃圾) + P(发票|正常)P(正常)

       第一步,需要一个训练样本,正常邮件,和垃圾邮件各选取2000封,然后统计各个词在垃圾邮件和正常邮件中出现的次数,经过统计,发票一词在垃圾邮件中出现了400封,而在正常邮件中,只有5封邮件,如此,P(发票|垃圾) = 0.2    P(发票|正常) =  0.0025。如果一个词只在垃圾邮件中出现呢,那么它在正常邮件中出现的概率应当是多少呢?显然不应该为0,为0的话,就无法参与计算,因此需要给一个默认值,可以先设置为0.01。随着垃圾邮件的过滤,每一个词在垃圾邮件中的概率和在正常邮件中的概率都是会变化的。

       第二步,进行垃圾邮件的识别,这里面,P(垃圾)  =  P(正常)  = 0.5,这个是先验概率,虽然有研究表明用户实际中收到的垃圾邮件占比达到80%,但先验概率仍设置为50%。将以上各值带入公式计算  P(垃圾|发票) = 0.2*0.5/(0.5*0.2+0.5*0.0025) = 0.98  也就是说,有98%的概率是垃圾邮件


      但是单凭这一个词就判断它是垃圾邮件是不合理的,毕竟,在正常邮件中,也是可以出现发票一词的,那么该怎么办呢?

      邮件中不止发票这一个词,还有其他的词,其他的词也是可以计算垃圾邮件的概率的,这样,我们对所有词都计算,假设单词序列为W1,W2,W3....Wn

      p1 = p(垃圾|W1)

      p2 = p(垃圾|W2)

      .....

       pn = p(垃圾|Wn)


      将这些值从大到小排序,然后选出其中最大的k个值进行联合概率计算

      P = p1*p2*p3...*pk/(p1*p2*p3...*pk + (1-p1)*(1-p2)*(1-p3)...*(1-pk))

      公式是如何推到的,这里就不做介绍,因为,我也搞不清楚,但是最终的联合概率计算公式却是如此的简单,以至于,我们完全不需要知道是如何推导出来的

      

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值