R语言XGBoost设置colsample_bytree=0.75后特征重要性仍覆盖全部8个输入特征的疑问
XGBoost全特征出现重要性得分问题解答
- 你对
colsample_bytree超参数的作用理解存在偏差:该参数控制的是每一棵独立决策树构建前,从全部特征池中随机采样的特征比例,并非全局固定筛选6个特征供所有树使用。 - 8个输入特征对应0.75的采样比例,单棵树仅会选择6个特征参与训练,但不同树的采样特征子集是独立随机的:例如第1棵树可能采样特征16,第2棵树可能采样特征38,只要训练的树的总数量足够多,8个特征都有概率被至少一棵树选中参与分裂,自然会全部进入特征重要性统计结果。
- 特征重要性的频率得分统计的是所有决策树中,特征被用于节点分裂的总次数,只要某个特征在任意一棵树的构建流程中被选中参与分裂,就会生成对应的频率得分,和单棵树的采样限制不存在冲突。
如果需要验证该逻辑,可将n_estimators参数设置为1(仅训练1棵决策树),此时特征重要性最多只会出现6个特征的得分,和单棵树的采样规则匹配。
内容的提问来源于stack exchange,提问作者Leedh
相关产品推荐
相关产品推荐

