xgboost参数_sklearn之XGBoost(模型保存、样本不均衡、参数)

我是谁?雪拉比

4d7245c506e11ec3afed38c75c6c33aa.png

模型保存

(1)Pickle保存

pickle.dump()保存模型,训练完的模型就可以进行保存。内部参数需要用到open函数

1dabc13c2c63417c42b02db2ccf68e1f.png

模型保存在当前目录下

fad4d948520f7140c6e921ae45b3f1b6.png

导入模型pickle.load,还是需要参数open

11201df02bb18d36e9bf25a22730799b.png

模型预测结果与存储前模型预测结果将是一致的

f475e909d5b910a60a5aee43df93222b.png

(2)Joblib保存

Joblib是SciPy生态系统中的一部分,为Python提供保存和调用管道和对象的功能,处理NumPy结构的数据尤其高效,对于很大的数据集和巨大的模型非常有用。

保存和读取依然是dump和load,但参数不需要用open函数了

e82b025c959582fda4edc85221845294.png

结果与用pickle保存后读取的模型结果一模一样

2db1b06e43ac8a0cd458e2d80d75b328.png

保存sklearnAPI的xgb,结果稍差一些

6fee24f6ba28e373b236ecb4668dfbbe.png

e493a83dfa22c1c1bce3603ae07431a0.png

XGB中样本不均衡问题

在用xgb进行分类任务时,若是样本不均衡,可以用参数scale_pos_weight调节,一般输入的是负样本量与正样本量之比。

363e7f1293e74f3f8b3798c9e368d7da.png

构建一个不平衡的数据

5ba3822f809d698cf8e8d0eaedf1697f.png

在不调节控制不均衡数据的参数时,召回率比较低

138a962465a3f7d46c820e7bdd184a5f.png

调节控制不均衡的参数后,准确率和召回率升高,AUC略降低

afb0ee8dd762b6241b8df2ad2bae088f.png

搜索参数后,发现30是最好的,虽然数据比例是10:1,但从结果上来看,参数调整成30结果最佳。

95fcd65203b1b7f062a8e43ba571cd97.png

用xgb控制不平衡数据

xgb预测分类的结果是以概率值进行输出的

ce514321abf2f32d49ef76cdfb929a17.png

人为划分,按0.5

a8373e1d57d3c9ae676a341dbea5df0c.png

搜索不同scale_pos_weight下结果如何

d865b386b073e1d8d78b1c3506a358c6.png

可以发现,如果只看AUC指标的话,默认1的scale_pos_weight最好,如果需要考虑召回率和准确率则需要采用10。

8dcbce101ff6162445bb0d9698b9e18a.png

同时考虑scale_pos_weight和之前划分的阈值

571816913200fde9a8b4eedc9531f0c7.png

9ec0ee1498754661a31f34bcb8ee6c99.png

除了参数scale_pos_weight外,还有max_delta_step可以处理不均衡数据的问题,如果十分在意得到正确的预测概率,可以设置max_delta_step参数为一个有限的数(比如1)来帮助收敛。max_delta_step参数通常不进行使用,二分类下的样本不均衡问题是这个参数唯一的用途。

XGBoost类中的其他参数和功能

e71667ac9717061e3be93e9d6f6a27ce.png

n_jobs:输入整数表示使用的线程,输入-1表示使用计算机全部的计算资源。如果数据量很大,则需要这个参数来调用更多线程。

base_score:全局偏差,在分类问题中,有点像是先验概率。比如有1000个样本,300个正样本,700个负样本,则base_score就是0.3;回归中默认是0.5,其实比较合适的应该是标签的均值,通常不太适用,数据不平衡时考虑使用。

random_state:生成树的随机模式

missing:自动处理缺失值,默认会把所有缺失值当作稀疏矩阵中的0来进行处理,如果能手动填补自然最好。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值