在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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