base_margin 或 init_score 用于 catboost 回归器

base_margin or init_score for catboost regressor

我想将 CatBoost 回归器用于保险应用程序 (Poisson objective)。由于需要修复曝光,如何设置log_exposure的偏移量?使用 xgboost 时,我使用“base_margin”,而对于 lightgbm,我使用“init_score”参数。 CatBoost 中是否有等效项?

只需在您的 CatBoostRegressor 模型上使用“set_scale_and_bias(scale, bias)”方法。 bias 参数将设置模型预测结果的偏移量,而 scale 参数应保留其默认值 1。 对于您的 Insurance Poisson objective,偏差应设置为 log(exposure)。

在此处查看更多详细信息:CatBoost documentation

在查看文档后,我找到了一个可行的解决方案。 CatBoostRegressorCatboostClassifier 的 fit 方法提供了一个 baseline 和一个 sample_weight 参数,可以直接用于设置偏移量(用于先前曝光)或样本权重(用于严重性建模)。 顺便说一句,最佳方法是创建 Pools 并在那里提供偏移量和权重的规范:

freq_train_pool = Pool(data=freq_train_ds, label=claim_nmb_train.values,cat_features=xvars_cat,baseline=claim_model_offset_train.values)
freq_valid_pool = Pool(data=freq_valid_ds, label=claim_nmb_valid.values,cat_features=xvars_cat,baseline=claim_model_offset_valid.values)
freq_test_pool = Pool(data=freq_test_ds, label=claim_nmb_test.values,cat_features=xvars_cat,baseline=claim_model_offset_test.values)

此处 data 参数包含 pd.DataFrame 仅包含预测变量,label 一个实际的索赔数量,cat_features 是指定分类术语的字符列表和baseline 项是对数曝光的 np.array。有效。

使用池允许在拟合方法中提供评估集。