繁体   English   中英

机器学习 - 算法特征排序

[英]Machine Learning - Feature Ranking by Algorithms

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

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

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

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

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

我想到的一些方法:

  1. 基于互信息的特征选择(例如, 这里 ),独立于分类器。
  2. 向后或向前选择(参见stackexchange问​​题 ),适用于任何分类器,但由于您需要训练/测试许多模型,因此可能成本很高。
  3. 作为分类器优化的一部分的正则化技术,例如Lasso弹性网 后者在具有高共线性的数据集中可以更好。
  4. 主成分分析或任何其他降维技术,对您的功能进行分组( 示例 )。
  5. 某些模型计算潜在变量,您可以将其用于解释而不是原始要素(例如, 偏最小二乘典型相关分析 )。

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

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

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

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

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

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

构建模型后,您可以在两个级别进行分析:对于整个数据集(了解您的过程),或对于给定的预测。 对于此任务,我建议您查看SHAP库 ,该计算可用于两个pupros的特征贡献(即特征影响我的分类器预测的程度)。

有关此过程和更多工具的详细说明,您可以快速查看机器学习系列的优秀课程,其中有关于此主题的课程2/3/4/5。

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM