在WEKA中运行交叉验证之前是否需要应用过滤器

我想对我在使用的几个分类器进行n折交叉验证。我在WEKA Wiki上找到了示例代码(这是WekaDemo.java),但这个示例在运行验证之前应用了一个过滤器。这是否总是需要做的,还是说这不是必需的?

这是代码的一部分:

  /**   * 在训练文件上运行10折交叉验证   */  public void execute() throws Exception {    // 运行过滤器    m_Filter.setInputFormat(m_Training);    Instances filtered = Filter.useFilter(m_Training, m_Filter);    // 在完整文件上训练分类器以生成树    m_Classifier.buildClassifier(filtered);    // 使用种子=1进行10折交叉验证    m_Evaluation = new Evaluation(filtered);    m_Evaluation.crossValidateModel(        m_Classifier, filtered, 10, m_Training.getRandomNumberGenerator(1));  }

这种评估分类器性能的方法是否可以接受?


回答:

我认为这是不好的做法。如果过滤器依赖于/使用类信息,那么交叉验证的估计将(可能非常)乐观地偏向,因此可能毫无用处。举个极端的例子,想象一下在数据中添加类属性的副本。在几乎所有情况下,如果你使用weka.classifiers.meta.FilteredClassifier会更好更安全,你引用的同一Wiki页面上有一个如何使用它的示例。

祝好,Bernhard

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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