机器学习调参工具

一、超参数调优的三种常见策略

网格搜索、随机搜索、贝叶斯搜索

二、sklearn的网格搜索和随机搜索,以及参数取样

model_selection.GridSearchCV(estimator, ...)

Exhaustive search over specified parameter values for an estimator.

model_selection.HalvingGridSearchCV(...[, ...])

Search over specified parameter values with successive halving.

model_selection.ParameterGrid(param_grid)

Grid of parameters with a discrete number of values for each.

model_selection.ParameterSampler(...[, ...])

Generator on parameters sampled from given distributions.

model_selection.RandomizedSearchCV(...[, ...])

Randomized search on hyper parameters.

model_selection.HalvingRandomSearchCV(...[, ...])

Randomized search on hyper parameters.

三、调参工具

1.贝叶斯搜索

pip install scikit-optimize

from skopt import BayesSearchCV

还有个pip install bayesian-optimization

2.hyperopt

简单易用

还有与模型库结合的专用形式如hyperopt-sklearn,hyperas

3.optuna

对比
bayes_opt  

 ✅实现基于高斯过程的贝叶斯优化 ✅当参数空间由大量连续型参数构成时⛔包含大量离散型参数时避免使用⛔算力/时间稀缺时避免使用 
hyperopt    

✅实现基于TPE的贝叶斯优化✅支持各类提效工具✅进度条清晰,展示美观,较少怪异警告或报错✅可推广/拓展至深度学习领域⛔不支持基于高斯过程的贝叶斯优化⛔代码限制多、较为复杂,灵活性较差

optuna    

✅(可能需结合其他库)实现基于各类算法的贝叶斯优化✅代码最简洁,同时具备一定的灵活性✅可推广/拓展至深度学习领域⛔非关键性功能维护不佳,有怪异警告与报错   

四、建模整体流程寻优的工具

1.TPOT

包含特征选择、特征预处理、特征构建、同时还可以进行模型选择和参数调优这一系列的管道搜索,找到一条最优的管道,调参部分使用网格搜索。总体相当耗时。

2.auto-sklearn

meta-learning是用于初始化贝叶斯优化器的元学习,它可以去学习样本数据的模样,一旦找到相似的数据集,就可以根据经验来推荐好用的分类器,

并使用贝叶斯优化自动调超参数,

build-ensemble是优化过程中的自动模型集成,可以根据贝叶斯优化找到最佳的分类器组合,往往能提高预测的准确性。

五、NNI

微软自动深度学习工具 NNI 具备以下优势:
• 支持多种框架:提供基于 Python 的 SDK,支持 PyTorch、TensorFlow、scikit-learn、LightGBM 等主流框架和库;
• 支持多种训练平台:除在本机直接运行外,还能通过 SSH 调度一组 GPU 服务器,或通过 FrameworkController、KubeFlow、OpenPAI 等在 Kubernetes 下调度大规模集群;
• 支持机器学习生命周期中的多环节:特征工程、神经网络架构搜索(NAS)、超参调优和模型压缩等;
• 提供易用的命令行工具和友好的 WEB 用户界面;
• 大量的示例能帮助你很快上手;
• 最后划重点,NNI的所有文档都有中文版!
 

插播几个有用的库

imbalanced-learn处理不平衡数据,与sklearn兼容

PyFlux时间序列分析,模型有ARIMA、GARCH、VAR等

tsmoothie基于平滑处理的异常点检测

你可能感兴趣的:(机器学习,sklearn,人工智能,调参)