样本随机森林分类的​​特征重要性

数据挖掘 随机森林 scikit-学习
2022-02-18 11:16:39

使用随机森林是否可以确定哪些特征是将特定样本分类为 A 类的驱动特征?

我知道我可以问哪些特征对执行任何样本的分类更重要,但我可以问这个特定样本吗?例如,为什么样本 1 被归类为 A?它的哪些功能更像 A 类而不是 B 类?

问这个关于随机森林的问题是否有意义?

关于如何在 python 中使用 sklearn 的奖励积分:)

编辑

问题已在此处的交叉帖子中得到解答: https ://stats.stackexchange.com/questions/174229/feature-importance-for-random-forest-classification-of-a-sample

这里的 Python 实现: http ://blog.datadive.net/random-forest-interpretation-with-scikit-learn/

1个回答

因此,让我澄清一下您的查询:您已经训练了一个随机森林模型来将数据集分类为多个类别,例如 A、B、C 或 D。现在,您想了解每个不同的类别标签(例如 A),哪些特征导致它被归类为 A 类而不是 A 类,依此类推。

为了找出一个变量在随机森林中的重要性,每个变量在所有树之间进行置换,并计算置换前后的样本外误差差异。具有最大差异的变量被认为是最重要的,而具有较低值的变量则不太重要。这种方法对整个多项式分类很重要,即 A vs. B/C/D、B vs. A/C/D 等,而不仅仅是一个标签。所以你不能说特征1对识别A类更重要,但特征2对识别B类更重要。

我一直在使用 R 中实现的随机森林包,它似乎没有提供任何方法来破译一对多分类的内部细节。

如果您真的对此感兴趣,那么您应该拟合一组随机森林模型,每个模型用于分类 A 类与其余模型、B 类与其余模型等。这些单独模型的可变重要性将为您提供对每个标签进行分类的特征重要性。

您可以使用 scikit-learn 使用相同的库来拟合这些模型。您可以在这里参考他们的帮助页面 - http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html