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

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))

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

神奇的贝叶斯---垃圾邮件过滤相关推荐

  1. 朴素贝叶斯——垃圾邮件过滤

    文章目录 利用朴素贝叶斯进行文档分类 1.获取数据集 2.切分文本 3.构建词表和分类 4.构建分类器 5.测试算法 利用朴素贝叶斯进行垃圾邮件过滤 1.导入数据集 2.垃圾邮件预测 总结 利用朴素贝 ...

  2. 第四章 朴素贝叶斯-垃圾邮件过滤

    #朴素贝叶斯之垃圾邮件过滤 import os #----------------------1.获取数据集----------------------- import pandas as pd''' ...

  3. php贝叶斯,php – 将单个概率与朴素贝叶斯垃圾邮件过滤相结合

    我正在尝试通过分析我已经积累的语料库来生成垃圾邮件过滤器. 我已经实现了代码来计算消息是垃圾邮件的概率,因为它包含一个特定的单词,通过从wiki实现以下公式: 我的PHP代码 public funct ...

  4. Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报 分类: 机器学习(19) 听说

    Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报  分类: 机器学习(19)  听说朴 ...

  5. python实现朴素贝叶斯垃圾邮件分类

    查看通俗易懂的贝叶斯垃圾邮件分类原理 请点击此处 下载邮件数据 请点击此处 import os import re import string import math import numpy as ...

  6. 朴素贝叶斯-垃圾邮件(中文的)处理

    #coding=utf-8 from sklearn.naive_bayes import MultinomialNB,GaussianNB import numpy as np import jie ...

  7. 贝叶斯垃圾邮件分类问题中联合概率的推导

    主旨 讨论贝叶斯垃圾邮件分类问题中联合概率的计算问题.通过借鉴现有的资料,整理出一种数学上等价,同时基于本科概率论课程较容易理解的计算公式. 背景知识 2002年Paul Graham提出了一种利用贝 ...

  8. 朴素贝叶斯-垃圾邮件分类实现

    1. 前言 <朴素贝叶斯算法(Naive Bayes)>,介绍了朴素贝叶斯原理.本文介绍的是朴素贝叶斯的基础实现,用来垃圾邮件分类. 2. 朴素贝叶斯基础实现 朴素贝叶斯 (naive B ...

  9. 机器学习-朴素贝叶斯-垃圾邮件

    一:朴素贝叶斯算法概述 1:朴素贝叶斯(Naïve Bayes, NB)算法,是一种基于贝叶斯定理与特征条件独立假设的分类方法.朴素:特征条件独立:贝叶斯:基于贝叶斯定理.属于监督学习的生成模型,实现 ...

最新文章

  1. 打通Devops的Scrum敏捷工具
  2. cvr存储服务器的优势,CVR存储设备的结构与优势分析
  3. UA MATH566 统计理论5 假设检验:p值
  4. vb6实现union数据结构_数据结构与算法——并查集(不相交集合)
  5. 获取repeater控件模版列中的控件
  6. Composer Player 属性设置
  7. 互联网运营数据分析(2):转化分析
  8. 微软:四种方法暂时屏蔽IE最新漏洞
  9. matlab聚合矩阵,c#和ILNumerics与Matlab中最有效的矩阵聚合方式
  10. jsp后台页面登录html代码,炫酷的登录jsp页面完整代码
  11. python游戏小抄
  12. js左右弹性滚动对联广告代码
  13. 使用mysql打开什么文件格式_dbf是什么文件怎么打开
  14. OOK调制解调的FPGA实现,求Verilog代码
  15. ubuntu安装nvidia显卡驱动注意事项以及关闭ubuntu内核自动更新
  16. 支配节点树及其构建算法 Dominator-tree and its Construction Algorithms
  17. 开启愉快的路由之旅:广工校园网Wifi
  18. Ros yocs_velocity_smoother 保姆级部署教程
  19. Java使用AES加解密
  20. 重磅!RTK差分共享猫APP即将开源!!

热门文章

  1. 关于Bean标签的一些属性以及getBean()方法
  2. Unity3D——粒子光环
  3. Linux 直接修改UTC时间
  4. 机械转码日记【21】list使用及list的模拟实现
  5. linux安装kde桌面环境,Arch Linux桌面环境(KDE Plasma)安装教程
  6. class org.springframework.scheduling.quartz.CronTriggerBean
  7. Java基础-----面向对象
  8. 【机器学习算法】关联规则-1 关联规则的概念,Apriori算法,实例和优缺点
  9. 今天开始学习用vs.net开发smartphone软件
  10. win10的c盘空间越来越小的解决办法