一、 贝叶斯垃圾邮件过滤算法理论介绍
二、 贝叶斯过滤算法的基本步骤
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
(注明:在实际应用中不可以将概率指定为1或者0,可以用相关的高概率或者低概率值来代替。)
当新到一封含有“功律”的邮件时,我们可得到两个TOKEN串:功 律
查询哈希表 hashtable_probability 可得:
P (垃圾邮件 | 功) = 1
P (垃圾邮件 | 律) = 0
此时该邮件为垃圾邮件的可能性为:
P= ( 0*1 ) /[0*1+ ( 1-0 ) * ( 1-1 ) ] = 0
由此可推出该邮件为非垃圾邮件。
相关引用链接
1、http://techzone2008.spaces.live.com/blog/cns!50291023CCAB16A0!148.entry
2、http://blog.csdn.net/chaowang2008/archive/2006/05/18/744451.aspx
3、http://www.codeproject.com/useritems/BayesClassifier.asp
相关推荐
基于贝叶斯和遗传算法的垃圾邮件过滤算法,这是文献,不是源码,里面有相关原理说明,不是直接拿来就可以用的!
基于贝叶斯算法的垃圾邮件过滤,可以运行!
实验,较之目前流行的传统贝叶斯算法、K最近邻(NN算法和支持向量机SVM)算法,基于MapReduce的贝叶斯垃圾邮件过滤机制在召回率、查准率和精确率方面保持了较好的表现,同时降低了邮件学习和分类成本,提高了系统执行...
这是改进的朴素贝叶斯算法的垃圾邮件过滤算法,论文,希望对你的学习有帮助。
随着电子邮件的应用与普及,...缺点,通过引入分级的最小风险算法和对多项式和多重贝努利估计模型进行混合的方法分别对贝叶斯过滤器进 行了改进,并进行了实验。实验结果表明,改进后的贝叶斯过滤器具有了更好过滤效果
在第三次出现:"请输入m_switch的值(0 表示开始训练或 1表示启动反馈):",输入0,会对由垃圾邮件和正常邮件中提取的单词进行增益计算,以建立特征库。 至此,特征库和先验概率的计算已经完成。
贝叶斯邮件过滤源程序 1.实验报告 2.VC++实现的源程序
1、内容概要:本资源主要基朴素贝叶斯算法实现垃圾邮件过滤分类,适用于初学者学习文本分类使用。 2、主要内容:邮件数据集email,email文件夹下有两个文件夹ham和spam,其中ham文件夹下的txt文件为正常邮件,spam...
基于MapReduce的贝叶斯垃圾邮件过滤机制,可以看看,各位
是一篇关于怎么使用贝叶斯算法对广告邮件进行过滤
利用最小风险贝叶斯算法对邮件进行过滤。包括三篇文章: 基于贝叶斯算法的垃圾邮件过滤技术的研究与改进; 基于Milter实现的中文垃圾邮件过滤系统; 基于认知学习的最小风险贝叶斯邮件过滤算法;
基于贝叶斯算法的垃圾邮件过滤,曾志中,雷友珣,垃圾邮件过滤问题是Internet安全技术研究的一个重要的问题,而基于贝叶斯的垃圾邮件的分类方法在处理垃圾邮件上表现出了很高的准确�
贝叶斯网络学习算法――k2算法,对于学习数据挖掘的人有用的,涉及到了分类预测算法
贝叶斯分类算法在垃圾邮件过滤中的应用 研究贝叶斯算法的优点
然后要求EM算法对朴素贝叶斯算法要求条件独立性假设进行填补,最后利用朴素贝叶斯算法过滤邮件,提高分类准确性和稳定性。仿真实验结果表明,与传统的邮件过滤算法相比,该方法能够快速得到最优分类特征子集,大大...
基于加权贝叶斯的垃圾邮件过滤算法的改进 ,王平,,随着互联网的发展,垃圾邮件日益泛滥,严重影响了人们正常的生产生活。Gary Robinson提出的基于贝叶斯理论的过滤算法简单高效,因此��
机器学习实战中,使用朴素贝叶斯过滤垃圾邮件Demo的样本数据。
基于贝叶斯算法的JavaMail垃圾邮件过滤实现
采用贝叶斯正则化算法提高 BP 网络的推广能力。在本例中,我们采用两种训练方法,即 L-M 优化算法(trainlm)和贝叶斯正则化算法(trainbr),用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中...