You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XGBoost多输出模型特征重要性获取问题咨询

XGBoost多输出模型中feature_importances_的含义解析

直接使用XGBRegressor(XGBoost 1.6+)训练多输出模型时,feature_importances_返回的是所有目标任务的特征重要性的加权平均值,权重由各任务在训练过程中的损失贡献(梯度与二阶统计量的累积值)决定,并非对应单个目标(第一个/最后一个),也不是简单的算术平均。

原理说明

XGBoost的多输出回归实现逻辑是:

  • 在训练时,每棵树的每个叶子节点会为所有目标预测对应的值,模型同时最小化所有目标的损失总和。
  • 特征重要性的计算基于特征在所有树中分裂带来的总增益,这里的增益是该分裂对所有目标任务损失降低的总和。最终的feature_importances_是将每个特征的总增益做归一化处理后的结果,本质是各目标任务特征重要性的加权组合,权重与各任务的训练损失贡献正相关。

与MultiOutputRegressor的区别

scikit-learn的MultiOutputRegressor是为每个目标单独训练一个独立的XGBRegressor,每个子模型各自计算自身目标的特征重要性,因此可以通过estimators_[i].feature_importances_获取单个目标的结果,这和循环训练单目标模型的逻辑完全一致。

而直接使用XGBRegressor训练多输出模型是联合优化所有目标,训练过程中特征的分裂决策会同时考虑所有目标的损失,因此特征重要性是全局加权后的结果。在你的测试代码中,虽然两种方式的预测结果几乎一致(因为make_regression生成的目标相互独立),但特征重要性的计算逻辑不同,所以结果存在差异。

验证思路

你可以通过以下方式验证上述结论:

  1. 提取每个单目标模型的feature_importances_。
  2. 获取XGBoost多输出模型训练时各目标的损失权重(可通过模型的get_booster().get_score()或内部统计量推导)。
  3. 计算单目标重要性的加权平均,对比是否与多输出模型的feature_importances_一致。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:24:04