HyperGBM的三种Early Stopping方式

news/2024/11/14 12:23:37/

本文作者:杨健,九章云极 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 itearly_stopping_time_limit=3600, #3600 seconds, 0 or None to disable itearly_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


http://www.ppmy.cn/news/28886.html

相关文章

【C++】泛型编程——模板初阶

文章目录1. 泛型编程2. 函数模板2.1 函数模板的概念2.2 函数模板的使用2.3 函数模板的原理2.4 函数模板的实例化隐式实例化显式实例化2.5 模板参数的匹配原则3. 类模板1. 泛型编程 首先我们来思考一个问题:如何实现一个通用的交换函数呢? 即我们想交换两…

芯片行业哪些岗位在涨薪?《基于UPF的低功耗数字后端设计实训课》火热报名中

(部分图片来源于网络,如有侵权请联系我们删除,谢谢!) 基于UPF的低功耗数字后端设计技术是芯片设计中非常重要的一环,现在越来越多的公司和岗位对此有要求。如果从事相关领域的工作,想要涨薪或晋…

中睿天下当选信通院网络安全卓越合作伙伴

2月23日,2023年中国网络和数据安全产业高峰论坛—网络安全技术创新赋能产业发展分论坛在四川成都成功召开,分论坛以“技术创新、场景赋能、实效验证”为主题,由工业和信息化部网络安全管理局指导,中国信息通信研究院主办&#xff…

【K3s】第1篇 K3s入门级介绍及架构详解

1、什么是 K3s? K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能: 打包为单个二进制文件。使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作…

2023年“网络安全”赛项浙江省金华市选拔赛 任务书

2023年“网络安全”赛项浙江省金华市选拔赛 任务书 任务书 一、竞赛时间 共计3小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一 Windows操作系统渗透测试 任务二 Linux操作系统渗透测试 任务三 网页渗透 任务四 Linux系…

MySQL-查询语句

数据库管理系统的一个最重要的功能就是数据查询,数据查询不应只是简单查询数据库中存储的数据,还应该根据需要对数据进行筛选,以及确定数据以什么样的格式显示。MySQL提供了功能强大、灵活的语句来实现这些操作。下面是通过help帮助查看到的s…

数据结构入门--时间 空间复杂度

数据结构入门 时间 空间复杂度解析 目录 一. 算法效率 二. 时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 2.3 题目练习 题目一 题目二 题目三 题目四 题目五 题目六 题目七 三. 空间复杂度 3.1 题目练习 题目一 题目二 题目三 一. 算法效率 算法效率…

17- TensorFlow实现手写数字识别 (tensorflow系列) (项目十七)

项目要点 模型创建: model Sequential()添加卷积层: model.add(Dense(32, activationrelu, input_dim100)) # 第一层需要 input_dim添加dropout: model.add(Dropout(0.2))添加第二次网络: model.add(Dense(512, activationrelu)) # 除了first, 其他层不用输入shape添加输出…