catboost 回归器的 base_margin 或 init_score

问题描述

我想将 catboost 回归器用于保险应用(泊松目标)。由于我需要修复曝光,我该如何设置 log_exposure 的偏移量?使用 xgboost 时,我使用“base_margin”,而对于 lightgbm,我使用“init_score”参数。 catboost 中是否有等价物?

解决方法

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

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

,

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

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,baseline=claim_model_offset_valid.values)
freq_test_pool = Pool(data=freq_test_ds,label=claim_nmb_test.values,baseline=claim_model_offset_test.values)

此处的 data 参数仅包含带有预测变量的 pd.DataFramelabel 是声明的实际数量,cat_features 是指定分类术语的字符列表和 { {1}} 项是日志暴露的 np.array。它有效。

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