我想使用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用于验证)。