我想使用具有约 200 个样本和 6 个属性的 Weka 训练 MultiLayerPerceptron。我正在考虑分成火车和测试,在火车上,指定一定百分比的火车作为验证集。但后来我考虑使用折叠交叉验证来更好地利用我的样本集。
我的问题是:在进行交叉验证方法时指定验证集是否有意义?
而且,考虑到样本的大小,你能建议我为这两种方法提供一些数字吗?(例如,2/3 用于训练,1/3 测试和 20% 验证......而对于 CV:10 倍、2 倍或 LOOCV 代替......)
先感谢您!
我想使用具有约 200 个样本和 6 个属性的 Weka 训练 MultiLayerPerceptron。我正在考虑分成火车和测试,在火车上,指定一定百分比的火车作为验证集。但后来我考虑使用折叠交叉验证来更好地利用我的样本集。
我的问题是:在进行交叉验证方法时指定验证集是否有意义?
而且,考虑到样本的大小,你能建议我为这两种方法提供一些数字吗?(例如,2/3 用于训练,1/3 测试和 20% 验证......而对于 CV:10 倍、2 倍或 LOOCV 代替......)
先感谢您!
您的问题听起来好像您对交叉验证并不完全熟悉。就像您注意到的那样,有一个用于运行折叠次数的参数。对于简单的交叉验证,该参数定义了从您的原始集合中创建的子集的数量。设该参数为k。您的原始集合被分成 k 个大小相等的子集。然后对于每次运行,在 k-1 个子集上运行训练,并在剩余的第 k 个子集上完成验证。然后将 k 个子集的 k-1 个子集的另一个排列用于训练,以此类推。所以你运行这个过程的 k 次迭代。
对于您的数据集大小,k=10 听起来不错,但基本上一切都值得测试,只要您考虑所有结果并且不要选择最好的结果。
对于非常简单的评估,您只需使用 2/3 作为训练集,而 1/3“测试集”实际上是您的验证集。尽管有更复杂的方法使用测试集作为终止标准,使用另一个验证集作为最终评估(因为您的结果也可能过度拟合到测试集,因为它定义了终止)。对于这种方法,您显然需要以不同的方式拆分集合(例如 2/3 训练、3/12 测试和 1/12 验证)。
你应该小心,因为你没有太多的样本。另一方面,如果你想检查你的模型准确性,你应该为你的模型划分一个测试集。交叉验证将您的数据拆分为训练数据和验证数据。然后,当我们认为您没有太多样本并且您的验证集非常小时,您可以看看这种方法:
5×2 交叉验证,使用相同大小的训练交叉验证和验证集(Dietterich (1998))
你可以在 Ethem Alpaydin 的机器学习一书中找到更多信息。
不要记住数据,也不要在少量样本上进行测试,这看起来像是两难选择,但具体决定取决于您的数据集。