您的位置:首页 > 其它

贝叶斯过滤算法的基本步骤

2013-07-20 23:26 253 查看
现有邮件过滤技术较为成熟的技术算法之一!

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

二. 贝叶斯过滤算法举例

例如:一封含有“法 轮 功”字样的垃圾邮件 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

由此可推出该邮件为非垃圾邮件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  贝叶斯算法