`
camel2099
  • 浏览: 46082 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

详解:贝叶斯算法(bayesian)在GCMail反垃圾邮件系统中的应用

阅读更多
贝叶斯在在反垃圾邮件的产品中应用很多,也是当前最好的反垃圾邮件算法,著名的卡巴斯基病毒库代码就是采用贝叶斯过滤算法,在目前的邮件系统中采用贝叶斯过滤算法的唯有GCMAil邮件服务器。下面我就对贝叶斯反垃圾邮件技术简单的介绍

一、 贝叶斯反垃圾邮件技术介绍
  贝叶斯是基于概率的一种算法,是Thomas Bayes:一位伟大的数学大师所创建的,目前此种算法用于过滤垃圾邮件得到了广泛地好评。贝叶斯过滤器是基于“自我学习”的智能技术,能够使自己适应垃圾邮件制造者的新把戏,同时为合法电子邮件提供保护。在智能邮件过滤技术中,贝叶斯(Bayesian)过滤技术取得了较大的成功,被越来越多地应用在反垃圾邮件的产品中。
二、 贝叶斯过滤算法的基本步骤

  1. 收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。
  2. 提取邮件主题和邮件体中的独立字符串,例如 ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。
  3. 每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。
  4. 计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)
  5. 综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式为:
  A 事件 ---- 邮件为垃圾邮件;
  t1,t2 …….tn 代表 TOKEN 串
  则 P ( A|ti )表示在邮件中出现 TOKEN 串 ti 时,该邮件为垃圾邮件的概率。
  设
  P1 ( ti ) = ( ti 在 hashtable_good 中的值)
  P2 ( ti ) = ( ti 在 hashtable_ bad 中的值)
  则 P ( A|ti ) =P2 ( ti ) /[ ( P1 ( ti ) +P2 ( ti ) ] ;

  6. 建立新的哈希表hashtable_probability存储TOKEN串ti到P(A|ti)的映射
  7. 至此,垃圾邮件集和非垃圾邮件集的学习过程结束。根据建立的哈希表 hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性。
  当新到一封邮件时,按照步骤2,生成TOKEN串。查询hashtable_probability得到该TOKEN 串的键值。
  假设由该邮件共得到N个TOKEN 串,t1,t2…….tn,hashtable_probability中对应的值为 P1 , P2 , ……PN , P(A|t1 ,t2, t3……tn) 表示在邮件中同时出现多个TOKEN串t1,t2……tn时,该邮件为垃圾邮件的概率。
  由复合概率公式可得
  P(A|t1 ,t2, t3……tn)=(P1*P2*……PN)/[P1*P2*……PN+(1-P1)*(1-P2)*……(1-PN)]
  当 P(A|t1 ,t2, t3……tn) 超过预定阈值时,就可以判断邮件为垃圾邮件。

三、 贝叶斯过滤算法举例
  例如:一封含有 “ 法无效字符轮无效字符功 ” 字样的垃圾邮件 A 和一封含有 “ 法无效字符律 ” 字样的非垃圾邮件 B 。 根据邮件 A 生成 hashtable_bad ,该哈希表中的记录为
  法: 1 次
  无效字符轮: 1 次
  无效字符功: 1 次
  计算得在本表中:
  无效字符法出现的概率为 0.3
  无效字符轮出现的概率为 0.3
  无效字符功出现的概率为 0.3
  根据邮件B生成hashtable_good,该哈希表中的记录为:
  法: 1 次
  律: 1 次
  计算得在本表中:
  法出现的概率为 0.5
  律出现的概率为 0.5
  综合考虑两个哈希表,共有四个 TOKEN 串:法无效字符论无效字符功无效字符律
  当邮件中出现“法”时,该邮件为垃圾邮件的概率为:
  P = 0.3/ ( 0.3 + 0.5 ) = 0.375
  出现“无效字符轮”时,该邮件为垃圾邮件的概率为:
  P = 0.3/ ( 0.3 + 0 ) = 1
  出现“无效字符功”时,该邮件为垃圾邮件的概率为:
  P = 0.3/ ( 0.3 + 0 ) = 1
  出现“无效字符律”时,该邮件为垃圾邮件的概率为:
  P = 0/ ( 0 + 0.5 ) = 0
  由此可得第三个哈希表 hashtable_probability ,其数据为:
  无效字符法: 0.375
  无效字符轮: 1
  无效字符功: 1
  律: 0
  当新到一封含有“功无效字符律”的邮件时,我们可得到两个TOKEN串:功 律
  查询哈希表 hashtable_probability 可得:
  P (垃圾邮件 | 功) = 1
  P (垃圾邮件 | 律) = 0
  此时该邮件为垃圾邮件的可能性为:
  P= ( 0*1 ) /[0*1+ ( 1-0 ) * ( 1-1 ) ] = 0
  由此可推出该邮件为非垃圾邮件。
四、总结
  叶斯过滤器为什么能够工作得这么好呢?因为贝叶斯过滤器纯粹根据统计学规律运作,比起那些需要分析邮件句法或内容含义的过滤器来显然要简单的多,而且可计算性强得多。更重要的是,这些标记完全可以由用户根据自己所接收的垃圾邮件和非垃圾邮件来创建,因而可以获得一种对用户来说独一无二的过滤器。这意味着垃圾邮件发送者根本无法猜测出你的过滤器是如何配置的,从而有效地阻截住各类垃圾邮件。
  不过,尽管贝叶斯过滤器非常有效,但它仍需要进行优化才能真正完美。比如它可以结合 “白名单”降低误报率,结合“黑名单”降低漏过率,还可以利用其他技术如源址认证使其成为更加精确的垃圾邮件过滤器。

相信很多关注反垃圾邮件的朋友都听说过贝叶斯过滤算法,但是对于贝叶斯过滤算法是如何过滤垃圾邮件却不是很了解,邮件群发网在此就列出它的过滤步骤,如下:

    1.收集大量的垃圾邮件和非垃圾邮件,建立不同的集。

    2.提取邮件主题和邮件体中的独立字串,然后获取频率。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。

    3.每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。

    4.计算每个哈希表中关键字符串出现的概率P=(某字频)/(对应哈希表的长度)

    5.综合考虑hashtable_good和hashtable_bad,推断出当新邮件中出现某个字串时,该新邮件为垃圾邮件的概率。

    6.建立新的哈希表 hashtable_probability

    7.至此,垃圾邮件集和非垃圾邮件集的学习过程结束。根据建立的哈希表 hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性。

在今天的反垃圾邮件技术中,则融合了以前大部分实用技术的精华,采用权重算法让判断垃圾邮件的工作更精确、更智能。但保守的人们还是不愿把规则设置的过严,因为没有任何一个用户希望把自己正规的邮件当作垃圾邮件处理掉。本文来源于网络。

    贝叶斯过滤是根据贝叶斯准则和贝叶斯定理,以已知垃圾邮件和非垃圾邮件为样本,来判断下一封邮件是垃圾邮件的概率的技术。跟普通的内容过滤技术不 同,贝叶斯过滤特征的来源比较多,可以采用邮件正文单词、邮件头信息(发送者、传递路径等)、邮件的HTML编码等作为判断的特征元素,因此对垃圾邮件的 判断能够做到更全面、更准确。更重要的是,贝叶斯过滤还具有自学习功能,能够学习分辨垃圾邮件与非邮件之间的差别,差别是用概率来表示的,并且自动应用到 以后的检测中。在收到几百封信件后,一个好的贝叶斯过滤器就可以自动识别各种垃圾邮件。
  使用贝叶斯算法来进行垃圾邮件过滤的基本步骤是:
  1.收集样本垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集;
  2.在垃圾邮件集和非垃圾邮件集中,提取特征来源中的独立字符串abc,并统计该字符串出现的次数(字频);针对垃圾邮件集和非垃圾邮件集,分别建立哈希表hash_spam和hash_normal,在哈希表中存储特征字符串abc字频的映射关系;
  3.计算每个哈希表中特征字符串abc出现的概率P=(该特征字符串的字频)/(对应哈希表的长度);
  4.综合考虑hash_spam和hash_normal,推断当新接收的邮件中出现特征字符串abc时,该新邮件为垃圾邮件的概率。
  如果:A事件 邮件为垃圾邮件;t1,t2 …….tn代表特征字符串;则P(Ati)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。
  设P1(ti)=ti在hash_spam中的值;P2(ti)=ti在hash_normal中的值;则P(Ati)=P2(ti)/[(P1(ti)+P2(ti)) ;
  5.建立新的哈希表hash_probability存储特征字符串ti到P(Ati)的映射;

(来自:GCMail邮件系统软件,http://www.9gcai.com/main/webbase/9gcai/2011/0705/612.html)
分享到:
评论

相关推荐

    贝叶斯算法(bayesian)介绍

    贝叶斯是基于概率的一种算法,是Thomas Bayes:一位伟大的数学大师所创建的,目前此种算法用于过滤垃圾...在智能邮件过滤技术中,贝叶斯(Bayesian)过滤技术取得了较大的成功,被越来越多地应用在反垃圾邮件的产品中。

    贝叶斯黑客方法:概率编程和贝叶斯推理Bayesian Methods for Hackers: Probabilistic Programming and Bayesian Inference

    使用Python从计算/理解第一,数学第二的角度介绍贝叶斯方法和概率编程。

    稀疏贝叶斯算法.zip

    下面将详细介绍稀疏贝叶斯算法的核心概念、实现原理以及在压缩感知中的应用。 一、稀疏贝叶斯学习(Sparse Bayesian Learning, SBL) 稀疏贝叶斯学习旨在寻找数据表示的最稀疏形式,其核心思想是假设模型参数...

    基于朴素贝叶斯算法bayesian数据分类预测,bayes分类预测,MATLAB代码 程序语言为matlab,程序可出分类效

    基于朴素贝叶斯算法bayesian数据分类预测,bayes分类预测,MATLAB代码。 程序语言为matlab,程序可出分类效果图,混淆矩阵图。 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。 ...

    数据分类实验(贝叶斯算法)

    总之,朴素贝叶斯算法以其简单高效的特点,在文本分类、垃圾邮件过滤、情感分析等领域有着广泛的应用。通过这次C++实现的数据分类实验,你不仅能掌握朴素贝叶斯算法的理论,还能获得实际编程经验,加深对机器学习...

    基于ASP的反垃圾邮件管理系统的设计(源代码+论文).zip

    总结,基于ASP的反垃圾邮件管理系统是一个集技术与实践于一体的项目,涵盖了Web开发、数据库设计、算法应用等多个方面。通过研究这个系统,不仅可以学习到ASP编程,还能深入了解反垃圾邮件的策略和技术,对提升网络...

    压缩感知稀疏贝叶斯算法

    SBL(Sparse Bayesian Learning,稀疏贝叶斯学习)是一种基于贝叶斯理论的压缩感知重建算法。SBL将信号的稀疏性作为先验知识,并通过迭代优化过程来更新信号的后验概率分布,从而实现信号的精确重构。这个过程通常...

    重庆大学 数据分析与数据挖掘课程作业 数据挖掘算法-贝叶斯分类分析方法-反垃圾邮件 共10页.ppt

    贝叶斯分析方法(Bayesian Analysis)提供了一种计算假设概率的方法,这种方法是基于假设的先验概率、给定假设下观察到不同数据的概率以及观察到的数据本身而得出的。其方法为,将关于未知参数的先验信息与样本信息...

    基于机器学习贝叶斯算法实现垃圾邮件分类python源码+项目说明+数据集.zip

    基于机器学习贝叶斯算法实现垃圾邮件分类python源码+项目说明+数据集.zip Python3 - pandas - 用于保存自定义测试集下训练邮件内的单词 - pyecharts>=1.0.0 - 个人喜欢用pyecharts来做图,如果你希望使用其他作图...

    朴素贝叶斯算法学习笔记2

    在这篇文章中,作者举出几个例子,证明了朴素贝叶斯算法在机器学习和其他实证应用中的优越性。 在朴素贝叶斯算法中,属性独立是指不同属性之间不存在相关性的假设。但是,在实际应用中,属性之间往往存在相关性,...

    基于高斯过程的Bayesian贝叶斯全局优化matlab仿真+代码仿真操作视频

    1.领域:matlab,Bayesian贝叶斯全局优化 2.内容:基于高斯过程的Bayesian贝叶斯全局优化matlab仿真+代码仿真操作视频 3.用处:用于Bayesian贝叶斯全局优化编程学习 4.指向人群:本硕博等教研学习使用 5.运行...

    贝叶斯算法

    在数据科学领域,这种算法被广泛应用,特别是在文本分类、垃圾邮件过滤、医学诊断和推荐系统等场景。 在weka这款强大的数据挖掘工具中,我们可以直观地操作和理解贝叶斯算法。Weka提供多种贝叶斯网络分类器,如...

    数据挖掘实验-C++实现贝叶斯Bayesian

    在数据挖掘中,贝叶斯算法常用于分类任务,如垃圾邮件过滤、文本分类和医学诊断等。它的优势在于可以处理高维数据,并且在处理稀疏数据时表现良好。 首先,我们要理解贝叶斯分类器的基本工作原理。在训练阶段,我们...

    基于Asp的反垃圾邮件管理系统源码.zip

    【标题】"基于Asp的反垃圾邮件管理系统源码.zip" 涉及的主要知识点是ASP(Active Server Pages)技术,这是一种由微软开发的服务器端脚本环境,用于创建动态网页或Web应用程序。该系统旨在解决日益严重的垃圾邮件...

    bp神经网络实例:贝叶斯、梯度下降算法

    ### bp神经网络实例:贝叶斯、梯度下降算法 ...通过这些实例的学习,可以帮助我们更好地理解这两种算法的工作原理及其在实际应用中的效果,从而在实际项目中更加灵活地选择合适的训练方法来提高模型的性能和泛化能力。

    贝叶斯算法深度学习手动画图识别_bayes_

    贝叶斯算法是一种基于概率论的统计方法,它在机器学习领域中被广泛应用于分类问题。在这个场景中,我们讨论的是使用贝叶斯算法进行深度学习的手动画图识别。手写数字识别是一个经典的问题,例如在MNIST数据集中,...

    Bayesian:贝叶斯电子邮件预测

    在IT领域,尤其是在数据分析和机器学习中,"Bayesian:贝叶斯电子邮件预测"是一个重要的应用,它结合了贝叶斯定理与自然语言处理技术,用于识别和分类电子邮件,如垃圾邮件过滤。在此,我们将深入探讨这个主题,并...

    Bayesian Filter.贝叶斯(Bayesian)滤波器的C++类库

    贝叶斯滤波是一种在统计推理中广泛应用的算法,它基于贝叶斯定理来更新对未知变量的估计。在IT行业中,特别是在信号处理、控制理论、机器学习和数据分析等领域,贝叶斯滤波器是解决不确定性问题的关键工具。本项目...

Global site tag (gtag.js) - Google Analytics