HyperGBM的三种Early Stopping方式

本文作者:杨健,九章云极 DataCanvas 主任架构师

很多机器学习框架如都提供了Early Stopping策略,主要用来防止模型过拟合。和模型训练提前停止的目标不同,AutoML的Early Stopping策略更多考虑的是算力消耗和模型质量的平衡。

通常超参数优化的搜索空间在上万种排列组合的量级,但全Pipeline AutoML的搜索空间要大得多,有时候会有几十亿种甚至更多的组合。在如此庞大的搜索空间中如果要找到绝对的全局最优解,即使有非常高效的搜索算法也需要尝试数千甚至数万次搜索,这有可能需要无法承受的的算力成本,因此选择一个合适的提前停止策略对AutoML来说是一个必备特性。

AutoML的提前停止通常考虑3种方式:

1、限定搜索时间,在指定的时间内搜索到的最优模型做为最终方案。这种策略的时间和算力资源成本最为可控。

2、指定评估指标的目标值,比如AUC超过0.95就可以中止搜索过程,或者rmse小于0.02。这种策略的前提是业务上有明确的模型评估结果的合格标准。

3、在搜索过程中,如果当前最高的评估在接下来的n次尝试都不能进一步提升就中止搜索。当搜索算法的勘探和开采平衡策略比较合理时,这种策略往往可以得到非常好的模型,在时间消耗和模型质量的平衡方面也比较合理。

在HyperGBM中以上三种方式都可以支持,并且可以组合使用,例如:同时限定搜索时间、期望评估指标和n步提升条件,任何一个条件满足即中止搜索。示例代码如下:

使用make_experiment的代码:

from tabular_toolbox.datasets import dsutils
from sklearn.model_selection import train_test_split
from hypergbm.search_space import search_space_general
from hypergbm import make_experiment
# load data into Pandas DataFrame
df = dsutils.load_bank()
target = 'y'
train, test = train_test_split(df, test_size=0.3)
test.pop(target)
#create an experiment
experiment = make_experiment(train, target=target,   
                max_trails=100,  
                reward_metric='accuracy',
                optimize_direction='max', 
                early_stopping_rounds=10, # 0 or None to disable it
                early_stopping_time_limit=3600, #3600 seconds, 0 or None to disable it
                early_stopping_reward=0.90 #0 or None to disable it
                ) 
#run experiment
estimator = experiment.run()
# predict on test data without target values
pred = estimator.predict(test)

更多HyperGBM相关内容请参考:https://github.com/DataCanvasIO/HyperGBM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值