【问题标题】:How should I test on a small dataset?我应该如何在小数据集上进行测试?
【发布时间】:2015-10-27 01:55:17
【问题描述】:

我使用 Weka 在我的数据集上测试机器学习算法。我有 3800 行和大约 25 个特征。我正在测试预测模型的不同特征的组合,并且似乎预测低于 oneR 算法使用交叉验证所做的预测。即使 C4.5 也不能更好地预测,有时它会,有时它不会基于仍然能够分类的特征。

但是,在某个时刻,我将数据集拆分为测试集和数据集(20/80),并在测试集上对其进行测试,C4.5 算法的准确度远高于我的 OneR 算法。我想,由于数据集的大小,它预测得很好可能只是一个巧合(目标仍然作为目标属性相对分割)。因此,在像这样的小数据集上使用交叉验证更有用。

但是,在另一个测试集上对其进行测试,使用 C4.5 确实为测试集提供了高精度。所以,我的问题实际上是,当数据集实际上非常小时,测试数据集的最佳方法是什么?

我看到了一些讨论它的帖子,但我仍然不确定什么是正确的方法。

【问题讨论】:

标签: testing dataset weka


【解决方案1】:

通过交叉验证测试您的模型几乎总是一种好方法。 经验法则是使用 10 折交叉验证。

在您的情况下,10 折交叉验证将在 Weka 中执行以下操作:

  • 将 3800 个训练实例分成 10 组,每组 380 个实例
  • 对于每组 (s = 1 .. 10):

    • 使用 s 中的实例进行测试,使用其他 9 个集合来训练模型(3420 个训练实例)
  • 结果将是使用 10 个模型获得的结果的平均值。

尽量避免使用训练集选项测试您的数据集,因为这可能会导致创建一个模型,该模型非常适合您现有的数据,但可能会在其他新实例中出现大问题(过度拟合)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-16
    • 2016-09-18
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多