我使用Weka在我的数据集上测试机器学习算法。我有3800行和大约25个功能。我正在测试预测模型的不同特征的组合,并且似乎预测低于仅使用交叉验证的oneR算法。即使是C4.5也没有更好的预测,有时候确实如此,有时它并不是基于仍然能够分类的特征。
但是,在某个时刻,我将数据集拆分为测试集和数据集(20/80),并在测试集上对其进行测试,C4.5算法的精度远高于我的OneR算法。我认为,由于数据集的小尺寸,它可能只是一个巧合,它预测得非常好(目标仍然相对分离为目标属性)。因此,在像这样的小数据集上使用交叉验证更有用。
然而,在另一个测试集上进行测试,确实使用C4.5为测试集提供了高精度。所以,我的问题实际上是,当数据集实际上非常小时,测试数据集的最佳方法是什么?
我看到了一些讨论的帖子,但我仍然不确定这是什么方法。
答案 0 :(得分:0)
通过交叉验证测试模型几乎总是一种很好的方法。 根据经验,使用10倍交叉验证。
在您的情况下,10倍交叉验证将在Weka中执行以下操作:
每组(s = 1 ... 10):
结果将是使用10个模型获得的结果的平均值。
尽量避免使用训练集选项测试数据集,因为这可能会导致创建一个非常适合现有数据的模型,但可能会对其他新实例(过度拟合)产生很大问题。