我有一个小数据集,所以我必须使用交叉验证来报告测试结果,以便更好地估计分类结果。出于某种原因,我必须使用神经网络来做到这一点。
因为神经网络有其独特的怪癖,例如寻找超参数,我正在使用嵌套交叉验证。我将我的数据集分成 10 折进行交叉验证。然后我将用于训练的 9 折分成 10 折。从这 10 折中,我使用 9 折来训练不同的超参数(在我的情况下是隐藏单元的数量和辍学率),并使用另一折来获得不同超参数的准确性(有点就像深度学习文献中的验证集)。
然后我再次使用我找到的最佳超参数在第一部分数据的所有 9 折上训练我的模型。因为我错过了最初 9 折中的一些数据用作验证集。现在,当我报告测试结果时,我将训练数据的 epoch 数设置为固定次数,当我的网络在测试集上表现最好时,我停止训练,保存该模型以备将来使用,并报告该结果。我的问题是关于最后一部分。我在报告这个结果时做错了什么?为了清楚起见,我在这个阶段没有调整任何超参数。我只是将网络设置为在达到最佳测试结果时停止对训练数据的训练。我认为这是一个非常微妙的问题,如果它是一个问题的话。这就是为什么我很困惑。
对于不同的数据部门,我用不同的种子做这整件事 5-6 次,我只报告所有这些运行的平均值。