【问题标题】:Machine Learning - Feature Ranking by Algorithms机器学习 - 算法的特征排名
【发布时间】:2019-05-30 18:10:07
【问题描述】:

我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果贡献最大。我有 5 种算法:

  1. 神经网络
  2. 物流
  3. 天真
  4. 随机森林
  5. Adaboost

我阅读了很多关于信息增益技术的文章,似乎它独立于所使用的机器学习算法。这就像一种预处理技术。

我的问题是,最佳实践是独立地为每个算法执行特征重要性还是只使用信息增益。如果是,则每种技术使用什么技术?

【问题讨论】:

  • 您想在监督建模之前丢弃特征还是了解哪些特征对分类器的输出贡献最大?
  • 不只是明白。

标签: machine-learning weka prediction feature-selection


【解决方案1】:

首先,值得强调的是,您必须仅基于训练数据执行特征选择,即使它是一个单独的算法。在测试期间,您然后从测试数据集中选择相同的特征。

想到的一些方法:

  1. 基于互信息的特征选择(例如here),独立于分类器。
  2. 向后或向前选择(请参阅stackexchange question),适用于任何分类器,但由于您需要训练/测试许多模型,因此成本可能很高。
  3. 作为分类器优化一部分的正则化技术,例如Lassoelastic net。后者在共线性高的数据集中表现更好。
  4. 主成分分析或任何其他对特征进行分组的降维技术 (example)。
  5. 某些模型计算潜在变量,您可以将其用于解释而不是原始特征(例如 Partial Least SquaresCanonical Correlation Analysis)。

特定的分类器可以通过提供有关特征/预测器的额外信息来帮助可解释性,这是我想不到的:

  • 逻辑回归:您可以获得每个特征的 p 值。在您的解释中,您可以关注那些“显着”(例如 p 值
  • 随机森林:可以返回一个变量重要性指数,将变量从最重要到最不重要进行排序。

我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果贡献最大。

这将取决于算法。如果你有 5 种算法,你可能会得到 5 个稍微不同的答案,除非你在分类之前执行特征选择(例如使用互信息)。一个原因是随机森林和神经网络会拾取非线性关系,而逻辑回归则不会。此外,朴素贝叶斯对交互视而不见。 因此,除非您的研究明确涉及这 5 个模型,否则我宁愿选择一个模型并继续进行。

【讨论】:

  • 所以你是说我应该先使用互信息,然后再使用特定的分类器?
  • 是的,这是一种方法
  • 这里值得一提的是Boruta算法
【解决方案2】:

由于您的目的是对正在发生的事情有一些直觉,因此您可以执行以下操作:

为简单起见,让我们从随机森林开始,但您也可以使用其他算法来做到这一点。首先,你需要建立一个好的模型。从某种意义上说,您需要对其性能感到满意并且它应该是稳健,这意味着您应该使用验证和/或测试集。这些点非常重要,因为我们将分析模型是如何做出决策的,所以如果模型不好,你就会得到不好的直觉。

建立模型后,您可以在两个层面上对其进行分析:针对整个数据集(了解您的流程)或针对给定的预测。对于这个任务,我建议您查看SHAP library,它计算可用于两种方法的特征贡献(即特征对我的分类器的预测有多大影响)。

有关此过程和更多工具的详细说明,您可以查看 machine learning serie 上的 fast.ai 优秀课程,其中第 2/3/4/5 课是关于此主题的。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2019-07-14
    • 2013-03-25
    • 1970-01-01
    • 2013-12-01
    相关资源
    最近更新 更多