使用验证集与交叉验证方法结合使用是否合理?

我想使用Weka训练一个多层感知器,样本量约为200个,属性有6个。我考虑将数据集分为训练集和测试集,并在训练集中指定一定百分比作为验证集。但随后我考虑使用折叠交叉验证,以便更好地利用我的样本集。

我的问题是:在进行交叉验证时,指定验证集是否有意义?

考虑到样本量的大小,您能为这两种方法建议一些具体的数值吗?(例如,训练集占2/3,测试集占1/3,验证集占20%…而对于交叉验证:使用10折、2折,还是留一法(LOOCV)?)

提前感谢您!


回答:

你的问题听起来像是你对交叉验证还不太熟悉。就像你注意到的,有一个参数用于设置运行的折数。对于简单的交叉验证,这个参数定义了从原始数据集中创建的子集数量。假设这个参数为k。你的原始数据集被分成k个大小相等的子集。然后在每次运行中,训练在k-1个子集上进行,验证则在剩余的第k个子集上进行。接着使用k个子集中的另一个k-1子集排列进行训练,依此类推。因此,你会运行k次这样的过程。

对于你的数据集大小,k=10听起来不错,但基本上只要你考虑所有结果,而不是只选择最佳结果,任何数值都值得测试。

对于非常简单的评估,你只需使用2/3作为训练集,而1/3的“测试集”实际上是你的验证集。不过,还有更复杂的方法,这些方法使用测试集作为终止标准,并使用另一个验证集作为最终评估(因为你的结果也可能对测试集过拟合,因为它定义了终止标准)。对于这种方法,显然需要以不同的方式分割数据集(例如,2/3用于训练,3/12用于测试,1/12用于验证)。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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