机器学习 - 算法特征排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习 - 算法特征排序相关的知识,希望对你有一定的参考价值。
我有一个包含大约30个功能的数据集,我想知道哪些功能对结果贡献最大。我有5个算法:
- 神经网络
- 后勤
- 幼稚
- 随机森林
- Adaboost的
我阅读了很多关于信息增益技术的内容,它似乎与所使用的机器学习算法无关。它就像一个预处理技术。
我的问题如下,最佳做法是依赖于每个算法执行特征重要性或仅使用信息增益。如果是,每种技术使用的技术是什么?
首先,值得强调的是,您必须仅根据训练数据执行特征选择,即使它是单独的算法。在测试期间,您可以从测试数据集中选择相同的功能。
我想到的一些方法:
- 基于互信息的特征选择(例如here),独立于分类器。
- 向后或向前选择(参见stackexchange question),适用于任何分类器,但由于您需要训练/测试许多模型,因此可能成本很高。
- 作为分类器优化的一部分的正则化技术,例如Lasso或elastic net。后者在具有高共线性的数据集中可以更好。
- 主成分分析或任何其他降维技术,对您的特征进行分组(example)。
- 一些模型计算潜在变量,您可以将其用于解释而不是原始特征(例如Partial Least Squares或Canonical Correlation Analysis)。
特定的分类器可以通过提供有关功能/预测变量的额外信息来帮助解释,从头到尾:
- 逻辑回归:您可以获得每个要素的p值。在您的解释中,您可以专注于那些“重要”的(例如p值<0.05)。 (两类线性判别分析相同)
- 随机森林:可以返回变量重要性索引,该变量索引将变量从最重要到最不重要。
我有一个包含大约30个功能的数据集,我想知道哪些功能对结果贡献最大。
这取决于算法。如果您有5种算法,除非您在分类之前执行特征选择(例如使用互信息),否则您可能会得到5个略有不同的答案。一个原因是随机森林和神经网络将获得非线性关系,而逻辑回归则不会。此外,Naive Bayes对交互视而不见。因此,除非您的研究明确涉及这5个模型,否则我宁愿选择一个模型并继续进行。
既然你的目的是为了对正在发生的事情有所了解,那么你可以做以下事情:
让我们从Random Forest开始,为简单起见,但您也可以使用其他算法。首先,你需要建立一个好的模型。很好,你需要对它的性能感到满意,它应该是Robust,这意味着你应该使用验证和/或测试集。这些要点非常重要,因为我们将分析模型如何做出决策,因此如果模型不好,您将获得糟糕的直觉。
构建模型后,您可以在两个级别进行分析:对于整个数据集(了解您的过程),或对于给定的预测。对于这项任务,我建议你看一下SHAP library,它可以计算特征贡献(即一个特征对我的分类器的预测有多大影响),可以用于两个瞳孔。
有关此过程和更多工具的详细说明,您可以在machine learning serie上查看fast.ai优秀课程,其中有关于此主题的课程2/3/4/5。
希望能帮助到你!
以上是关于机器学习 - 算法特征排序的主要内容,如果未能解决你的问题,请参考以下文章