贝叶斯调优和赌徒
项目描述
来自麻省理工学院数据到人工智能实验室的开源项目。
一个简单的、可扩展的后端,用于开发自动调优系统。
- 许可证:MIT
- 开发状态:预alpha
- 文档:https://mlbazaar.github.io/BTB
- 主页:https://github.com/MLBazaar/BTB
概述
BTB ("贝叶斯调优与赌博机") 是一个简单、可扩展的后端,用于开发自动调优系统,如AutoML系统。它提供了一个易于使用的界面来 调整 模型和 选择 之间的模型。
它目前正在被几个AutoML系统使用
- ATM,一个用于分类器调优的分布式、多租户AutoML系统
- MIT的系统 用于DARPA 数据驱动的模型发现 (D3M) 项目
- AutoBazaar,一个灵活的通用AutoML系统
现在试试!
如果您想快速发现 BTB,只需点击下面的按钮并按照教程操作!
安装
要求
BTB 已在 Python 3.6, 3.7 和 3.8 上开发和测试
此外,尽管这不是强制性的,但强烈建议使用 virtualenv,以避免干扰在运行 BTB 的系统中安装的其他软件。
使用pip安装
安装 BTB 最简单、推荐的方式是使用 pip
pip install baytune
这将从 PyPi 拉取并安装最新的稳定版本。
如果您想从源代码安装或为项目做出贡献,请阅读 贡献指南。
快速入门
在本简短教程中,我们将引导您完成使用BTB来 选择
之间模型和 调整
模型以解决机器学习问题的必要步骤。
特别是,在这个示例中,我们将使用 BTBSession
通过在 Wine 分类问题上选择 DecisionTreeClassifier
和 SGDClassifier
模型(来自 scikit-learn)来解决问题,同时搜索它们的最佳 超参数
配置。
准备评分函数
使用 BTBSession
类的第一步是开发一个 评分
函数。
这是一个Python函数,给定一个模型名称和一个 超参数
配置,评估模型在您的数据上的性能并返回一个分数。
from sklearn.datasets import load_wine
from sklearn.linear_model import SGDClassifier
from sklearn.metrics import f1_score, make_scorer
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
dataset = load_wine()
models = {
'DTC': DecisionTreeClassifier,
'SGDC': SGDClassifier,
}
def scoring_function(model_name, hyperparameter_values):
model_class = models[model_name]
model_instance = model_class(**hyperparameter_values)
scores = cross_val_score(
estimator=model_instance,
X=dataset.data,
y=dataset.target,
scoring=make_scorer(f1_score, average='macro')
)
return scores.mean()
定义可调超参数
第二步是定义我们想要为每个模型 调整
的 超参数
作为 可调参数
。
from btb.tuning import Tunable
from btb.tuning import hyperparams as hp
tunables = {
'DTC': Tunable({
'max_depth': hp.IntHyperParam(min=3, max=200),
'min_samples_split': hp.FloatHyperParam(min=0.01, max=1)
}),
'SGDC': Tunable({
'max_iter': hp.IntHyperParam(min=1, max=5000, default=1000),
'tol': hp.FloatHyperParam(min=1e-3, max=1, default=1e-3),
})
}
启动搜索过程
一旦定义了评分函数和模型的可调 超参数
规范,您就可以使用 btb.BTBSession
开始搜索最佳模型和 超参数
配置。
您需要做的就是创建一个实例,传入可调 超参数
规范和评分函数。
from btb import BTBSession
session = BTBSession(
tunables=tunables,
scorer=scoring_function
)
然后调用 run
方法,指定您想要 BTBSession
执行的可调迭代次数
best_proposal = session.run(20)
结果将是一个字典,指示找到的最佳模型的名称以及使用的 超参数
配置。
{
'id': '826aedc2eff31635444e8104f0f3da43',
'name': 'DTC',
'config': {
'max_depth': 21,
'min_samples_split': 0.044010284821858835
},
'score': 0.907229308339589
}
BTB 的表现如何?
我们有一个综合的 基准测试框架,我们用它来评估我们的 调优器
的性能。对于每个版本,我们都会对 100 多个挑战进行基准测试,比较调优器之间的胜负次数。以下是最新版本的最新排行榜。
最新版本上的获胜次数
调优器 | 有平局 | 无平局 |
---|---|---|
Ax.optimize |
220 | 32 |
BTB.GCPEiTuner |
139 | 2 |
BTB.GCPTuner |
252 | 90 |
BTB.GPEiTuner |
208 | 16 |
BTB.GPTuner |
213 | 24 |
BTB.UniformTuner |
177 | 1 |
HyperOpt.tpe |
186 | 6 |
SMAC.HB4AC |
180 | 4 |
SMAC.SMAC4HPO_EI |
220 | 31 |
SMAC.SMAC4HPO_LCB |
205 | 16 |
SMAC.SMAC4HPO_PI |
221 | 35 |
- 本总结所依据的详细结果可在此 获取。
- 如果您想比较自己的调优器,请按照我们基准测试框架中的步骤进行 操作。
- 如果您有我们应该包括在我们的基准测试中的调优器建议,请联系我们 dailabmit@gmail.com。
更多教程
- 仅要对
超参数
进行调优
- 请参阅我们的调优
教程 此处 和 此处文档。 - 要查看我们支持的 超参数类型,请参阅我们的 此处文档。
- 您可以在 此处 了解我们的基准测试框架。
- 请参阅我们的 选择教程 和 此处文档。
有关 BTB 及其所有可能性和功能的更多详细信息,请查看 项目文档站点!
还请不要忘记查看 笔记本教程。
引用 BTB
如果您使用 BTB,请考虑引用以下 论文。
@article{smith2019mlbazaar,
author = {Smith, Micah J. and Sala, Carles and Kanter, James Max and Veeramachaneni, Kalyan},
title = {The Machine Learning Bazaar: Harnessing the ML Ecosystem for Effective System Development},
journal = {arXiv e-prints},
year = {2019},
eid = {arXiv:1905.08942},
pages = {arxiv:1904.09535},
archivePrefix = {arXiv},
eprint = {1905.08942},
}
项目详情
下载文件
下载您平台的文件。如果您不确定要选择哪一个,请了解更多关于 安装包 的信息。
源代码分发
构建发行版
baytune-0.5.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b46e42ad3f18acc59746ed7db604c8ab0a8e2daae42588c5649ab1097717f075 |
|
MD5 | 62bc01be0f3f6fb0e0f810937bbb0da2 |
|
BLAKE2b-256 | 1f9262299cdae8539ebf877eb3b8b41295f0394d8ee0078af4c8c1d807d6e793 |
baytune-0.5.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fd226d739cbfb2086901345e58f807ab70cc4f8ed4ecd10578b4b7a470ded0b3 |
|
MD5 | 411039059449c927d6cf0fbe3809d834 |
|
BLAKE2b-256 | 2fae3cb956891a7a1dafeb85fce50d84ca9a7917d372e2dcec5dd3587d43f752 |