人脸表情数据集的训练、验证和测试集划分

我正在使用卷积神经网络(CNN),想询问一下我划分训练/验证/测试集的方式是否正确。

我总共有55个受试者。我计划按80-10-10的比例划分,训练集(45个受试者),验证集(未见过的5个受试者),测试集(未见过的6个受试者)。

验证集是否也应该包含未见过的受试者?还是可以将整个训练集打乱,并使用其中的一部分(10-20%)作为验证集?

我读到过使用N折交叉验证时,会将整个训练集(样本)打乱,然后分成N折,模型会训练并平均N次。然而,对于神经网络或CNN,我们通常不使用交叉验证,因为它计算成本非常高。

我只是想知道哪种方式是正确的,因为使用未见过的受试者的验证集,我的模型在3-5个epoch后就开始过拟合,并且完全没有学习。另一方面,如果我使用训练集的10-20%作为验证集,我的模型使用三层CNN可以以合理准确率(45-50%)学习,但在未见过的测试集上测试时,我的top-1准确率仅为15-16%左右。

非常感谢。


回答:

总的来说,没有固定的规则,甚至连经验法则都很少。开发拓扑结构和模型的大部分工作在于调整超参数;训练-测试-验证的比例只是其中的一个。典型的划分比例大致为2:1:1,但有很大的变化,这取决于目的和数据集。如果训练集少于50%,或者测试集或验证集少于20%(虽然15%有时也有用,尤其是在数据集太小的情况下),我会开始质疑这种划分方式。

“正确”很大程度上取决于您对模型的最终用途。如果您期望它处理新的受试者,那么当然必须在测试和验证中包含未见过的受试者。如果只需要对给定的受试者进行良好的区分,那么您可能需要一个平衡的组合,或许是45:10:0——在这种情况下,您会欢迎过拟合。

如果您期望处理来自普通人群(新受试者)的表情,那么我认为您的训练受试者数量不足。为了适当调整这样的模型,您需要足够的受试者,以便可以自由调整比例,即使是8:1:1这样的比例也应该能给您提供可用的结果。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注