我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果贡献最大。我有 5 种算法:
- 神经网络
- 后勤
- 幼稚的
- 随机森林
- Adaboost
我读了很多关于信息增益技术的文章,它似乎独立于所使用的机器学习算法。它就像一种预处理技术。
我的问题是,最佳实践是独立地为每个算法执行特征重要性还是只使用信息增益。如果是的话,每个使用的技术是什么?
我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果贡献最大。我有 5 种算法:
我读了很多关于信息增益技术的文章,它似乎独立于所使用的机器学习算法。它就像一种预处理技术。
我的问题是,最佳实践是独立地为每个算法执行特征重要性还是只使用信息增益。如果是的话,每个使用的技术是什么?
首先,值得强调的是,您必须仅根据训练数据执行特征选择,即使它是一个单独的算法。在测试期间,您然后从测试数据集中选择相同的特征。
一些浮现在脑海中的方法:
特定的分类器可以通过提供有关特征/预测器的额外信息来帮助可解释性,这在我的脑海中:
我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果贡献最大。
这将取决于算法。如果你有 5 种算法,你可能会得到 5 个稍微不同的答案,除非你在分类之前执行特征选择(例如使用互信息)。一个原因是随机森林和神经网络会拾取非线性关系,而逻辑回归则不会。此外,朴素贝叶斯对交互视而不见。因此,除非您的研究明确涉及这 5 个模型,否则我宁愿选择一个模型并继续进行。
由于您的目的是对正在发生的事情有一些直觉,因此您可以执行以下操作:
为简单起见,让我们从随机森林开始,但您也可以使用其他算法来做到这一点。首先,你需要建立一个好的模型。很好,您需要对其性能感到满意,它应该是Robust,这意味着您应该使用验证和/或测试集。这些点非常重要,因为我们将分析模型如何做出决策,所以如果模型不好,你会得到不好的直觉。
建立模型后,您可以在两个级别上对其进行分析:针对整个数据集(了解您的过程),或针对给定的预测。对于这项任务,我建议您查看SHAP 库,该库计算可用于两种方法的特征贡献(即特征对我的分类器的预测有多大影响)。
有关此过程和更多工具的详细说明,您可以查看 fast.ai机器学习系列的优秀课程,其中第 2/3/4/5 课是关于这个主题的。
希望能帮助到你!