微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 RFE 与 xgboost Booster 一起使用?

如何解决如何将 RFE 与 xgboost Booster 一起使用?

我目前正在使用 xgb.train(...),它返回一个增强器,但我想使用 RFE 来选择最好的 100 个功能。返回的 booster 不能在 RFE 中使用,因为它不是 sklearn 估计器。 XGBClassifier 是 xgboost 库中的 sklearn api,但是,我无法获得与 xgb.train(...) 方法相同的结果(在 roc-auc 上差 10%)。我已经尝试过 sklearn 助推器,但它们也无法获得类似的结果。我还尝试将 xgb.train(...) 方法包装在一个类中以添加 sklearn estimator 方法,但要更改的方法太多了。有什么方法可以将 xgb.train(...) 与 sklearn 的 RFE 一起使用吗?

解决方法

针对此类问题,我创建了 shap-hypetune一个用于同时进行超参数调整和梯度提升模型特征选择的 Python 包

就您而言,这使您能够以非常简单直观的方式使用 RFE 执行 XGBClassifier

from shaphypetune import BoostRFE

model = BoostRFE(XGBClassifier(),min_features_to_select=1,step=1)
model.fit(X_train,y_train,eval_set=[(X_valid,y_valid)],early_stopping_rounds=6,verbose=0)

pred = model.predict(X_test)

如您所见,您可以使用标准 XGB API 中提供的所有拟合选项(例如 early_stopping_rounds 或自定义指标)来自定义训练过程。

您也可以使用 shap-hypetune 来计算参数调整(也可以与特征选择同时进行)或使用 SHAP 通过 RFEBoruta 计算特征选择 特征重要性。可用的完整示例 here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。