您的位置:首页 > 其它

关于 贝叶斯 计算公式的一个问题

2005-02-22 21:05 525 查看
关于 贝叶斯 计算公式的一个问题





网络上流传的关于反垃圾邮件的贝叶斯算法大都和这篇类似

但是里面的公式和作者举的例子却有冲突的地方:
公式如下:
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)];

作者的例子如下:
例如:一封含有"F L G"字样的垃圾邮件 A
和 一封含有"法律"字样的非垃圾邮件B
根据邮件A生成hashtable_ bad,该哈希表中的记录为
F:1次
L:1次
G:1次
计算得在本表中:
法出现的概率为0。3
轮出现的概率为0。3
功出现的概率为0。3
根据邮件B生成hashtable_good,该哈希表中的记录为:
法:1
律:1
计算得在本表中:
法出现的概率为0。5
律出现的概率为0。5
综合考虑两个哈希表,共有四个TOKEN串: F L G 律
当邮件中出现"法"时,该邮件为垃圾邮件的概率为:
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;

上述矛盾的地方在于:

P(A|ti)= P1(ti)/[(P1(ti)+ P2(ti)];

上面黑体的P1(ti)是 P1(ti)=(ti在hashtable_good中的值)

而:
P=0。3/(0。3+0。5)=0。375
0.3确是: P2(ti)=(ti在hashtable_ bad中的值)


文章转载多了,都不知道原作者是谁!不知道大家怎么看这个问题。

本来想找英文的贝叶斯算法,却发现 贝叶斯的 应用是如此的广泛,
其中可能小叮咚的智能问答也能用上。
毕竟:通过分析过去的事实,能预测未来的事情,多么美好!

作者:田春峰
于成双成对节:2月22日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: