`
hqman
  • 浏览: 363006 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

贝叶斯过滤技术

阅读更多

   贝叶斯被誉为最有效的反垃圾邮件技术,有效过滤率达到98%,网络上有些这样的资料,但不是比较晦涩就是语焉不详,故本文希望能比较通俗,同时也更全面介绍此项技术。

       [1]-为引用资料

 概述

 

Thomas Bayes(1702-1763), 斯·贝叶斯是一位英国牧师数学家,1742年成为英国皇家学会会员176347日逝世,1763年,他发表了贝叶斯统计理论,即根据已经发生的事件预测事件发生的可能性,贝叶斯理论设:如果事件的结果不确定,那么量化它的唯一方法就是事件的发生概率。如果过去试验中事件的出现率已知,那么根据数学方法可以计算出未来试验中事件出现的概率。贝叶斯定理可以用一个数学公式表达。即贝叶斯公式。[1]

 

       反垃圾邮件是具有相当难度的事情,垃圾邮件每天都在增加和变化。据Radicati估计2007年,垃圾邮件的比例将达到70%。现在的垃圾邮件发送者变得更加狡猾,采用静态反垃圾邮件技术很难防范。垃圾邮件发送者只要简单的研究一下现在采用了哪些静态反垃圾邮件,然后相应的改变一下邮件的内容或发送方式,就可以逃避检查了。

       因此,必须采用一种新的技术来克服静态反垃圾邮件的弱点,这种技术应该对垃圾邮件发送者的各种伎俩了如指掌,还要能适应不同用户对于反垃圾邮件的个性化需求。这种技术就是贝叶斯过滤技术。

 

 贝叶斯过滤技术的工作原理

       根据贝叶斯理论,根据已经发生的时间可以预测未来事件发生的可能性。将该理论运用到反垃圾邮件上:若已知某些字词经常出现在垃圾邮件中,却很少出现在合法邮件中,当一封邮件含有这些字词时,那么他是垃圾邮件的可能性就很大。

 

       1创建基于字词符号的贝叶斯数据库

       用户首先需要对贝叶斯进行培训,即将邮件分类为垃圾邮件(用户不想要的)和正常邮件(用户想要的),贝叶斯将提取这些邮件样本中主题和信体中的独立字串,包括字词(word)和符号(token)(如$IP地址,域名等),并建立相应的数据库。

 

       2创建贝叶斯概率库

       统计出每个字串在垃圾邮件中出现的概率以及在正常邮件中出现的概率,然后根据公式计算出邮件中含某字串则为垃圾邮件的概率。例如:在3000封垃圾邮件样本中"mortgage"(抵押)出现了400次,而在300封正常邮件中这个词出现了5次,那么其对应的垃圾概率为0.8889[400/3000]/[5/300+400/3000])。[2]

 

       3创建个性化的贝叶斯库(最符合您公司需求的贝叶斯库)

       由于每个公司对所收到的邮件偏好是不同的,例如,某个金融类公司在正常邮件中可能经常用到"mortgage"这个词,如果使用静态的关键词过滤,就可能产生很多误判。如果采用贝叶斯过滤,在对贝叶斯进行培训的时候,将该公司的合法邮件(自然,很多都包含了"mortgage"这个词)分类为正常邮件。这样,垃圾邮件的识别率将更高,同时也使得误判率变得很低。

       有些反垃圾邮件软件使用了比较初级的贝叶斯过滤机制,如outlookfoxmail等。他们采用的是通用化的贝叶斯数据库。这种贝叶斯不需要进行培训,但有两个明显的弱点:

       ◘ 如果采用通用化的贝叶斯过滤则很容易被专业的垃圾邮件发送者攻破从而绕过检查,但是如果采用个性化的贝叶斯,则他们很难攻破。

       ◘ 通用化的贝叶斯与您公司的邮件过滤要求不符,因此过滤效果通常不明显,并且可能产生较高的误判。

       除了学习好的邮件之外,贝叶斯还应学习垃圾邮件,这些垃圾邮件样本应该包括了大量的已知垃圾邮件样本以及最新的变化了的垃圾邮件样本。这样才能达到最好的过滤效果,对最新的垃圾邮件样本的学习通常需要两周左右的时间。

      

4贝叶斯过滤器的处理过程。

       贝叶斯过滤器学习了垃圾邮件样本及正常邮件样本后,每个字串代表的垃圾概率就被计算出了。

       一封新的邮件到达时,这封邮件的内容将被分成字串(词或符号)。依据数据库中这些字词的概率通过公式[3]进行计算,贝叶斯将推算出这封邮件是垃圾邮件还是正常邮件。通常当贝叶斯计算出的垃圾邮件可能性高于某个数值(阈值)时,比如0.9,就判定这封邮件是垃圾邮件。[4]

      

 贝叶斯过滤的优点

――20035BBC专题报道称,贝叶斯可以达到99.7%的垃圾邮件识别率,同时误判率极低。是目前最有效的反垃圾邮件技术。

      

       贝叶斯过滤技术对邮件的所有内容进行分析,不仅仅是其中的某个关键词,而且他能判别邮件是垃圾邮件还是正常邮件。例如:包含“free”“cash”“发票”字样的邮件不一定是垃圾邮件,如果采用关键字过滤技术,显然难以达到理想的效果。而贝叶斯呢,即考虑了这些词在垃圾邮件中出现的概率又考虑了它在正常邮件中的概率,综合考虑这些因素才做出判断。可以说,贝叶斯具有一定的智能,它对邮件中的关键词汇能综合的进行评判,可以把握“好”与“坏”之间的平衡。显然,这种技术远远高于非10的静态过滤技术。

 

       贝叶斯过滤技术具备自适应功能――通过学习新的垃圾邮件及正常邮件样本,贝叶斯将能对抗最新的垃圾邮件。并且对变体字有奇效。比如,垃圾邮件发送者开始使用"f-r-e-e"来代替“free”这样能够绕过关键字检查,除非"f-r-e-e"被加到新的关键字中。对贝叶斯而言,当它发现邮件中含有"f-r-e-e"时,由于正常邮件中从来没有发现这个词,因此他是垃圾邮件的可能性将急剧增加,"f-r-e-e"这个新词无疑成了垃圾邮件的指示器。在比如,垃圾邮件中用5ex代替sex,贝叶斯也推算出他是垃圾邮件的可能性也急剧增加。

 

       贝叶斯过滤技术更加个性化。他能学习并理解用户对邮件的偏好。如前所述,‘mortgage’抵押一词对软件公司而言意味者垃圾,但对金融类公司则意味着好邮件。贝叶斯能根据用户的这种偏好进行处理。

 

       贝叶斯过滤技术支持多语种或者说与编码无关。对于贝叶斯而言,他分析的是字串,无论他是字、词、符号、还是别的什么,当然更与语言无关。

 

       贝叶斯过滤器很难被欺骗。垃圾邮件发送高手通常通过减少垃圾词汇(如freeviagra、发票)或者在信中多掺一些好的词汇(如合同、文件)来绕过检查一般的邮件内容检查,但由于贝叶斯具有的个性化色彩,要想成功的绕过贝叶斯的检查,他就不得不对每个收件人的偏好进行研究,这简直是“不可能完成的任务”。垃圾邮件发送者无法容忍的。若采用变化字,则如前所述贝叶斯判断其为垃圾邮件的可能性反而增加。

 

 如何才能培训出好的贝叶斯过滤器

       贝叶斯的样本数并不是越多越好,但一般需要超过一定的数量才能工作。要培训出比较好的贝叶斯,有如下建议:

       不要过多的重复分类某一封或某一类邮件,以免概率失真(失衡),要分批分时间多次进行,这样样本分布广泛。

       对要分类的邮件应认真看完,不要瞟一眼就分类。

       如果邮件是垃圾邮件,但是和您公司的邮件或者和正常的邮件很接近,最好不要分类这种邮件。

       如果这封邮件不是垃圾邮件,是那种在网络上订阅的邮件,如淘宝、当当等,最好把发件人加入白名单,而不要分类到贝叶斯中。

       避免将哪些含有随机字词(贝叶斯中毒策略)的邮件进行分类。虽然新的贝叶斯系统提供了相应的保护机制。

       样本的文字篇幅极大,请避免。(样本提供的数据将过于复杂);样本的文字篇幅极少,或者只有图,请避免。(贝叶斯针对的是字词概率)

 

       好的贝叶斯通常需要两周左右的培训时间,虽然需要花些时间和精力,但是机遇总是惠顾勤奋的人,这些努力都是值得的

分享到:
评论

相关推荐

    贝叶斯过滤技术交流

    本文档将从算法步骤、算法举例、模块划分3个角度介绍贝叶斯过滤技术。

    基于ASP+贝叶斯过滤技术的反垃圾邮件管理系统设计与实现.zip

    资源名字:基于ASP+贝叶斯过滤技术的反垃圾邮件管理系统设计与实现(源码+文档)_asp_贝叶斯过滤技术_反垃圾邮件管理系统.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百...

    使用朴素贝叶斯过滤垃圾邮件样本

    总结来说,"使用朴素贝叶斯过滤垃圾邮件样本"涉及的关键知识点包括:机器学习基础,朴素贝叶斯算法,文本预处理,特征表示(如词袋模型,TF-IDF),数据集划分,模型训练,概率计算,以及模型评估。在这个过程中,...

    贝叶斯公式在处理垃圾邮件中的应用

    为了有效应对这一挑战,研究人员开发了多种反垃圾邮件的技术,其中贝叶斯过滤技术因其高效性和灵活性而受到广泛关注。 #### 二、垃圾邮件概述与反垃圾邮件技术现状 ##### 2.1 垃圾邮件定义 垃圾邮件通常指的是...

    基于贝叶斯算法的垃圾邮件过滤技术的研究与改进

    ### 基于贝叶斯算法的垃圾邮件过滤技术的研究与改进 #### 一、引言 随着互联网的快速发展及电子邮件的广泛应用,垃圾邮件已成为一个不容忽视的问题。据统计,中国互联网用户平均每周收到的垃圾邮件数量已连续多次...

    基于贝叶斯算法的JavaMail垃圾邮件过滤实现

    贝叶斯过滤算法的核心思想是通过对垃圾邮件中的关键字进行统计分析,建立一个概率模型来预测新邮件是否属于垃圾邮件。具体地,该算法使用贝叶斯定理来计算给定一系列词语的情况下,邮件是垃圾邮件的概率。贝叶斯定理...

    朴素贝叶斯过滤垃圾邮件源码及数据

    朴素贝叶斯过滤垃圾邮件是一种基于概率统计的机器学习方法,广泛应用于文本分类,特别是电子邮件的筛选。在本案例中,我们看到一个Python实现的朴素贝叶斯算法,用于识别和过滤垃圾邮件。源代码文件"bayes.py"很可能...

    贝叶斯垃圾邮件过滤

    为了提高过滤器的性能和准确性,还可以引入其他策略,如平滑技术(如拉普拉斯平滑)来处理未在训练集中出现过的特征,以及N-gram模型来考虑连续的词序信息。 总结来说,贝叶斯垃圾邮件过滤是一种基于概率的智能方法...

    VC++ 贝叶斯垃圾邮件过滤程序

    总的来说,这个项目不仅涉及到了贝叶斯过滤理论,还涵盖了MFC的使用、文本预处理、数据存储和用户交互等多个方面,对于想要深入理解和实践垃圾邮件过滤技术的开发者来说,是一个极好的学习资源。同时,它也展示了...

    基于文本的贝叶斯邮件过滤器

    贝叶斯过滤器是统计学方法在信息处理中的应用,尤其在自然语言处理(NLP)中广泛使用。 首先,我们要理解贝叶斯定理。贝叶斯定理是一种概率理论,它允许我们根据现有证据或先验知识更新对事件发生的概率估计。在...

    一种改进的贝叶斯邮件过滤算法

    贝叶斯过滤算法是一种广泛应用于垃圾邮件过滤领域的技术。该算法基于贝叶斯定理,利用概率统计的原理来判断一封邮件是否为垃圾邮件。它的核心思想是通过分析邮件内容中各个词汇出现的概率,结合已知的垃圾邮件和非...

    贝叶斯公式的经验之谈.pdf

    - 文件中提到贝叶斯过滤技术用于识别垃圾邮件。通过分析邮件内容中的关键词概率分布,构建贝叶斯概率模型,可以计算出一封邮件是垃圾邮件的概率。这种方法高效且准确,能够有效区分垃圾邮件和正常邮件,减少不必要...

    贝叶斯公式的经验之谈.doc

    贝叶斯过滤技术利用关键词的统计概率分布来识别垃圾邮件。通过学习大量的邮件样本,构建一个概率模型,计算一封邮件是垃圾邮件的概率。如果该概率超过某个阈值,则将邮件标记为垃圾邮件。 4. **统计推断**: ...

    毕业设计:基于ASP的反垃圾邮件管理系统的设计(源代码)

    通过黑名单、白名单、主题关键字、贝叶斯过滤技术完成客户端的垃圾邮件过滤,每个过滤规则在对邮件进行处理判断后,若可以确定邮件的属性,即为垃圾邮件或非垃圾邮件就可以直接把邮件显示在垃圾邮件夹和收件夹。...

    利用朴素贝叶斯过滤垃圾短信.zip

    总的来说,利用朴素贝叶斯过滤垃圾短信涉及数据预处理、模型训练、特征表示和概率计算等步骤。通过不断优化和调整,我们可以构建一个有效的垃圾短信过滤系统,帮助用户自动筛选出重要信息,屏蔽不必要的干扰。

    贝叶斯公式的经验之谈.docx

    在邮件过滤方面,贝叶斯过滤技术通过分析邮件中的关键词概率分布,构建概率模型来判断邮件是否为垃圾邮件。 总的来说,贝叶斯公式是理解和解决实际问题的强大工具,尤其是在数据有限或需要考虑不确定性的环境中。...

    基于ASP的反垃圾邮件管理系统(源代码+说明报告)

    研究了三种过滤垃圾邮件的方法,分别是黑白名单技术、主题关键字过滤技术和贝叶斯策略,对这三种技术的设计方法做了说明,重点介绍了贝叶斯过滤技术的设计原理和实现步骤。最后总结了这几种过滤技术的不足之处和设计...

Global site tag (gtag.js) - Google Analytics