2012-12-05 370 views
0

我想使用Weka训练一个MultiLayerPerceptron,具有〜200个样本和6个属性。 我正在考虑拆分列车和测试,并在列车上指定列车的某个百分比作为验证集。 但是后来我考虑使用fold-crossvalidation来更好地使用我的样本集。使用验证集与交叉验证方法是否有意义?

我的问题是:是否做了交叉验证方法时是有意义的指定验证组?

而且,考虑到样本的大小,你可以建议我一些号码,这​​两种方法? (例如2/3列车,1/3测试,和20%的验证...以及用于CV:10倍,2倍,或代替LOOCV ...)

预先感谢您!

回答

1

你的问题听起来像你不完全熟悉交叉验证。就像你注意到的那样,有一个运行折叠次数的参数。对于简单的交叉验证,该参数定义了在原始集合之外创建的子集数量。让该参数为k。您的原始集合被分成k个相同大小的子集。然后对于每次运行,trainig运行在k-1个子集上,并且验证在剩下的第k个子集上完成。然后将k个子集的k-1个子集的另一个置换用于训练,等等。所以你运行这个过程k次迭代。

为您的数据集大小,K = 10听起来还不错,但基本上一切都是值得的测试,只要你把所有的结果考虑在内,并没有把最好的一个。

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

+0

谢谢@fanfabbb!是的,可能我感到困惑,因为weka Explorer中的“validationSet”选项仍然可用,即使您选择了交叉验证。这就是为什么我不确定这是否合理。是的,您提到的这些“更复杂的方法”是我所指的 - 但可能我没有足够清楚地解释它 - 谢谢分裂的建议。我必须考虑在训练期间是否可以“减少”减少1/3的样本。也许这应该让我决定简历... – PGreen

0

你应该小心,因为你没有太多的样本。另一方面,如果你想检查你的模型精度,你应该为你的模型划分一个测试集。交叉验证将您的数据作为训练和验证数据进行分割。然后,当我们认为你没有太多的样本和您的验证组会这么小,你可以看看这个方法:

5×2交叉验证,使用培训交叉验证和 (Dietterich(1998))

您可以在Ethem Alpaydin的机器学习书中找到更多关于它的信息。

不要记住这些数据并没有对少量的样品,它看起来像一个困境,但某些决策的测试取决于您的数据集。

+0

非常感谢@kamaci,所以由于样本的小尺寸,您认为最好是执行交叉验证而不是坚持的方法,对吧?也许你不熟悉它,但是......你知道如何在Weka中指定5次CV的迭代(无论是在资源管理器还是命令行中)?我只知道-x表示折叠数(在本例中为2)... – PGreen