1、分类树特征重要性
参考:gbdt、xgb 特征重要性源码解释https://zhuanlan.zhihu.com/p/64759172
importance_type指importance的计算类型;可取值有5个:
- weight
权重(某特征在整个树群节点中出现的次数,出现越多,价值就越高) - gain
(某特征在整个树群作为分裂节点的信息增益之和再除以某特征出现的频次) - total_gain
(同上,代码中有介绍,这里total_gain就是gain) - cover和total_cover
cover比较复杂,是指某特征节点样本的二阶导数和再除以某特征出现的频次
原始的get_score()方法只是输出按照weight、gain、cover计算的统计值,为了得到百分比形式,将feature_importance_中特征归一化,分母为所有特征的重要性统计量之和。
注意:xgboost sklearn API在计算特征重要性的时候默认importance_type=“gain”,而原始的get_score方法默认importance_type=“weight”
2、回归树 特征重要性
gbdt是根据分裂前后节点的impurity减少量来评估特征重要性;impurity计算和节点的分裂标准是MSE或MAE
步骤:
i 遍历每个节点,该节点对应分裂特征重要性统计量=分裂前impurity减去分裂后左右二叉树impurity之和
ii 计算impurity的差值时,每个impurity都乘以对应权重(分支的样本数)
iii 一个特征在树中可以被用来多次分裂,基于上一步的数据,等同于这里按照特征groupby后对其重要性统计量求和
3、利用SHAP解释Xgboost模型
https://zhuanlan.zhihu.com/p/64799119