xgboost + hyperopt 调参套路

本文介绍了两种常见的机器学习调参方法:手动设置超参数和使用Hyperopt工具包自动调参。手动调参通常将数据分为70%训练、10%验证和20%测试,而使用Hyperopt则可在控制调参时间的同时,通过交叉验证避免过拟合,找到最优模型。

1. 手动设置超参数:

有时候为了节省时间快速验证不用工具进行调参,手动设定超参数,此时一般设置成70%的train, 10%的validation, 20%的test。

由于fit的过程是不断增加tree,所以在train上fit的时候,设置validation set,当在validation上loss不再下降的时候,就停止fit,这样可以避免在train上过拟合。

 

2. 利用工具包调参

相比gridsearch,hyperopt调参可以设置调参次数max_evals_num,控制调参时间。不至于调起来没完没了让人等得心焦。

一个基本的套路总结如下:

1. 拆分训练集和测试集,例如80%的训练,20%的测试集。

2. 利用hyperopt + 80%的训练集,针对决策树的相关超参数进行调参。

调参时要提供一个评价函数:hyperopt_eval_func()。

例如用train做五折交叉验证:cross_val_score()代表目前这批超参数的效果,避免调参时在tarin上过拟合。

所以这种情况下其实没必要再设置外部的validation集了。

利用hyperopt调参的代码如下:

def hyperopt_eval_func(params, X, y):
    '''利用params里定义的模型和超参数,对X进行fit,并返回cv socre。
    Args:
        @params: 模型和超参数
        @X:输入参数
        @y:真值
    Return:
        @score: 交叉验证的损失值
    '''   
    
    int_feat = ['n_estimators', 'max_depth', 'min_child_weight']
    for p in int_feat:
        params[p] = int(params[p])    
    
    clf = XGBClassifi
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值