科普文:贝叶斯过滤器判定垃圾邮件

news2024/11/21 2:38:57

简介

        贝叶斯分类的运作是借着使用标记(一般是字词,有时候是其他)与垃圾邮件、非垃圾邮件的关连,然后搭配贝叶斯推断来计算一封邮件为垃圾邮件的可能性。

        贝叶斯垃圾邮件过滤是非常有威力的技术,可以修改自己以符合个别使用者的需要,并且给予较低的垃圾邮件侦测率,让使用者可接受。

发展历史

        第一个已知使用贝叶斯分类的邮件过滤是Jason Rennie的iFile,在1996年释出。这个程式可以排序邮件并放到目录。第一个关于贝叶斯垃圾邮件过滤的学术出版是由Sahamietal.在1998年所写。之后很快就被应用到商用的垃圾邮件过滤器上。然而,在2002年,Paul Graham大大地加强了假阳性的机率,所以它可以作为一个简单的垃圾过滤器来使用。

        根植于此技术的变种技术相继在许多的研究工作与商业产品上被实作出来。许多流行的邮件客户端都实作了贝叶斯垃圾邮件过滤。使用者也可以安装其他的邮件过滤程式。服务器端的邮件过滤器,像DSPAM、spamassassin、SpamBayes、Bogofilter与ASSP也都利用了贝叶斯邮件过滤技术,有时候这个功能直接内建在邮件服务器软件上。

朴素贝叶斯应用——垃圾邮件过滤_朴素贝叶斯分类器垃圾邮件过滤-CSDN博客

贝叶斯|垃圾邮件过滤器问题 - 知乎

https://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_two.html

https://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html

一般应用程式

 贝叶斯过滤被广泛地使用来鉴别垃圾邮件,但这项技术其实可以用来分类(或丛集)几乎任何种类的资料。它被使用在科学、医学与工程方面。例如普遍用来分类的程式:AutoClass,它可以根据可能非常微小到难以察觉的光谱特征来分类星星。最近甚至有人推测大脑可能也使用贝叶斯方法来为知觉刺激做分类并决定行为回应。

1、设置“先验概率”

        首先,电脑在对收到的邮件进行扫描之前,会为每个类别分配“这封邮件是垃圾邮件还是正常邮件”先验概率。设定双方各占0.5的概率作为先验概率。

2、扫描字句与条件概率设定

        设定一些在垃圾邮件里常见的字句及特征。但需要注意的是,“贴有其他网页的URL链接”这一特征,是电脑判断一封邮件疑似为垃圾邮件的关键点。实际上,大多垃圾邮件的目的确实是引诱读者访问其他网址,因而附带有URL的链接。因此,如果符合以下稳固关系,即:

        垃圾邮件→URL上有链接

        正常邮件→URL上无链接

        然而遗憾的是,多多少少会有那么几封垃圾邮件中并没有其他链接,而来自朋友和公司的邮件中却附带链接,这就难办了。在这种情况下,就必须使用概率推论相关的“可能性”判断方法,即:

        URL上有链接→可能是垃圾邮件

        URL上无链接→可能是正常邮件

        对于这种“可能性”进行数值评价,需要运用到贝叶斯推理。

        因此,就很有必要设定:垃圾邮件中附带URL的比例,以及正常邮件中附带URL的比例各占多少。为了方便计算,以下采用虚构的数据来进行简单运算。

        附带链接的条件概率

3、根据扫描结果,计算垃圾邮件的后验概率

        过滤器扫描完邮件后得到的结论是“附带链接”。此时,就不必再考虑“无链接”的两种可能性,只需要考虑剩余的两种可能性。

        可能性被限定为两种

        恢复标准化条件(相加之和为1)之后,通过这张图可以计算出后验概率为:

在有链接的情况下,

(垃圾邮件的后验概率):(正常邮件的后验概率)

        =0.5×0.6:0.5×0.2

        =0.6:0.2

        =3:1

        =3/4:1/4

        所以,过滤器判断出

(附带链接的垃圾邮件的后验概率)=3/4=0.75

        在扫描之前,垃圾邮件的概率被设定为0.5;而通过扫描发现链接之后,垃圾邮件的概率上升到了0.75。

扫描前与扫描后

        虽然垃圾邮件的可能性增大,然而,并不能就此判定它就是垃圾邮件。

        例如,尽管在过滤器上设定了“如果垃圾邮件的后验概率超过0.95,就自动把它移到垃圾箱里”,但有可能这封邮件并没有被移动到垃圾箱里,而是被划分到收件箱中。

