machine-learning - 用于电子邮件垃圾邮件检测的神经网络

标签 machine-learning neural-network classification spam-prevention

假设您有权访问一个电子邮件帐户,其中包含过去几年接收电子邮件的历史记录(约 10,000 封电子邮件),分为 2 组

  • 真实电子邮件
  • 垃圾邮件

您将如何完成创建可用于垃圾邮件检测的神经网络解决方案的任务 - 基本上将任何电子邮件分类为垃圾邮件或非垃圾邮件?

假设电子邮件提取已经到位,我们只需关注分类部分。

我希望得到答复的要点是:

  1. 选择哪些参数作为神经网络的输入,为什么?
  2. 什么样的神经网络结构最有可能最适合此类任务?

此外,我们非常欢迎任何资源建议或现有实现(最好是 C#)

谢谢

编辑

  • 我决定使用神经网络,因为该项目的主要方面是测试神经网络方法如何用于垃圾邮件检测
  • 仅仅探索神经网络和垃圾邮件主题也是一个“玩具问题”

最佳答案

如果你坚持使用神经网络......我会为每封电子邮件计算一些特征

基于字符、基于单词和词汇的功能(据我统计,大约有 97 个):

  1. 字符总数 (C)
  2. alpha 字符总数/C alpha 字符比例
  3. 数字字符总数/C
  4. 空白字符总数/C
  5. 每个字母/C 的出现频率(键盘的 36 个字母 - A-Z、0-9)
  6. 特殊字符的出现频率(10 个字符:*、_、+、=、%、$、@、ـ、\、/)
  7. 总字数(M)
  8. 短单词总数/M 两个字母或更少
  9. 单词中的字符总数/C
  10. 平均字长
  11. 平均。句子长度(以字符为单位)
  12. 平均。句子长度(以单词为单位)
  13. 字长频率。 distribution/M 长度为n的单词的比例,n在1到15之间
  14. 类型标记比例 唯一单词数/M
  15. Hapax Legomena 频率。一次出现的单词
  16. Hapax Dislegomena 频率。两次出现的单词
  17. 尤尔的 K 测量
  18. 辛普森 D 测度
  19. Sichel 的 S 度量
  20. Brunet 的 W 测量
  21. Honore 的 R 度量
  22. 标点符号的频率 18 个标点字符: . Í ; ? ! : ( ) – “« » < > [ ] { }

您还可以根据格式添加更多功能:颜色、字体、大小……使用。

大多数这些措施都可以在网上、论文甚至维基百科中找到(它们都是简单的计算,可能基于其他功能)。

因此,对于大约 100 个特征,您需要 100 个输入、隐藏层中的一定数量的节点以及一个输出节点。

需要根据您当前的预分类语料库对输入进行标准化。

我将其分成两组,一组作为训练组,另一组作为测试组,从不混合它们。也许训练/测试组的比例为 50/50,具有相似的垃圾邮件/非垃圾邮件比率。

关于machine-learning - 用于电子邮件垃圾邮件检测的神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/770238/

相关文章:

python - 如何旋转图像以对齐文本以进行提取?

tensorflow - 使用 TensorFlow v2.2 将 Keras .h5 模型转换为 TFLite .tflite

python-3.x - 内核似乎已经死亡。它会自动重新启动。内存有问题吗?

r - R中线性判别分析中的分类函数

apache-spark - Spark 中的一类分类模型

r - 设置随机种子不影响分类方法C5.0和ctree

python - Mnist识别使用keras

algorithm - Q 学习的收敛标准

algorithm - 如何管理多个积极的隐性反馈?

neural-network - tf.nn.conv2d 在 tensorflow 中做什么?