【发布时间】:2014-10-23 02:37:48
【问题描述】:
我正在使用 WEKA 的 MultilayerPerceptron 实现对各种分类数据集进行一些实验。随着训练迭代次数(epochs)的增加,我期望能够观察到过度拟合。然而,尽管让 epoch 的数量变得相当大(15k),我还没有看到它。我该如何解释这个?请注意,我在训练集或测试集上没有达到 100% 的准确率,所以并不是问题过于简单。
我想出的一些想法是:
- 我只是没等多久
- 我的网络不够复杂,无法过拟合
- 我的数据实际上不包含任何噪音,但对目标函数的描述性不够
- 我没有正确使用 WEKA 中的评估类
- 我的测试数据集已泄漏到我的训练集中(但我有 99% 的把握没有)
我在每个 epoch 之后运行以下命令(我修改了 MultilayerPerceptron 以拥有一个“EpochListener”,但除此之外没有其他更改:
Evaluation eval = new Evaluation(train);
eval.evaluateModel(ann, train);
System.out.println(eval.pctCorrect());
eval.evaluateModel(ann, test);
System.out.println(eval.pctCorrect());
训练准确度似乎趋于平稳,我从未看到测试准确度开始大幅下降。
【问题讨论】:
-
感谢大家的cmets。我希望我能接受所有的答案。在尝试减少数据量后,我能够见证过度拟合。此外,即使在我最初的实验中,也可能存在轻微的过度拟合,但它比我预期的要微妙得多。所以我想我作为一名 ML 学生的收获是,尽管 ANN 因其灵活性而容易过度拟合,但这并不意味着它很容易甚至可以根据训练数据量和网络复杂性进行演示。
标签: neural-network weka