gpt4 book ai didi

python - 垃圾邮件分类任务中奇怪的 FANN 行为

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:54 30 4
gpt4 key购买 nike

我尝试在 FANN 库的帮助下编写简单的垃圾邮件分类器。为此,我收集了一些垃圾邮件和非垃圾邮件,并收集了一本最常用的英语单词词典。我使用以下代码创建了一个具有一个隐藏层的神经网络:

num_input = get_input_size(dictionary_size)
num_output = 1

ann.create_standard_array((num_input, num_neurons_hidden, num_output))
ann.set_activation_function_hidden(libfann.SIGMOID_SYMMETRIC)
ann.set_activation_function_output(libfann.SIGMOID_SYMMETRIC)
ann.set_training_algorithm(libfann.TRAIN_INCREMENTAL)

当信件是非垃圾邮件时输出为 1,当它是垃圾邮件时输出 -1。每个输入神经元表示特定单词是否在电子邮件中(1 - 单词在邮件中。0 - 不是)

为了训练神经网络,我使用以下代码。(对于训练集中的每封电子邮件)

# Create input from train e-mail letter
input = get_input(train_res, train_file, dictionary)
ann.train(input, (train_res,))

要检查来自测试集的电子邮件是否是垃圾邮件,我使用以下代码:(对于测试集中的每封电子邮件)

input = get_input(SPAM, test_spam, dictionary)
res = ann.run(input)[0]

但无论我使用多大的词典(我尝试从 1000 个单词到 40000 个单词)或隐藏层中的神经元数量(20 到 640),在我的网络训练后它都假定几乎所有电子邮件都是垃圾邮件或火腿。例如,我收到这样的结果:

Dictionary size: 10000
Hidden layer size: 80
Correctly classified hams: 596
Incorrectly classified hams: 3845
Correctly classified spams: 436
Incorrectly classified spams: 62

几乎所有垃圾邮件都被正确分类,但所有垃圾邮件都被错误分类,或者结果如下:

Dictionary size: 20000
Hidden layer size: 20
Correctly classified hams: 4124
Incorrectly classified hams: 397
Correctly classified spams: 116
Incorrectly classified spams: 385

相反。我尝试使用更多的训练数据。我从训练集中大约 1000 封电子邮件开始(垃圾邮件与非垃圾邮件的比例接近 50:50),现在我正在用大约 4000 封电子邮件(垃圾邮件:非垃圾邮件大约 50:50)进行测试,但结果是一样。

可能的问题是什么?提前谢谢你。

最佳答案

您是否断言垃圾邮件和普通邮件在您的单词列表中的单词内容方面存在显着差异?我的猜测是,就常规单词的内容而言,垃圾邮件和非垃圾邮件之间可能没有非常明显的区别。

如果您使用的是“真正的”垃圾邮件,许多垃圾邮件制造者会使用称为贝叶斯投毒 的方法,其中包含大量“合法”文本以混淆垃圾邮件过滤器。由于您只是过滤常用词的内容,而不是垃圾邮件/非垃圾邮件在统计上常见的词,因此您的方法将对贝叶斯中毒非常敏感。

关于python - 垃圾邮件分类任务中奇怪的 FANN 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009112/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com