2016-03-09 110 views
0

我正在使用Weka GUI进行分类。我是新来的Weka并与选项Weka上的分类精确度

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

训练我的分类算法(如J48)感到困惑,我训练交叉验证10倍,准确度很高(97%)。当我测试我的分类 - 准确度下降到大约72%。我感到很困惑。请提供任何提示?这是我做的:

  • 我训练我的模型训练数据(例如:train.arff
  • 我在你要保存的模型项目的结果列表中右键单击 选择保存模型和例如保存为j48tree.model

然后

  • 我加载测试数据(例如:经由增刊test.arff谎称测试设置按钮
  • 右键单击在结果列表中,我挑选负载模型并选择j48tree.model
  • 我选择Re-evaluate model on current test set

是我做的方式错了吗?为什么精度从97%下降到72%?或者只做10倍的交叉验证足以训练和测试分类器?

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

回答

2

我不认为你如何使用WEKA有任何问题。

你提到你的测试集比训练大吗?什么是分裂?通常的经验法则是测试集应该是整个数据集的1/4,即比训练小3倍,而且绝对不会更大。仅此一项就可以解释从97%下降到72%,这对于现实生活中的情况并不那么糟糕。

此外,如果您建立学习曲线https://weka.wikispaces.com/Learning+curves将会很有帮助,因为它可以解释您是否存在偏差或变异问题。根据你的数值判断你听起来像差异很大(即你的数据集的参数太多),所以增加更多的例子或改变你在训练和测试集之间的分割可能会有所帮助。

更新 我通过随机森林跑在有关数据集的快速分析和我的表现是一个类似于发布的作者。详细信息和代码在gitpage上可用http://omdv.github.io/2016/03/10/WEKA-stackoverflow

+0

我正在使用此数据集(完整训练数据集和完整测试数据集):https://web.archive。org/web/20150205070216/http://nsl.cs.unb.ca/NSL-KDD/。是的,你是对的,我在我的数据集中有42个特征 – Brown

+1

我实际上下载了这个数据集,并用python的scikit-learn模块中的随机森林对它进行了分类,性能非常好。有一件事仍然不清楚,为什么你的测试集比训练要大?下载的集合大约有17:83分割。下载后我做了两套合并,随机选择20%作为测试集。正如我所说的,表现很好。所以我的建议是 - 你需要调整训练和测试集之间的差距。 – omdv

+1

我利用这个机会,终于在我的gitpage上发布了一些东西(http://torrinos.github.io/datascience/2016/03/10/WEKA-stackoverflow.html)。代码在那里以及细节。祝你好运。 – omdv

0

在72%准确度的情况下如何分割数据集?但你的解释并不明确。