如何进一步解释变量重要性?

数据挖掘 机器学习 特征选择 随机森林
2021-09-21 02:13:17

如果这是一个重复的问题,请原谅我,在搜索了一段时间后,我还没有找到任何专门回答我的问题的东西。

我有一个数据集,我使用 SciKit Learn 包中的 RandomForestClassifier 来预测移动应用用户保留率。我对我得到的准确性感到满意,我计划包括一些其他指标,包括精度、召回率、马修的 Corr 系数等。我很确定这个模型是好的。

我在这里感兴趣的关键是功能本身。我想知道是什么导致了我的用户流失。我已经提取了特征重要性并绘制了一个漂亮的图表,但现在我被卡住了。理想情况下,我想知道每个变量如何影响流失/未流失的结果。GINI 特征重要性的问题是我可以看到哪些是最有影响力的,但例如对于连续变量,我想知道 RF 发现哪个值最适合拆分。我不需要为每个功能都看到这一点,因为我只有 70 多个最“重要”的功能。

我在这里看到了一个非常漂亮的决策树图,但找不到任何使用 scikit learn 重现类似内容的方法。我愿意接受其他建议。提前致谢 :)

1个回答

该文档提供了几个选项。要绘制森林中的单棵树,可以像访问它们一样访问它们model.estimators_[n].tree_,然后按照文档export_graphviz中的说明绘制它们,或者您可以按照这个示例直接以文本格式打印结构。

但是,我会说这不是最好的主意,因为一个特征可以出现在不同的树和具有不同分割点的节点中。您可能会从试图隔离一个变量对您的响应变量的影响的部分依赖图中对您的特征有更好的直觉。

作为奖励,这里有一篇很好的文章,介绍了深入了解您的模型的更多替代方案(并非全部适用于随机森林)。