跳转到主要内容

贝叶斯调优和赌徒

项目描述

BTB 来自麻省理工学院数据到人工智能实验室的开源项目。

一个简单的、可扩展的后端,用于开发自动调优系统。

Development Status PyPi Shield Travis CI Shield Coverage Status Downloads Binder

概述

BTB ("贝叶斯调优与赌博机") 是一个简单、可扩展的后端,用于开发自动调优系统,如AutoML系统。它提供了一个易于使用的界面来 调整 模型和 选择 之间的模型。

它目前正在被几个AutoML系统使用

现在试试!

如果您想快速发现 BTB,只需点击下面的按钮并按照教程操作!

Binder

安装

要求

BTB 已在 Python 3.6, 3.7 和 3.8 上开发和测试

此外,尽管这不是强制性的,但强烈建议使用 virtualenv,以避免干扰在运行 BTB 的系统中安装的其他软件。

使用pip安装

安装 BTB 最简单、推荐的方式是使用 pip

pip install baytune

这将从 PyPi 拉取并安装最新的稳定版本。

如果您想从源代码安装或为项目做出贡献,请阅读 贡献指南

快速入门

在本简短教程中,我们将引导您完成使用BTB来 选择 之间模型和 调整 模型以解决机器学习问题的必要步骤。

特别是,在这个示例中,我们将使用 BTBSession 通过在 Wine 分类问题上选择 DecisionTreeClassifierSGDClassifier 模型(来自 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

更多教程

  1. 仅要对 超参数 进行 调优 - 请参阅我们的 调优 教程 此处此处文档
  2. 要查看我们支持的 超参数类型,请参阅我们的 此处文档
  3. 您可以在 此处 了解我们的基准测试框架。
  4. 请参阅我们的 选择教程此处文档

有关 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 (58.8 kB 查看哈希值)

上传时间 源码

构建发行版

baytune-0.5.0-py3-none-any.whl (75.2 kB 查看哈希值)

上传时间 Python 3

由以下支持