在Weka上的分类准确性

我在使用Weka的GUI进行分类。我是Weka的新手,对选项感到困惑

  • 使用训练集
  • 提供的测试集
  • 交叉验证

为了训练我的分类算法(例如J48),我使用了10折交叉验证进行训练,准确率非常好(97%)。但当我测试我的分类时,准确率下降到了大约72%。我很困惑。请问有什么建议吗?这是我操作的步骤:

  • 我在训练数据上训练我的模型(例如:train.arff
  • 在结果列表中右键点击想要保存的模型项,选择保存模型并保存为例如j48tree.model

然后

  • 我加载测试数据(例如:通过“提供的测试集”按钮加载test.arff
  • 在结果列表中右键点击,选择加载模型并选择j48tree.model
  • 我选择了在当前测试集上重新评估模型

我的操作方法有问题吗?为什么准确率从97%急剧下降到72%?或者仅使用10折交叉验证就足以训练和测试分类器吗?

注意:我的训练和测试数据集具有相同的属性和标签。唯一的区别是,我的测试集数据更多,我认为这不应该成为问题。


回答:

我认为你使用Weka的方式没有问题。

你提到你的测试集比训练集大?比例是多少?通常的经验法则是,测试集应该占整个数据集的四分之一,即训练集的三分之一,绝对不应该比训练集大。这本身就可以解释准确率从97%下降到72%的原因,顺便说一下,72%对于实际情况来说并不算差。

另外,如果你构建学习曲线https://weka.wikispaces.com/Learning+curves会很有帮助,因为它可以解释你是否存在偏差或方差问题。根据你的数值来看,似乎你有高方差(即你的数据集对于参数来说太多了),所以增加更多的样本或改变训练和测试集之间的分割可能会有所帮助。

更新我对所讨论的数据集进行了快速分析,使用随机森林,我的表现与作者发布的相似。详细信息和代码可在gitpage上找到http://omdv.github.io/2016/03/10/WEKA-stackoverflow

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注