怎么用贝叶斯定理来开发一个过滤器?(只要提供些线索就好了)

ds09002612 2004-10-31 10:31:32
在网上零碎的看到说检测垃圾邮件可以用贝叶斯定理来开发一个过滤器, 但我怎么也找不到相关的技术文档, 是不是有证明个东西啊? 如果不是共享的, 那我也就死心了,
请有知道相关情况的大虾们告诉我一点这方面的线索, 谢谢, 急用, 再次感谢

...全文
142 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
还则我 2004-11-01
  • 打赏
  • 举报
回复
佩服 佩服 在下白学了4年数学
gks_cn 2004-11-01
  • 打赏
  • 举报
回复
有关贝叶斯过滤器最好的也是被引用最多的文章就是去年8月Paul Graham所写的“反垃圾邮件计划”。

Graham说,利用这个过滤器“每1000封垃圾邮件一般只会漏掉5封,误报率为零”。实际上,Graham的这个过滤器还没有最终完成,如果你读过他写的第一篇和第二篇论文,就会发现他在第二版中增加了一些功能,大大改善了过滤器的性能。

要开发这样一个过滤器,就需要对垃圾邮件和非垃圾邮件的样本组进行分析,将其中的字符信息拆开来做一些标记。做标记时有几条简单的规则:邮件的上下款保留;感叹词保留;句号和逗号保留,如果它们出现在两个数字之间的话;价格区间(比如20美元~25美元)需要改写成两个单独的标记(比如20美元和25美元);如果标记出现在标题域,如“收件人”、“发件人”和“主题”,或者出现在地址栏,则标记之前需要增加一个标识符与邮件内容本身的标记区分开来(例如,在主题中出现的标记“扩充”就得写成“主题*扩充”)。

对一个样本组中所有的标记出现的次数进行计数,就可以利用贝叶斯定理推导出每个标记在一封垃圾邮件或非垃圾邮件中出现的概率表。需要指出的是,Graham把非垃圾邮件的标记的权重设置为垃圾邮件标记的两倍,这样可以让误报率降至最低。

一旦有邮件到达,就有相应的标记被提取出来,利用出现概率最高的15个标记来计算该邮件是垃圾邮件的可能性。如果计算所得的概率超过了阈值(Graham定为0.9),则该邮件可以被基本确定为垃圾邮件。

Graham过滤器的第二版又做了很多改进,主要是增加了标记的范围,并可将这些标记与标记表中各项的垃圾概率进行比较。

那么,它的性能到底如何呢?Graham说:“从2002年12月10日到2003年1月10日,我一共收到了1750封垃圾邮件,没被拦截住的只有4封。这就是说过滤性能高达99.75%。”确实不错。

贝叶斯过滤器为什么能够工作得这么好呢?因为贝叶斯过滤器纯粹根据统计学规律运作,比起那些需要分析邮件句法或内容含义的过滤器来显然要简单的多,而且可计算性强得多。更重要的是,这些标记完全可以由用户根据自己所接收的垃圾邮件和非垃圾邮件来创建,因而可以获得一种对用户来说独一无二的过滤器。这意味着垃圾邮件发送者根本无法猜测出你的过滤器是如何配置的,从而有效地阻截住各类垃圾邮件。

不过,尽管贝叶斯过滤器非常有效,但它仍需要进行优化才能真正完美。比如它可以结合“白名单”降低误报率,结合“黑名单”降低漏过率,还可以利用其他技术如源址认证使其成为更加精确的垃圾邮件过滤器。
wdong18 2004-10-31
  • 打赏
  • 举报
回复
首先我也不太清楚,不过贝叶斯定理在计算机领域尤其是人工智能领域的应用是很广泛的,过滤器也是机器学习中的概念。我想你可以在一些人工智能资料中找到答案。

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