机器学习 - 算法特征排序

问题描述 投票:1回答:2

我有一个包含大约30个功能的数据集,我想知道哪些功能对结果贡献最大。我有5个算法:

  1. 神经网络
  2. 后勤
  3. 幼稚
  4. 随机森林
  5. Adaboost的

我阅读了很多关于信息增益技术的内容,它似乎与所使用的机器学习算法无关。它就像一个预处理技术。

我的问题如下,最佳做法是依赖于每个算法执行特征重要性或仅使用信息增益。如果是,每种技术使用的技术是什么?

machine-learning weka prediction feature-selection
2个回答
2
投票

首先,值得强调的是,您必须仅根据训练数据执行特征选择,即使它是单独的算法。在测试期间,您可以从测试数据集中选择相同的功能。

我想到的一些方法:

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

特定的分类器可以通过提供有关功能/预测变量的额外信息来帮助解释,从头到尾:

  • 逻辑回归:您可以获得每个要素的p值。在您的解释中,您可以专注于那些“重要”的(例如p值<0.05)。 (两类线性判别分析相同)
  • 随机森林:可以返回变量重要性索引,该变量索引将变量从最重要到最不重要。

我有一个包含大约30个功能的数据集,我想知道哪些功能对结果贡献最大。

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


1
投票

既然你的目的是为了对正在发生的事情有所了解,那么你可以做以下事情:

让我们从Random Forest开始,为简单起见,但您也可以使用其他算法。首先,你需要建立一个好的模型。很好,你需要对它的性能感到满意,它应该是Robust,这意味着你应该使用验证和/或测试集。这些要点非常重要,因为我们将分析模型如何做出决策,因此如果模型不好,您将获得糟糕的直觉。

构建模型后,您可以在两个级别进行分析:对于整个数据集(了解您的过程),或对于给定的预测。对于这项任务,我建议你看一下SHAP library,它可以计算特征贡献(即一个特征对我的分类器的预测有多大影响),可以用于两个瞳孔。

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

希望能帮助到你!

© www.soinside.com 2019 - 2024. All rights reserved.