sklearn 随机森林回归器中的“feature_importance_”值是如何计算的?

数据挖掘 机器学习 scikit-学习 回归 随机森林 决策树
2022-02-18 12:05:05

我有 9000 个样本,具有五个特征和一个输出变量(都是数字的连续值)。我使用scikit模块使用随机森林回归方法。我得到了五个特征中每一个的特征重要性(使用函数feature_importances_)值的图表,它们的总和等于一。我想了解这些是什么,以及它们是如何数学计算的。有人可以解释一下吗?

1个回答

决策树通常将特征重要性建立在通过对特征进行拆分实现的杂质减少上。在分类中,通常的选择是基尼杂质,而回归树通常使用均方误差或节点样本方差。在 scikit learn 中也是如此。

对于具有左右子节点的给定(二元)节点计算为mGainm

Gainm=impuritym(weightleftimpurityleft+weightrightimpurityright)

权重被定义为子节点中父示例的份额(例如,其中是节点或叶中的示例数)。weightleft=Nleft/NmN

现在,要导出树的总杂质减少量,您需要对所有节点执行拆分并将其除以总杂质减少数该树的所有节点:ftmMf(t)f

Importancef(t)=mMf(t)GainmfmMf(t)Gainm

(请注意,由于此标准化步骤,您的特征重要性总和为1

最终,一个特征的总重要性f在所有树上计算t在您的随机森林中,总树数T

Importancef=1Tt=1TImportancef(t)