机器学习:模型调参之方法论
背景
在某个数据场景下,能够通过模型调参达到比一般情况更好效果的调参技巧是从业者摆脱“调包侠”最有效的方法,
正因为此,模型调参一直是建模人员向往的高地,但这要求建模人员具有强大的综合能力。
例如对数据业务的理解、算法本质的理解、合适的调试工具、做实验的方法和策略、细致的观察和分析能力,等等。
其中“调试工具、做实验的方法和策略”体现了软件工程的实践能力
模型调参概述
调参过程可通俗表述为:给定一组数据D和具有可调N个参数的算法 ,调参的目的就是在由参数组成的N维向量集 里,挑选一组参数λ,使得算法在训练集学习后能在验证集取得最小的损失(最优的模型效果),
其数学表达式为式(12-1)
其中,N维向量集称为参数配置空间,由实数、正数、布尔和条件等类型的变量组成。
实际上不同的特征处理方法、算法也可视为类别型变量,作为配置空间的一部分,这极大扩展了配置空间,构成了算法选择和超参数优化组合问题——CASH (Combined Algorithm Selection and Hyperparameter optimization problem)。
超参数和作弊的随机种子
初学者是否有过这样的疑问:“机器学习不就是学习/求解参数吗,为什么还需要调参?”
对这个问题的最直接回答是:调算法学习不到的参数。那么,模型调参到底是调哪些参数呢?
答案是调超参数(Hyperparameter),简称超参,
在普通的编程里可以将其理解为Magic Number,调参的过程即为超参优化的过程(Hyperparameter Optimization,HPO)。
那么什么是超参呢?
超参的概念来自统计学,超参被人为当作先验输入到模型中。
例如,在对服从高斯分布的数据建模,即估计该分布的均值和方差,当认为均值服从参数为λ的Poisson分布时,参数λ就是待建模的系统超参。
在机器学习中,超参的概念与此类似,指的是决定模型框架/结构或算法行为的参数。
随机种子:不论是数据划分还是算法运行过程,都存在随机性(随机种子的介绍请参考第3章)。
随机种子是最常见的建模作弊的手段(或者建模工程师自己也没有意识到),当通过不断调整随机种子而择优选择的模型,就是作弊的模型。
下面给出了3个是否是超参的直观判断方法:
1) 模型无法直接从数据中估算的参数;
2) 是否必须手动指定的参数(包含接口中的缺省的一些参数);
3) 算法接口中的输入参数(排除与算法无关的参数,如输入数据等)。
机器学习学到的“参数”似乎比要调整的超参少,这个问题留给读者思考。下文描述的参数,无特别说明时,指的都是超参!
调参三要素
在调参前通常需要了解3个调参要素:目标函数、搜索域和优化算法
目标函数:即定义要优化的目标/评估标准以判断模型,一般来说即最小化损失、最大化验证集上模型指标
搜索域:也称为域空间、配置空间,即超参的搜索空间,亦称为超参空间。实践中需关注参数的上下界、取值范围等。
搜索算法:在实践中,我们需选用某种调参搜索算法,例如常见的、下文要介绍的网格搜索、随机搜索、贝叶斯搜索以及它们组合而成的混合搜索
常见的超参类型如下所示。
布尔型:例如线性回归中选择是否拟合截距fit_intercept; 整数型:例如最近邻中的邻居的个数,必须为正整数; 浮点型:例如常见的抽样比例、Gamma参数等; 对数型:例如常见的正则项和学习率,其参数一般取10的对数,如0.1、0.01、0.001; 类别型:例如逻辑回归中penalty选择L1或L2正则,不同的数据处理方法也属于类别型; 条件型:当且仅当具有某些前置条件的参数时,该参数才有效或才定义(一个超参数的值取决于另一个或多个超参数的取值);例如逻辑回归中只有L2的正则且solver参数为‘liblinear’时,对偶求解参数dual才生效。
调参流程和方法
一定要铭记:参数只有更好,没有最好,应适可而止,朝着项目总体目标推进。
调参可分为手动调参、半自动化调参和自动化调参,这些内容将在下文详细介绍。
调参流程
调参首先应有方向性的指导。
第5章提到,根据调参方向的不同,可分为:
先训练复杂的模型并在后续逐渐简化;反之,由简至繁逐渐改善模型,并建议使用方式一。
在奥卡姆剃刀原则的理论指导下,选择前者,能减少我们决策的路径。
选择某个学习算法后,调参主体流程遵循调参三要素:定义目标、定义配置空间、选择搜索算法。此外,调参流程中还需要包括如下过程。
1)良好的记录每轮结果:
2)可视化的呈现和分析:
3)配置空间的调整:
4)搜索算法的调整:
5)综合得到最终的参数和结果:
超参选取策略和特定模型超参推荐
超参的选取分为:初次选取和启发式选取
超参空间的初次选取主要从以下几个方面获得:学习算法缺省参数附近选取、个人经验、他人建议、论文和书籍中的推荐等。
其中缺省参数是一个良好的起点,具有一定的理论和实验依据
尽管超参数量可能很多,但并非所有超参都同等重要;在调参的过程中,应该先选取重要的参数,其次才是不那么重要的参数。
超参空间的选取具有一定的技巧。
1) 参数范围:
2) 参数分组:机器学习是偏差和方差权衡的艺术,一组是有利于偏差的参数、一组是有利于方差的参数。
3) 目标:前期的调参并不需要将关注点完全放在优化目标上,而是倾向于研究超参或超参组合与目标的关系
一般来说,某个学习算法通常只有几个重要参数,掌握这些算法和对应的重要参数,我们就有了经验。下面给出几个参考示例。
1) 逻辑回归:理论上逻辑回归并没有特别重要的参数,调优空间不大,常规包含penalty和对应的惩罚力度、可根据不同的应用场景尝试不同的solver;
2) KNN中要属n_neighbors最重要,其次有距离的度量方法;
3) SVM中的核的选取,其次是惩罚力度C;
4) Bagging树模型中树的数量n_estimators;
5) 随机森林中随机选取特征的数量max_features和树的数量n_estimators;
6) 梯度树中的树的数量n_estimators和学习率learning_rate;
常用算法候选参数记录在表12-1,请原文参考。
自动调参之元学习和代理模型
笔者简要的将自动调参划分为两种类型
利用学习过程中的经验:如何利用已有的“经验”的元学习(Meta-Learning)
利用代理模型:不直接优化原始模型,而是优化原模型的代理模型
1、元学习,是学习如何学习的方法
有哪些元信息可以作为经验使用呢?
过程元信息:特征处理方法、学习算法和参数/网络结构、模型性能等;
特征元信息:用于描述样本和特征的元信息。常用元信息有:样本数、特征数、分类问题中的类别数、特征中数值和类别各自的数量、特征的缺失情况、特征的统计特征(偏度、峰度、标准差等)、特征间的关系(如相关性)、与目标变量的信息熵等。
理论上说,具有相似的元信息,可以应用相似的算法和参数。
有的机器学习软件包中,能够记录每次训练的元特征信息,用于丰富自身的元信息库/知识库,SmartML就是这样的一个R包。
Auto-sklearn 开源包中,不仅利用特征元信息(包含140个数据集,每个数据集至少包含1000个样本)实现学习热启动,还有下文提到的贝叶斯自动调参方法和自动模型集成的功能!
2、代理模型
代理模型是需要建立新的关于超参的模型的方法——超参和模型性能上建模。常见序列化的代理模型,使用贝叶斯方法迭代建模。常见有:
1) 基于高斯过程的代理模型。
2) 基于树模型的代理模型。
3) 基于TPE(Tree-structured Parzen Estimator)的代理模型
此外,还有基于MCMC的方法、基于进化算法的自动超参优化等。
也可以加一下老胡的微信 围观朋友圈~~~
推荐阅读
(点击标题可跳转阅读)
《机器学习暑期前沿学校》课程视频及ppt分享
下载 | 经典著作《机器学习:概率视角》.pdf
【小抄】机器学习常见知识点总结(2021)
从贝叶斯定理到概率分布:详解概率论老铁,三连支持一下,好吗?↓↓↓