【发布时间】:2010-09-26 14:09:45
【问题描述】:
朴素贝叶斯过滤过滤垃圾邮件的效果如何?
我听说垃圾邮件发送者很容易通过填充额外的非垃圾邮件相关字词来绕过它们。贝叶斯过滤器可以使用哪些编程技术来防止这种情况发生?
【问题讨论】:
标签: naivebayes spam-prevention
朴素贝叶斯过滤过滤垃圾邮件的效果如何?
我听说垃圾邮件发送者很容易通过填充额外的非垃圾邮件相关字词来绕过它们。贝叶斯过滤器可以使用哪些编程技术来防止这种情况发生?
【问题讨论】:
标签: naivebayes spam-prevention
Paul Graham 是在 2002 年 8 月的原始文章 A Plan for Spam 中真正将贝叶斯垃圾邮件过滤理念引入整个网络的人。然后,大约一年后,his follow-up 介绍了许多迅速出现的问题。这些在该主题上仍然是非常出色的作品。
在第二篇文章中,Graham 提到了使用CRM114,它适用于比空格分隔的单词更广泛的模式集。 CRM114 很酷,但对垃圾邮件过滤系统没有太多实施帮助。
有用于贝叶斯垃圾邮件过滤的开源 powertools,例如 Death2Spam 和 SpamProbe。
我发现没有什么比通过 Gmail 帐户过滤邮件更有效了。狩猎愉快。
【讨论】:
我认为要击败您提到的那种垃圾邮件攻击,重要的不是学习方法,而是您训练的功能。我使用 Fidelis Assis 的 OSBF-Lua,这是一个非常成功的过滤器:它不断赢得垃圾邮件过滤器的竞赛。它使用贝叶斯学习,但我认为它成功的真正原因是三个原则:
它训练的不是单个单词,而是 稀疏二元组:一对由 0 到 4 个“无关”单词分隔的单词。垃圾邮件发送者必须将他们的消息放在某处,而稀疏的二元组非常擅长将它们排除在外。它甚至可以发现附件垃圾邮件!
它对邮件标头进行了额外的培训,因为垃圾邮件发送者很难掩饰这些标头。示例:源自您的网络且从不通过网外中继主机的消息可能不是垃圾邮件。
如果垃圾邮件过滤器对其分类的置信度较低,它会请求人工输入。 (在实践中,它会添加一个标头字段,上面写着“请在此消息上训练我”;人们可以忽略该请求。)这意味着随着垃圾邮件发送者发展新技术,您的过滤器也会发展以匹配。
这种技术组合非常有效。
免责声明:我与 Fidelis 合作重构了一些软件,以便将其用于其他目的,例如将普通邮件分类,或者可能有一天尝试检测博客 cmets 和其他地方的垃圾邮件。
【讨论】:
你是对的,朴素贝叶斯过滤器容易受到Bayesian poisoning的影响。
【讨论】:
我使用Popfile 不仅可以分类垃圾邮件,还可以将我的电子邮件分类,我发现它非常有效。它使用朴素贝叶斯过滤器。
【讨论】: