假设您可以访问一个电子邮件帐户,其中包含过去几年收到的电子邮件的历史记录(~10k封电子邮件),分为2组
您如何处理创建可用于垃圾邮件检测的神经网络解决方案的任务 - 基本上将任何电子邮件分类为垃圾邮件或非垃圾邮件?
我们假设电子邮件提取已经到位,我们只需关注分类部分。
我希望得到回答的要点是:
此外,任何资源推荐或现有实施(最好是在C#中)都非常受欢迎
谢谢
修改
答案 0 :(得分:24)
如果你坚持使用NN ......我会为每封电子邮件计算一些功能
基于角色,基于单词和词汇的功能(我估计这些约为97):
您还可以根据格式添加更多功能:颜色,字体,尺寸,......使用。
这些措施大多可以在网上,论文中找到,甚至可以在维基百科上找到(它们都是简单的计算,可能基于其他功能)。
因此,使用大约100个功能,您需要100个输入,隐藏层中的一些节点数和一个输出节点。
输入需要根据您当前预先分类的语料库进行标准化。
我将它分成两组,一组作为训练组,另一组作为测试组,从不混合它们。也许是50/50比率的列车/测试组具有相似的垃圾邮件/非垃圾邮件比率。
答案 1 :(得分:8)
您是否已开始使用神经网络进行此操作?这听起来好像你使用Bayesian classification很好,这在Paul Graham的几篇文章中有很好的概述:
您可以访问的分类历史记录会使用非常强大的语料库来提供贝叶斯算法,您最终可能会获得相当有效的结果。
答案 2 :(得分:2)
一般来说,我的经验让我相信神经网络在这项任务中会表现出最好的表现,而且我肯定会推荐一些贝叶斯,正如Chad Birch建议的那样,如果这不是探索神经的玩具问题。网。
答案 3 :(得分:2)
Chad,你到目前为止得到的答案是合理的,但我会回复你的更新:
我开始使用神经网络,因为该项目的主要方面是测试NN方法如何用于垃圾邮件检测。
那么,你有一个问题:像这样的经验测试不能证明不合适。
你可能最好不要了解NN实际上做什么和不做什么,看看为什么他们对这种分类问题不是特别好。考虑它们的可能有用的方法是作为通用函数逼近器。但是对于在分类领域(这就是垃圾邮件过滤问题)中如何将它们组合在一起的一些想法,浏览像pattern classification这样的介绍文本可能会有所帮助。
如果你在看到它运行时已经死定,那么就失败了,只需使用任何通用的NN库来实现网络本身。您的大部分问题都是如何表示输入数据。 “最佳”结构是不明显的,它可能并不重要。输入必须是语料库本身的许多(标准化)测量(特征)。有些是显而易见的(“垃圾邮件”字样等),有些则更为明显。这是你可以真正使用的部分,但是由于问题的本质,你应该期望与贝叶斯过滤器(这里有自己的问题)相比做得不好。