Optuna宝石级自动化调参利器

作者Toby,来源公众号:Python风控模型,Optuna宝石级自动化调参利器

背景

记得六年前,Toby老师调参用的是人工手动调参,根据经验,测试一些重要参数。后来用的超参工具是GridSearchcv网格搜索和randomSearchcv随机网格调参。GridSearch网格搜索得到模型参数最好,但非常耗时。用随机网格调参可以节省调参时间,但不一定得到最佳模型参数。

现在模型超参工具Optuna绝对是一颗耀眼宝石。Toby老师在模型竞赛中经常使用Optuna。如果我现在还在用GridSearch网格搜索,估计会被业内人士嘲笑。

图片

概述

Optuna是一个用于超参数优化的开源自动化调参框架,由日本人开发。它可以帮助用户在机器学习模型训练过程中自动搜索最佳的超参数组合,从而提高模型的性能和泛化能力。

Optuna的工作原理是通过使用一种称为"多臂赌博机"的算法来选择下一个要尝试的超参数组合,以此逐步优化模型性能。

用户只需定义超参数的搜索空间和目标函数,Optuna就可以自动化地进行超参数搜索,节省了用户手动调参的时间和精力。

Optuna支持多种优化算法,包括随机搜索、网格搜索、贝叶斯优化等,用户可以根据自己的需求选择合适的算法。

Optuna最大优点是使用贝叶斯统计的智能搜索,在快速搜索基础上,找到模型最佳参数。

如下图,我们观察到随机搜索的trails实验较为均匀的分布在各个函数位置。但optuna在函数最值附近有更多实验点,试图获取最佳模型性能。


这就是optuna智能的地方,通俗的讲就是把主要资源留在重要地方。

图片

此外,Optuna还提供了可视化工具,帮助用户更直观地了解超参数搜索的过程和结果。

Optuna官网介绍如下

Optuna是一个自动超参数优化软件框架,专门为机器学习设计。它以命令式、逐运行定义式用户API为特色。由于我们的API定义,使用Optuna编写的代码具有高度的模块性,Optuna的用户可以动态构建超参数的搜索空间。

Optuna: A hyperparameter optimization framework

Optuna is an automatic hyperparameter optimization software framework, particularly designed for machine learning. It features an imperative,define-by-run style user API. Thanks to our define-by-run API, the code written with Optuna enjoys high modularity, and the user of Optuna can dynamically construct the search spaces for the hyperparameters.

optuna特征汇总如下图

图片

在目前最流行超参工具中,optuna主导着谷歌搜索结果。

图片

总的来说,Optuna是一个强大的工具,可以帮助用户更高效地优化机器学习模型的性能,提升工作效率和结果质量。

Optuna主要功能
Optuna具有以下现代功能:
1.轻量级、通用且与平台无关的体系结构
只需简单的安装就可以处理各种各样的任务,而且要求很少。
2.Python搜索空间
使用熟悉的Python语法(包括条件语句和循环)定义搜索空间。
3.高效的优化算法
采用最先进的算法对超参数进行采样,并有效地修剪没有希望的试验。
4.易于并行化
将研究范围扩大到数十或数百名员工,代码几乎没有变化。
5.快速可视化
通过各种绘图功能检查优化历史。

Key Features

Optuna has modern functionalities as follows:

  • Lightweight, versatile, and platform agnostic architecture

    • Handle a wide variety of tasks with a simple installation that has few requirements.

  • Pythonic search spaces

    • Define search spaces using familiar Python syntax including conditionals and loops.

  • Efficient optimization algorithms

    • Adopt state-of-the-art algorithms for sampling hyperparameters and efficiently pruning unpromising trials.

  • Easy parallelization

    • Scale studies to tens or hundreds of workers with little or no changes to the code.

  • Quick visualization

    • Inspect optimization histories from a variety of plotting functions.

optuna基本概念
我们使用术语研究和试验如下:
study研究:基于目标函数的优化
trail实验:单一目标函数的执行
研究的目标是通过多次试验(例如,n_trials=100)找出超参数值的最佳集合(例如,分类器和svm_c)。Optuna是一个为自动化和加速优化研究而设计的框架。

Basic Concepts

We use the terms study and trial as follows:

  • Study: optimization based on an objective function

  • Trial: a single execution of the objective function

Please refer to sample code below. The goal of a study is to find out the optimal set of hyperparameter values (e.g., classifier andsvm_c) through multiple trials (e.g., n_trials=100). Optuna is a framework designed for the automation and the acceleration of the optimization studies.

optuna最重要参数是sampler采样器


Model-based基于模型
TPE: bayesian optimization based on kernel fitting基于核拟合的贝叶斯优化. TPE是默认参数。

GP: bayesian optimization based on Gaussian processes. 基于高斯处理的贝叶斯优化

CMA-ES: meta-heuristics alaorithm for continuous space连续空间的元启发式算法


Other Methods.其它方法
Random search随机搜索
Grid search网格调参
User-defined algorithm用户自定义算法

图片

optuna sampler参数选择是根据trails实验次数来自动化决定,

当trails实验次数超过1000时,选择CMA-ES连续空间的元启发式算法。

当trails实验次数小于1000且参数没有相关性时时采用TPE核拟合的贝叶斯优化。

当trails实验次数小于1000且参数有相关性时时采用GP高斯处理的贝叶斯优化。

图片

下图是optuna官网对sampler采样的注解。

图片

optuna开箱实验

Toby老师用自研教程《python金融风控评分卡模型和数据分析(加强版)》的中国移动用户信用智能评分数据集来实验optuna,并观察是否能够提升模型性能。

下图是中国移动用户信用智能评分数据集截图

图片

该数据集来自中国移动公司举报的一次模型竞赛。

图片

该模型默认参数得到MAE 14.8

默认模型性能MAE 14.803069000321994score: 0.06327884792375611

使用optuna调参后MAE减少到14.75。模型预测错误率减少,模型性能得到提升。

'''
复现案例来自python金融风控评分卡模型和数据分析(加强版)
https://study.163.com/series/1202915601.htm?share=2&shareId=400000000398149

'''
Best value: 0.06346014374339114
MAE 14.757922075367848
Best params: {'learning_rate': 0.060000000000000005, 'l2_leaf_reg': 2, 
              'colsample_bylevel': 0.6583674679712648, 'depth': 6, 
              'boosting_type': 'Plain', 'bootstrap_type': 'Bernoulli', 
              'min_data_in_leaf': 20, 'subsample': 0.6867649208669339}

optuna支持参数可视化,下图是对参数重要性排序。

图片

optuna还可以将优化历史可视化:这种可视化有助于查看哪个试验是最佳试验,以及其他试验的客观价值与最佳试验相比如何。如下图,我们观察到并非trails实验次数越多越好,最佳实验并非最后一次。

图片

optuna还可以可视化观察不同超参数在多次试验中的进展情况。

图片

optuna的Contour Plot是一个3D图,其中第三维由目标值构成。从中心的集群(深蓝色表示score分数非常高)。Contour Plot用于观察两个参数关系。

例如learning rate和depth搭配关系,
learning rate在0.06-0.08区间且depth=6时,score非常低;
earning rate在0.04-0.06区间且depth=6时,score非常高。

图片

项目联系人:重庆未来之智信息技术咨询服务有限公司,Toby老师,文章末尾有联系方式。

版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python机器学习建模

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值