【问题标题】:Does the caret varImp wrapper for XGBoost xgbTree use XGBoost Gain?XGBoost xgbTree 的插入符号 varImp 包装器是否使用 XGBoost Gain?
【发布时间】:2020-04-25 05:23:13
【问题描述】:
使用 XGBoost xgb.importance 可以打印重要性矩阵,显示通过增益、覆盖率和频率测量的分类的可变重要性值。增益是可变重要性的推荐指标。
使用插入符号重采样 (repeatedcv, number=10, repeats =5)、特定的调整网格和训练 method = "xgbTree",插入符号 varImp() 函数显示从 0-100% 缩放的 k 倍特征重要性估计。
我的问题是插入符号varImp(xgbMod) 包装函数是使用增益还是使用增益、覆盖和频率的所有组合?
【问题讨论】:
标签:
r
machine-learning
r-caret
【解决方案1】:
一个小小的说明:
插入符号 varImp() 函数显示 k 倍特征的重要性
估计范围为 0-100%。
插入符号根据拟合的最终模型而不是交叉验证来估计特征重要性。交叉验证会告诉您适合模型的最佳超参数(例如 gamma 等)。
是Gain,文档不多,我用一个例子查了一下:
library(caret)
data = MASS::Pima.tr
set.seed(111)
mdl = train(type ~ .,data=data,method="xgbTree",tuneLength=3,
trControl=trainControl(method="cv"))
您设置 scale=FALSE 来设置原始值:
varImp(mdl,scale=FALSE)
xgbTree variable importance
Overall
glu 0.37953
age 0.19184
ped 0.16418
bmi 0.13755
npreg 0.06450
skin 0.04526
bp 0.01713
与 xgb.importance 比较:
xgboost::xgb.importance(mdl$finalModel$feature_names,model=mdl$finalModel)
Feature Gain Cover Frequency
1: glu 0.37953480 0.17966683 0.16
2: age 0.19183994 0.17190387 0.17
3: ped 0.16417775 0.26768973 0.28
4: bmi 0.13755463 0.09755036 0.09
5: npreg 0.06450183 0.10811269 0.11
6: skin 0.04526090 0.11229235 0.12
7: bp 0.01713014 0.06278416 0.07