ml模型超参数优化库
optml的Python项目详细描述
这个包提供了几种黑盒优化方法的实现来优化 机器学习模型的超参数。它的目的是使数据科学家能够使用 快速成型的优化技术。只需导入optml并为其提供一个模型和 要优化的参数。
optml为使用scikit learn、keras、xgboost(希望 很快就有了StatsModels)。
先决条件
此软件包要求scikit learn版本为0.19.0或更高版本。如果scikit learn还没有 已安装运行pip install scikit-learn==0.19.0。如果你想利用 HyperoptOptimizer然后您还需要安装 hyperopt(例如通过pip install hyperopt)。
安装
如果scikit learn是0.19或更高版本,只需使用pip install optml和 你准备好了。
用法
指定ml模型和要优化的参数。对于你必须的参数 选择类型(如integer、categorical、boolean等)及其可以接受的值的范围。
model=SomeMLModel()params=[Parameter(name='param1',param_type='continuous',lower=0.1,upper=5),Parameter(name='param2',param_type='integer',lower=1,upper=5),Parameter(name='param3',param_type='categorical',possible_values=['val1','val2','val3'])]
然后定义评价函数。这可以是从rmse到crossentropy到custom的任何东西 功能。求值函数的第一个参数是真标签数组,第二个参数是 参数是具有模型预测的数组。
defclf_score(y_true,y_pred):returnnp.sum(y_true==y_pred)/float(len(y_true))
导入并初始化优化器,并为某些培训数据优化模型。
fromoptml.bayesian_optimizerimportBayesianOptimizerbayesOpt=BayesianOptimizer(model=model,hyperparams=params,eval_func=clf_score)bayes_best_params,bayes_best_model=bayesOpt.fit(X_train=X_train,y_train=y_train,n_iters=50)
功能
目前这个库包括:*随机搜索*并行网格搜索*一个简单的遗传 算法*贝叶斯优化(也支持分类参数)*hyperopt(使用 hyperopt)
如何选择优化器
optml实现了几种优化方法,以满足 数据科学问题。主要关注的问题之一是评估一个集合的模型所需的工作 参数:如果模型花了很长的时间来训练,我们应该选择一个最大化的优化器。 每一组新参数的潜在改进。在这种情况下,贝叶斯优化和 hyperopt更适用。如果一个模型的训练成本很低,那么我们可以寻求 评价。
还要考虑参数的数量及其范围。显然,优化起来比较困难 在一个很大的搜索空间。建议仅在优化中包含参数,如果它们是 期望改进最终的模型。
还请注意,所有optml的优化器都要求参数是有界的。
number of evaluations | works with large search space | can use training in parallel | handles categorical parameters | stochastic optimisation | |
---|---|---|---|---|---|
Gridsearch | high | no | yes | yes | no |
Random Search | high | yes | yes | yes | yes |
Genetic Algorithm | high | yes | not implemented | yes | yes |
Bayesian Optimizer | low | yes | not implemented | yes | yes |
Hyperopt | low | yes | yes | yes | yes |
待办事项
- 算法:
- 为遗传算法实现更多选项
- 元启发式/群优化
- 功能性
- 如果在x次迭代后没有显著的改进,则提前停止
- 可用性
- 更好的文档记录
许可证
这个项目是在mit许可下授权的-请参阅LICENSE.md文件 详细信息