关于 贝叶斯 计算公式的一个问题
网络上流传的关于反垃圾邮件的贝叶斯算法大都和这篇类似。
但是里面的公式和作者举的例子却有冲突的地方:
公式如下:
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日