automl
https://www.jiqizhixin.com/articles/2019-11-19 一文盘点AutoML库(附PPT等链接) https://cloud.tencent.com/developer/news/313229 Autosklearn到底做了什么?
https://blog.csdn.net/wonner_/article/details/103511168 贝叶斯优化原理及应用[附XGBoost、LightGBM超参数调优代码][scikit-optimize] 综合考虑到质量和速度
SMBO算法的每个迭代步可以分为如下的步骤: 1.依据历史信息构造(超参,性能)的性能函数, 2.依照性能函数,选取最有可能是最小值的超参,并将这个点对应性能算出。 3.将新的(超参,性能)加入历史信息中,进行重复的迭代。
将SMBO算法实例化到SMAC算法,所对应的是则是: 1.性能模型是随机森林的高斯过程模型。 2.通过局部搜索和全局的随即选点,算出多个最有可能达到最小值的点进行进一步筛选。 3.筛选点的过程是一个bandit问题,这里SMAC算法通过intensify过程使用经可能少的资源找到最有超参。
思路两类:一种用贝叶斯在可能性更高的区域以提高搜索效率, 另一种方法是在训练时终止学习,从而高效地搜索参数,例如逐层减半(Successive Halving),超带宽(Hyperband)等。
最初级的 RandomSearch和GridSearch , 稍微高级一点的: Genetic algorithm 然后加入贝叶斯 Hyperopt (TPE) , Spearmint(高斯过程代理) 和 SMAC(随机森林回归)(目前效果最好的) optuna除了用贝叶斯选择参数外,还主要在剪枝(pruning mechanism)上做了优化。
然后工程角度, SMAC可以到参数服务器进行异步并行化,还有用 , Optuna支持异步分布式优化,
https://github.com/automl/SMAC3
现在目前最好的xgboost类的自动调参工具是SMAC,比Hyperopt、BOHB. 而且如果是定期训练,train数据没啥大变化的,可以将历史训练经验加载进去,可以进一步加速。 但是官方的SMAC3包不支持异步并行,可以用微软的nni,而且也支持神经网路结构的调参。
现在的自动化调参都支持将特征处理方法的选择当做参数一起调参,可以把这个剥离出来,特征处理常规化,而且这个对模型效果影响不大。
Last updated