4、获得第2条信息后,可能性随之变为8种

        即使在获得了“附带链接”的信息之后,也只能初步判断这封邮件极有可能是垃圾邮件,但不能确定它一定会被移动到垃圾箱中。

        因此,过滤器会通过添加其他的信息,再次进行判断。现在我们添加一个条件:把“幽会”一词作为关键词来进行检索。“幽会”一词出现的概率和不出现的概率如下:

        此时,过滤器在扫描邮件时,除了“附带链接”之外,又增加了含有“幽会”一词的条件,通过这两个条件来判别垃圾邮件。

        之前的两种可能性(是否附带链接)各自又分为4种可能性,所以共计有8种可能性,这8种可能性各自的概率如图:

        上述两种情况下,共有8种可能性,每一种的概率分别列出,如下图:

        在这里,类别的概率0.5也要乘进去。原因在于,它是异于独立性而存在的。而这一点是条件概率的特征。

5、从2个信息可以消去不可能的情况

        在设定上述概率的前提下,过滤器对邮件进行扫描,通过检查是否附带“链接”、是否含有“幽会”一词这两个条件,来计算该邮件为垃圾邮件的概率。

        以上8种可能性中,只有最上面的2种有可能是垃圾邮件的。于是,留下最上面的2个,排除掉下面的6个。

扫描之后只剩下两种可能性

        总之,过滤器所检查的邮件分为两种情况,一种是垃圾邮件(附带链接且含有“幽会”),一种是正常邮件(附带链接且含有“幽会”)。两者的比例关系,也就是图中的概率之比。因此,接下来通过标准化条件,可以计算出附带链接且含有“幽会”一词时的后验概率。

        (垃圾邮件的后验概率):(正常邮件的后验概率)

=0.5×0.6×0.4:0.5×0.2×0.05

=0.6×0.4:0.2×0.05

=0.24:0.01

=24:1

=24/25:1/25

        通过标准化条件运算,在附带链接且含有“幽会”一词的情况下,(垃圾邮件的后验概率)=24/25=0.96

        假若在垃圾邮件过滤器上设定一种情况:如果垃圾邮件的后验概率超过0.95,就自动把它移到垃圾箱。那么,在这种情况下,这封邮件就会被移动到垃圾箱,而不会出现在收件箱中。

6、贝叶斯推理的过程总结

        如图所示,使用2条信息推算出的结论,比起仅仅使用1条信息来推算,检索出垃圾邮件的概率会更高。同理,提供的信息越多,检索出的概率越高,推理结果就越精确。

        扫描之前与扫描两次之后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1863105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32HAL库--PWR低功耗实验(速记版)

电源控制(PWR)简介 电源控制部分(PWR)概述了不同电源域的电源架构以及电源配置控制器。PWR 的内容比较多,我们把它们的主要特性概括为以下 3 点: 电源系统:USB 稳压器、内核域(VCORE)、…

https基础概念

目录 1.什么是https 1.1.https概念 1.2.一些术语 2.https如何加密 2.1.使用对称加密 2.2.使用非对称加密 1.什么是https 首先,https不是http的复数形式 1.1.https概念 (1)产生背景 为什么会出现https,是因为http协议在传…

昇思25天学习打卡营第一天|快速入门

背景 华为组织了昇思25天学习营,从基础开始,提供算力支持,还是体验蛮好的。推荐大家报名参加。 学习内容 今天的内容是快速入门,很简单,当是复习基础内容了。 下载数据集》模型组网》模型训练》保存模型&#xff0c…

oracle 11g rac创建实例时发现只给一节点创建了实例 二节点没创建的处理方法

由于操作失误没有在二节点创建实例 删除数据库重新dbca建库 [oracleracdg1-1 dbs]$ dbca -silent -deleteDatabase -sourceDB rac11dg1 -sysDBAUserName sys -sysDBAPassword oracle_4U Connecting to database 4% complete 9% complete 14% complete 19% complete 23% …

electron+vue3+vite

1.创建工程 开源的electron构建脚手架:GitHub - electron-vite/electron-vite-vue: 🥳 Really simple Electron Vite Vue boilerplate. 1.使用命令创建工程(node版本在16上) npm create electron-vite 2.项目目录结构 2.安装依…

如何成为专业的 .NET 开发人员

如今,网上有大量信息,找到正确的信息并非易事。当你开始编程之旅并希望获得全面的指南时,最好寻找一个可以指导你完成整个过程的指南。 本文将帮助您制定一份路线图,告诉您什么是重要的以及什么是需要学习的. 一.一切从软件基础…

感谢我的辅导员—敬爱的罗老师

前言:快毕业了,想在毕业季感谢给予我帮助的老师,我的辅导员-罗老师是我最想感谢的大学老师。我不知道应该以什么样的方式去表达罗老师对我大学阶段的帮助,如果是直接发邮件,微信信息留言,可能在之后我和老师…

