我有一个以时间序列作为数据输入的分类任务,其中每个属性 (n=23) 代表一个特定的时间点。除了绝对分类结果,我想找出哪些属性/日期对结果的贡献程度。因此,我只是使用 feature_importances_
,这对我来说效果很好。
但是,我想知道它们是如何计算的以及使用了哪种度量/算法。不幸的是,我找不到有关此主题的任何文档。
最佳答案
确实有几种方法可以获取功能“重要性”。通常,对于这个词的含义没有严格的共识。
在 scikit-learn 中,我们实现了 [1] 中描述的重要性(经常被引用,但不幸的是很少阅读......)。它有时被称为“基尼重要性”或“平均减少杂质”,定义为节点杂质的总减少(由到达该节点的概率加权(由到达该节点的样本比例近似))在所有合奏的树木。
在文献或其他一些软件包中,您还可以找到实现为“平均降低精度”的特征重要性。基本上,这个想法是测量当您随机排列该特征的值时 OOB 数据准确性的下降。如果下降幅度很小,则该特征不重要,反之亦然。
(请注意,这两种算法都在 randomForest R 包中可用。)
[1]:Breiman, Friedman,“分类和回归树”,1984。
关于scikit-learn - RandomForestClassifier 中的 feature_importances 是如何确定的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15810339/