哪个第一:算法基准测试,特征选择,参数调整?


11

当尝试进行分类时,我目前的方法是

  1. 首先尝试各种算法并对它们进行基准测试
  2. 根据上述1中的最佳算法执行特征选择
  3. 使用所选功能和算法调整参数

但是,如果其他算法已使用最佳参数/最适合的功能进行了优化,则我通常无法使自己相信,可能有比所选算法更好的算法。同时,对所有算法*参数*功能进行搜索非常耗时。

关于正确的方法/顺序有什么建议吗?

Answers:


8

我假设您将特征选择视为特征工程。我通常遵循的流程,我看到有人这样做是

  1. 特征工程
  2. 在功能上尝试一些算法,通常是高性能的算法,例如RandomForest,Gradient Boosted Trees,Neutral Networks或SVM。

    2.1进行简单的参数调整,例如对小范围的参数进行网格搜索

如果第2步的结果不令人满意,请返回第1步以生成更多功能,或删除多余的功能并保留最佳功能,人们通常将其称为“ 功能选择”。如果没有新功能的想法,请尝试更多算法。

如果结果正确或接近您想要的结果,则转到步骤3

  1. 广泛的参数调整

这样做的原因是分类全都与要素工程有关,除非您知道一些不可思议的强大分类器,例如针对特定问题(例如计算机视觉)定制的深度学习。生成好的功能是关键。选择分类器很重要,但并不重要。上面提到的所有分类器在性能方面都相当可比,大多数时候,最好的分类器就是其中之一。

在某些情况下,参数调整可以大大提高性能。但是,如果没有好的功能,调优并没有太大帮助。请记住,您总是有时间进行参数调整。另外,没有必要进行大量的参数调整,然后您会发现一个新功能并重做整个过程。


2

嘿,我刚刚看到您的问题。首先进行特征选择,然后使用交叉验证对模型进行调整是完全错误的。在统计学习的元素和博客文章中明确提到: 仅当您所有的模型构建都在CV循环内完成时,CV方法才是无偏见的。因此,在CV循环内进行特征选择以进行参数调整。使用R中MLR包中的过滤器包装可以轻松完成此操作。


1

我已经在这里回答了类似的问题。该过程将是:

  • 变换和归约:涉及诸如变换,均值和中位数缩放等过程。
  • 特征选择:这可以通过多种方式完成,例如阈值选择,子集选择等。
  • 设计预测模型:根据您掌握的功能在训练数据上设计预测模型。
  • 交叉验证和参数调整:
  • 最终预测,确认

选择模型之前,请始终尝试进行特征工程。然后,根据最佳特征(或倾向于更好地影响问题/因变量的特征)选择模型。


0

如果您准备花时间学习新工具的工作原理,则可以尝试使用autosklearn。它为您建立了ML管道所需的一切。通过交叉验证进行特征预处理,选择,模型集成构建和调整。根据您所拥有的数据量,它可能是也可能不是更好的预测的更快方法。但这当然是有希望的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.