虚拟与现实的四种交互方式:复刻、增强、虚拟与混合。

经常有小伙伴搞不清楚这些概念,这次我就用极其浅显的语言和示例来说明这个问题。 "复刻现实"、"虚拟现实"、"增强现实"和"混合现实"是四种不同的技术概念,它们代表着不同的虚拟现实交互方式: 1. 复…

如何给小语种视频生成字幕

目前我们常看的有视频有中、英、日、韩这四种语言,如果我们想给其他的不常用的语言生成字幕怎么办?今天教大家如何给其他语言生成视频字幕文件 打开智游剪辑(zyjj.cc)搜索字幕生成,选择多语种那个就可以了 然后上传我们…

密码学及其应用 —— Java中的安全性

1. 简介 Java是一种广泛使用的编程语言,特别是在企业级解决方案中,比如使用J2EE、JavaBeans等技术。在Web开发领域,Java也有其应用,如客户端的applet和服务器端的Servlets/JSP。 1.1 Java的特点 面向对象:Java是一种面…

Keil 5编译出现misc.c(90): error: no member named ‘IP‘ in ‘NVIC_Type‘

no member named ‘IP’ in ‘NVIC_Type’ 我们在使用Keil 5编译器的AC6进行代码编译的使用,出现如下的错误; 当前的环境 编译器版本 Keil uVision5,V5.31.0.0; CMSIS-Core 版本V6…1.0; 采用GD32F407VK主芯片&…

[吃瓜教程]南瓜书第3章对数几率回归

第三章 对数几率回归 3.1 算法原理 对数几率回归(Logistic Regression)是一种统计方法,主要用于二分类问题。它通过拟合一个对数几率函数(logit function),即对数几率(log-odds)与…

微信小程序传统开发登录和云开发登录的区别

1. 传统开发登录流程 1. 用户端调用wx.login从微信服务器获取code; 2. 用户端用wx.request将获取的code传递给后端服务器; 3. 后端服务器将拿到的code传给微信服务器,换取openid和session_key; 4. 后端服务器将获取到的信息返回给用户端&#xff1b…

添加阈值滞后以实现平滑的欠压/过压锁定

电阻分压器将高压衰减到低压电路可以承受的水平,而不会过驱动或损坏。在电源路径控制电路中,电阻分压器有助于设置电源欠压和过压锁定阈值。这种电源电压鉴定电路存在于汽车系统、电池供电的便携式仪器以及数据处理和通信板中。 欠压锁定 (UVLO) 可防止…

Talking Web

1. curl 1.1 http curl http://127.0.0.1:80 向目标主机端口发送http请求 1.2 httphead curl -H “Host: 18ed3df584cd48328b5839443aa7b42b” http://127.0.0.1:80 1.3 httppath curl http://127.0.0.1:80/853c64cd218f80d0a59665666fb2ab80 1.4 URL编码路径 &#xff0…

论文 | WebGPT: Browser-assisted question-answering with human feedback

什么是WebGPT? WebGPT是对GPT-3微调后得出的模型,它可以像人类一样在线搜索问题的答案,并添加引用来源,更加准确地回答开放式问题。 在回答问题时,WebGPT可以通过浏览器进行搜索,在不同链接中寻找相关答案&#xff…

第5讲:建立自己的C函数库,js调用自己写的C/C++函数,并包含依赖C/C++第三方静态库。

在javascript中,Array有很多内置的功能,比如Array.map,Array.filter,Array.find等等,能用内置的功能就用内置的功能,最好不要自己实现一套,因为底层调用的可能压根就不是js语言本身,…

windows 安装 Kubernetes(k8s)

windows 安装 docker 详情见: https://blog.csdn.net/sinat_32502451/article/details/133026301 minikube Minikube 是一种轻量级的Kubernetes 实现,可在本地计算机上创建VM 并部署仅包含一个节点的简单集群。 下载地址:https://github.…

SSM 美食食谱分享推荐系统【附源码】

SSM 美食食谱分享推荐系统 本科毕业论文(设计)学术诚信声明 本人郑重声明:所呈交的毕业论文(设计),是本人在导师的指导下,独立进行 研究工作所取得的成果。除文中已经注明引用的内容外&#xf…

嵌入式应用开发ADC学习笔记(立创STMF4开发板)

目录 #ADC #ADC学习相关涉及概念介绍 #ADC相关概念介绍 #软件实现 #常用结构体配置介绍 #常用函数介绍 #软件编写,完成效果。 #ADC #ADC学习相关涉及概念介绍 数字信号(Digital Signal):数字信号用最为常见的二进制数来表示的信号&#x…