[经验交流] NAIE的超参优化来啦

超参数优化



关于机器学习模型的调参,实在是除了特征工程以外大家第二关心的问题。常用的方法有Grid search(网格搜索),Random Search(随机搜索)、Genetic algorithm(遗传算法)、Particle Swarm Optimization(粒子群优化)、Bayesian Optimization(贝叶斯优化)等。

 

我个人常用的就是随机搜索。主要思路就是在超参数的所有组合中,随机选择,最终找到效果最好的一组超参数,这个方法就是思路简单,但是计算量很大,超参数的组合数很容易“爆炸”,是一个相对粗糙的调参方法,运气很重要,玄学调参。

 

NAIE的模型自带了Hyper Parameter Optimization的API,提供了四种超参优化的算法,分别是网格搜索,随即搜索,贝叶斯优化和SMAC。

 

网格搜索是跟随机搜索的思路非常相近,就是遍历每一种超参组合,直到找到效果最好的超参组合,但是计算量特别大。

 

贝叶斯优化要求已经存在几个样本点,并且通过高斯过程回归计算前面n个点的后验概率分布,得到每一个超参数在每一个取值点的期望均值和方差,其中均值代表这个点最终的期望效果,均值越大表示模型最终指标越大,方差表示这个点的效果不确定性,方差越大表示这个点不确定是否可能取得最大值非常值得去探索。关于贝叶斯优化的讲解我参考了这篇博文(https://blog.csdn.net/u010159842/article/details/83030571)。

 

SMAC使用随机森林对目标函数进行建模,从随机森林认为最优的区域(高EI)中抽取下一个点。我个人的理解是认为,SMAC是贝叶斯优化的一种思路,只是换掉了目标函数的代理算法。关于贝叶斯和SMAC的使用,我经验不多,希望大佬能传授一下。

 

NAIE的超参优化的例子在sdk文档里有,有兴趣的同学可以关注一下。磨刀不误砍柴功,封装好的超参优化得赶紧学习起来。


                                               

image.png