China Open source community
站内导航:
 
 
 
当前位置: 首页 >> 网络协议与安全 >> 垃圾邮件和贝叶斯过滤算法
 
 

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

作者:      来源:zz     发表时间:2007-12-14     浏览次数:      字号:    

中国源码网内相关主题链接
  • 贝叶斯算法在反垃圾邮件中的应用
  • 贝叶斯算法介绍
    一. 贝叶斯过滤算法的基本步骤

    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
    由此可推出该邮件为非垃圾邮件

    编辑 webmaster

     
     
     
    评论
     
    请问一下,大量已知的垃圾邮件和非垃圾邮件可以怎么搜集到?谢谢 请问一下,大量已知的垃圾邮件集和非垃圾邮件集可以怎么搜集?谢谢
     
    发表
     
    姓名: QQ:
    性别: MSN:
    E-mail: 主页:
    评分: 1 2 3 4 5
    评论内容:
    验证码:
      
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •  
    中国源码网 - WWW.YUANMA.ORG - 中国开放源代码社区