`
celebration
  • 浏览: 35148 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

垃圾邮件和贝叶斯过滤算法

阅读更多

贝叶斯算法介绍
一. 贝叶斯过滤算法的基本步骤

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)= P1(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)超过预定阈值时,就可以判断邮件为垃圾邮件。

二. 贝叶斯过滤算法举例

例如:一封含有“fa#gong”字样的垃圾邮件 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
由此可推出该邮件为非垃圾邮件

分享到:
评论

相关推荐

    使用朴素贝叶斯过滤垃圾邮件数据集

    总结来说,这个数据集提供了一个实践朴素贝叶斯算法的机会,帮助我们理解如何利用文本特征来区分垃圾邮件和非垃圾邮件,并评估模型的性能。通过处理这个任务,我们可以深入了解文本分类的基本步骤,以及朴素贝叶斯...

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

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

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

    基于贝叶斯算法的垃圾邮件过滤,可以运行!

    贝叶斯分类算法在垃圾邮件过滤中的应用

    在垃圾邮件过滤场景中,贝叶斯分类算法通常只考虑两个类别:垃圾邮件(\(c=1\))和正常邮件(\(c=0\))。因此,我们的目标是计算 \(P(c=1|d)\),即邮件属于垃圾邮件类的概率值。 #### 二、贝叶斯过滤的流程 贝叶斯...

    利用贝叶斯算法实现垃圾邮件分类

    贝叶斯算法通过计算邮件中各个特征出现的概率,以及这些特征出现在垃圾邮件和非垃圾邮件中的先验概率,来判断一封邮件是否为垃圾邮件。 在`bayes.py`中,我们可能首先会定义一个数据结构来存储词汇和它们在训练集中...

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

    贝叶斯过滤器是一种特殊的贝叶斯分类器,用于解决二元分类问题,例如判断一封邮件是否为垃圾邮件。其基本步骤包括: 1. **分词**:将邮件文本分割成一个个有意义的词语或短语。 2. **特征提取**:选择关键特征(如...

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

    贝叶斯过滤算法是一种广泛应用于垃圾邮件过滤领域的技术。该算法基于贝叶斯定理,利用...同时,结合多种技术和方法,例如遗传算法的引入,可以为传统的贝叶斯过滤算法带来新的活力,从而更好地服务于反垃圾邮件的斗争。

    项目实战-朴素贝叶斯算法实现垃圾邮件过滤源码及数据集.zip

    1、内容概要:本资源主要基朴素贝叶斯算法实现垃圾邮件过滤分类,适用于初学者学习文本分类使用。 2、主要内容:邮件数据集email,email文件夹下有两个文件夹ham和spam,其中ham文件夹下的txt文件为正常邮件,spam...

    贝叶斯过滤垃圾邮件算法的基本步骤参考.pdf

    贝叶斯过滤垃圾邮件算法的基本步骤参考 贝叶斯过滤垃圾邮件算法是一种基于概率论的机器学习算法,用于过滤垃圾邮件。该算法的基本步骤包括收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集,然后提取...

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

    考虑到规则过滤方法和贝叶斯过滤算法各自的优点,可以将二者结合起来创建一个更加高效的垃圾邮件过滤系统。初始阶段,可以预设一些基本的规则作为第一层过滤,之后再使用贝叶斯算法对剩余的邮件进行更深入的分析。...

    贝叶斯过滤垃圾邮件算法的基本步骤.pdf

    贝叶斯过滤垃圾邮件算法的基本步骤 ...在实际应用中,贝叶斯过滤算法可以与其他垃圾邮件检测算法结合使用,以提高检测率和减少误判率。同时,贝叶斯过滤算法也可以应用于其他领域,例如文本分类、spam detection 等。

    用贝叶斯分类器实现垃圾邮件分类器(C版本和Java版本)

    在信息技术领域,垃圾邮件过滤是一项重要的任务,它关系到用户的信息安全和工作效率。本文将深入探讨如何利用贝叶斯分类器来构建一个垃圾邮件分类器,分别介绍C语言和Java两种编程语言的实现方法,以及Java版本中...

    贝叶斯分类算法在垃圾邮件过滤中的应用.pdf

    为了应对这一挑战,各种反垃圾邮件技术应运而生,其中贝叶斯分类算法因其高效性和准确性,成为垃圾邮件过滤的重要手段。 贝叶斯分类算法基于概率理论,尤其在朴素贝叶斯分类的形式下,假设文本特征之间相互独立。...

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

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

    基于云计算的贝叶斯分类算法在过滤垃圾邮件中的研究.pdf

    总结来说,这篇研究论文提出了一个基于云计算的垃圾邮件过滤解决方案,利用贝叶斯分类算法和Hadoop框架的优势,有效地解决了传统方法的局限性,提升了过滤系统的性能和扩展性。这对于应对日益严重的垃圾邮件问题具有...

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

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

Global site tag (gtag.js) - Google Analytics