首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XGBRegressor与权重和base_margin:样本外验证可能吗?

XGBRegressor与权重和base_margin:样本外验证可能吗?
EN

Stack Overflow用户
提问于 2022-06-06 18:27:04
回答 1查看 577关注 0票数 5

我有一个旧的线性模型,我希望改进使用XGBoost。我有旧模型的预测,我希望用它作为基数。此外,由于我建模的本质,我需要使用权重。我以前的glm是一个泊松回归,公式是number_of_defaults/exposure ~ param_1 + param_2,权重设置为exposure (与响应变量中的分母相同)。在对新的XGBoost模型进行数据培训时,我会这样做:

代码语言:javascript
复制
xgb_model = xgb.XGBRegressor(n_estimators=25,
                             max_depth=100,
                             max_leaves=100,
                             learning_rate=0.01,
                             n_jobs=4,
                             eval_metric="poisson-nloglik",
                             nrounds=50)

model = xgb_model.fit(X=X_train, y=y_train, sample_weight=_WEIGHT, base_margin=_BASE_MARGIN)

,其中_WEIGHT_BASE_MARGIN是权重和预测(从X_train中弹出)。但是,当我需要指定权重和基准裕度时,如何进行交叉验证或样本外分析?

据我所见,我可以使用sklearnGridSearchCV,但接下来需要在XGBRegressor()中指定权重和基数裕度(而不是像上面那样在fit()中)。base_marginXGBRegressor()中的等价形式是参数base_score,但是没有关于权重的论证。

此外,我可能会忘记进行交叉验证,只需使用训练和测试数据集,然后在XGBRegressor()中使用XGBRegressor()参数,但如果这样做,就无法指定不同集合中的权重和基数。

任何正确方向的指导都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-15 23:45:35

您可以在fit_params参数中使用fit_params,也可以在**fit_params中使用GridSearchCV.fit

这是一个概念的有效证明。

代码语言:javascript
复制
import xgboost as xgb
from sklearn import datasets
from sklearn.model_selection import cross_val_predict, GridSearchCV
import numpy as np

# Sample dataset
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]

xgb_model = xgb.XGBRegressor(n_estimators=5)
fit_params = dict(sample_weight=np.abs(X[:, 0]), base_margin=np.abs(X[:, 1]))

# Simple fit
xgb_model.fit(X, y, **fit_params)

# cross_val_predict
y_pred = cross_val_predict(xgb_model, X, y, cv=3, fit_params=fit_params)
print(y_pred.shape, y.shape)

# grid search
grid = GridSearchCV(xgb_model, param_grid={"n_estimators": [5, 10, 15]})
grid.fit(X, y, **fit_params)

您可以看到代码源代码中发生了什么:这里这里这里。最后一个链接是fit_params在交叉验证分裂之后获得索引的位置。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72522003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档