收藏 分享(赏)

贝叶斯过滤算法.doc

上传人:hskm5268 文档编号:6906905 上传时间:2019-04-26 格式:DOC 页数:4 大小:40KB
下载 相关 举报
贝叶斯过滤算法.doc_第1页
第1页 / 共4页
贝叶斯过滤算法.doc_第2页
第2页 / 共4页
贝叶斯过滤算法.doc_第3页
第3页 / 共4页
贝叶斯过滤算法.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、http:/ 贝叶斯过滤算法的基本步骤 1) 收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。 2) 提取邮件主题和邮件体中的独立字串例如 ABC32,¥234 等作为 TOKEN 串并统计提取出的 TOKEN 串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。 3) 每一个邮件集对应一个哈希表,hashtable_good 对应非垃圾邮件集而 hashtable_bad 对应垃圾邮件集。表中存储 TOKEN 串到字频的映射关系。 4) 计算每个哈希表中 TOKEN 串出现的概率 P=(某 TOKEN 串的字频)/ (对应哈希表的长度) 5) 综合考

2、虑 hashtable_good 和 hashtable_bad,推断出当新来的邮件中出现某个 TOKEN 串时,该新邮件为垃圾邮件的概率。数学表达式为: A 事件-邮件为垃圾邮件; t1,t2 .tn 代表 TOKEN 串 则 P(A|ti)表示在邮件中出现 TOKEN 串 ti 时,该邮件为垃圾邮件的概率。 设 Pg(ti)=(ti 在 hashtable_good 中的值) Pb(ti)=(ti 在 hashtable_ bad 中的值) 则 P(A|ti)= Pb(ti)/Pg( ti)+ Pb(ti); % P(A|ti)=P(Ati)/P(ti)=Pb(ti)/(Pg(ti)+Pb

3、(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

4、 ,t2, t3tn)表示在邮件中同时出现多个 TOKEN 串 t1,t2.tn 时,该邮件为垃圾邮件的概率。 由复合概率公式可得 P(A|t1 ,t2, t3tn)=(P1*P2*。 。 。*PN)/P1*P2*。 。 。*PN+(1-P1)*(1-P2)*。 。 。*(1-PN) % ?% P(A|x)= P(Ax)/P(x)=P(A*(t1 ,t2, t3tn)/P(x) ?% =P(A*t1 ,A*t2,A* t3A*tn)/P(t1 ,t2, t3tn)% P(A|x)= p(x|A)P(A)/p(x) = P(t1 ,t2, t3tn|A)P(A)/P(t1 ,t2, t3tn)当

5、 P(A|t1 ,t2, t3tn)超过预定阈值时,就可以判断邮件为垃圾邮件。 http:/anti- redmax 的大作贝叶斯算法介绍 ,对其中的公式有两个疑问一、“则 P(A|ti)表示在邮件中出现 TOKEN 串 ti 时,该邮件为垃圾邮件的概率。设P1(ti)=(ti 在 hashtable_good 中的值)P2(ti)=(ti 在 hashtable_ bad 中的值)则 P(A|ti)= P1(ti)/(P1(ti)+ P2(ti );”这个公式就是运用了 BAYES 公式吗?这和 Bayes 公式可不一样,按照书上的公式,应该是P(A|ti )= P1(ti)*P(垃圾邮件)

6、/(P1(ti)*P (垃圾邮件) + P2(ti)*P(非垃圾邮件);”我是不是可以这样理解P1(ti)=P (ti|非垃圾邮件) =非垃圾邮件中该词出现的频率P2(ti)=P (ti|垃圾邮件)=垃圾邮件中该词出现的频率二“假设由该邮件共得到 N 个 TOKEN 串,t1,t2.tn, hashtable_probability 中对应的值为P1,P2, 。 。 。 。 。 。PN,P(A|t1 ,t2, t3tn)表示在邮件中同时出现多个 TOKEN 串 t1,t2.tn 时,该邮件为垃圾邮件的概率。由复合概率公式可得P(A|t1 ,t2, t3tn)=(P1*P2*。 。 。 。PN)

7、/P1*P2*。 。 。 。 。PN+(1-P1)*(1-P2)*。 。 。 (1-PN)当 P(A|t1 ,t2, t3tn)超过预定阈值时,就可以判断邮件为垃圾邮件。 ”“复合概率公式”是怎么来的,我在几本概率论教材上都没看到这个公式,也没有看到“复合概率公式”这种说法A:关于第一个问题有一个假定,即我们不能预计 spam 与 ham 在整个邮件中出现的比例,这就像投硬币,每次每面出现的概率都是 0.5,所以这里假定 P(spam)=0.5,P(ham)=0.5 ,所以在分子分母中就同时约去了。我和你一样,当初也有这样的问题。至于第二个问题,给你举另一个例子,假如航班正午前正点的概率是 9

8、0,而下雨时正点的概率是 60,则下雨天航班正午前的正点率就是一个典型的复合概率问题。公式就是你写得那个,不过推导有点复杂。这里假定每个 token 在邮件中出现都是独立事件,其实并非如此,此处计算的是所有这些事件同时发生时的概率,就像上面的例子。Paul Graham - A Plan for Spam二 贝叶斯过滤算法举例 例如:一封含有“ * 功”字样的垃圾邮件 A 和 一封含有“法律”字样的非垃圾邮件 B 根据邮件 A 生成 hashtable_ bad,该哈希表中的记录为 法:1 次 轮:1 次 功:1 次 计算得在本表中: 法出现的概率为 0.3 轮出现的概率为 0.3 功出现的概

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报