xgboost 特征重要性选择 / 看所有特征哪个重要

本文介绍如何使用XGBoost进行模型训练,并通过训练好的模型获取特征的重要性。具体步骤包括定义参数、训练模型、利用训练好的模型获取特征重要性并将其可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xgb_trained_model = xgb.train(params, train_xgb_split, 500, watch_list, early_stopping_rounds=50, verbose_eval=10)

importance = xgb_trained_model.get_fscore()
temp1 = []
temp2 = []
for k in importance:
    temp1.append(k)
    temp2.append(importance[k])
print(pd.DataFrame({
        'column': temp1,
        'importance': temp2,
    }).sort_values(by='importance'))
### XGBoost 特征重要性计算与解释 #### 内置特征重要性 XGBoost 提供了三种主要的方法来衡量特征重要性:`weight`, `gain`, 和 `cover`。每一种方法提供了不同的视角来看待哪些特征对于模型更为重要。 - **Weight**: 这是指在所有的树结构中,某一特定特征被选作分裂节点的次数。一个特征被使用的频率越高,则其权重就越大,表明这个特征可能对决策过程有着重要的影响[^1]。 ```python import xgboost as xgb from matplotlib import pyplot as plt # Assuming 'model' is an already trained XGBClassifier or XGBRegressor instance. xgb.plot_importance(model, importance_type='weight') plt.show() ``` - **Gain**: 表示当使用某特征进行分割时所带来的平均增益(通常是减少不纯度的程度),即每次分裂带来的信息量增加。较高的 Gain 值意味着该特征有助于更有效地分离目标变量的不同类别或数值范围[^3]。 ```python xgb.plot_importance(model, importance_type='gain') plt.show() ``` - **Cover**: 定义为通过此特征划分的数据点数量的比例或者是这些数据点对应的梯度平方和。它反映了有多少训练实例受到了由该特征引起的拆分的影响。通常情况下,越靠近根部的节点会有更高的 Cover 数值,因为它们处理更多的样本[^5]。 ```python xgb.plot_importance(model, importance_type='cover') plt.show() ``` #### 基于排列的特征重要性 除了上述内建的方法外,还可以利用基于排列的技术来估计特征重要性。这种方法涉及随机打乱单个特征的值并观察这样做对性能指标(如准确性或均方误差)产生的负面影响程度。如果扰乱后的表现显著下降,则说明原始未扰动版本对该属性具有较高价值[^2]。 #### 使用 SHAP 值计算特征重要性 SHAP (Shapley Additive exPlanations) 是另一种强大的工具,能够提供更加细致入微的理解关于各个输入因素如何共同作用以形成最终预测结果。SHAP 方法不仅考虑了个别贡献还考量到了交互效应,并且可以给出全局以及局部层面下的特征影响力描述。 ```python import shap explainer = shap.TreeExplainer(model) shap_values = explainer.shap_values(X_test) # Plot summary plot for all features shap.summary_plot(shap_values, X_test, plot_type="bar") ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-Love-Coding-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值