自动调整模型
atm-ml的Python项目详细描述
ATM-自动调谐模式
- 自由软件:麻省理工学院许可证
- 文档:http://atm.readthedocs.io/en/latest/" rel="nofollow">http://atm.readthedocs.io/en/latest/
ATM是 人类数据交互项目 (HDI)麻省理工学院。它是一个分布式的、可扩展的automl系统,设计时考虑到了易用性。
摘要
对于给定的分类问题,ATM的目标是找到
- 一种分类方法,如决策树、支持向量机等。 或随机森林,和
- 该方法的一组超参数
< > >
从而产生最好的分类器。
atm将预提取特征向量和标签的数据集作为csv文件。 然后开始并行地训练和测试分类器(机器学习模型)。 随着时间的推移,ATM将使用以前分类器的结果来智能地选择 下一步要尝试哪些方法和超参数。 在这个过程中,ATM保存它训练的每个分类器的数据,包括超参数 用于培训IT、广泛的性能指标和模型本身的序列化版本。
ATM具有以下功能:
- 它允许用户为多个数据集和多个 并行配置问题。
- 它可以在本地、aws*或自定义计算群集上运行*
- 它可以被配置为使用各种automl方法来进行超参数调整和 选择,可在附带的库中找到。
- 它存储关于每个 它已经训练了分类器。
*正在工作!请参见问题40
当前状态
atm及其配套的图书馆btb正在积极发展中。 我们已经进行了转换和改进。
设置/安装
本节介绍在运行ubuntu linux的机器上使用atm的最快方法。 我们希望将来能有更深入的指导,但现在,你应该可以代替 命令您选择的包管理器启动ATM并在最新版本上运行 基于Unix的系统。
ATM与Python2.7、3.5和3.6兼容,并已在Python2.7、3.5和3.6上进行了测试。
克隆项目
git clone https://github.com/hdi-project/ATM.git /path/to/atm cd /path/to/atm
安装数据库
您需要安装libmysqlclient dev包(用于sqlalchemy)
sudo apt install libmysqlclient-dev
以及以下至少一个数据库。
- 对于sqlite(更简单):
sudo apt install sqlite3
- 对于MySQL:
sudo apt install mysql-server mysql-client
安装python依赖项
这也将安装核心自动中的ML库 hdi项目下的开发,作为一个egg,它将跟踪git存储库的更改。
这里显示了
virtualenv
的用法,但是您可以用conda
或您喜欢的 环境经理也一样。virtualenv venv . venv/bin/activate python setup.py install
< > >创建数据运行
python scripts/enter_data.py
此命令将创建一个
datarun
。在ATM中,"数据运行"是一种单逻辑机器学习 任务。如果在没有任何参数的情况下运行上述命令,它将使用默认设置 在atm/config.py
中找到,要在/atm.db
创建新的sqlite3数据库,请创建一个新的数据集
引用上述数据的实例,并创建一个 指向那个数据集。有关此数据库中存储的内容及其用途的详细信息 在这里可以找到该命令应该会产生大量输出,输出的结尾如下:
========== Summary ========== Training data: data/test/pollution_1.csv Test data: <None> Dataset ID: 1 Frozen set selection strategy: uniform Parameter tuning strategy: gp_ei Budget: 100 (classifier) Datarun ID: 1
最重要的信息是数据运行ID。
启动工人
python scripts/worker.py
这将启动一个构建分类器、测试它们并将它们保存到
/models/
目录。输出应该显示正在测试哪些超参数 以及每个分类器的性能("判断度量"),加上陆上通信线 迄今为止的表现。Classifier type: classify_logreg Params chosen: C = 8904.06127554 _scale = True fit_intercept = False penalty = l2 tol = 4.60893080631 dual = True class_weight = auto Judgment metric (f1): 0.536 +- 0.067 Best so far (classifier 21): 0.716 +- 0.035
偶尔,工人在构建和测试 分类器。发生这种情况时,工作程序将向终端打印错误数据,并记录 数据库出错,请转到下一个分类器。
< > >- 每列都是一个功能(或标签)
- 每一行都是一个训练示例
- 第一行是标题行,其中包含每列数据的名称
- 单个列(目标或标签)命名为
类
- 命令行参数
- 配置文件
- 在
atm/config.py
中指定的默认值
< > > 使用yaml配置文件
将配置保存为yaml文件是保存复杂设置或共享的简单方法 他们与团队成员一起。
您应该从
atm/config/templates
中提供的模板开始并修改它们 以满足您自己的需要。
0git clone https://github.com/hdi-project/ATM.git /path/to/atm cd /path/to/atm
run.yaml
包含单个数据集和数据运行的所有设置。指定列车路径
指向您自己的数据集。sql.yaml
包含ModelHub SQL数据库的设置。默认配置将 连接到(并在必要时创建)相对于目录位于/atm.db
的sqlite数据库 从中运行enter_data.py
。如果使用的是mysql数据库,则需要更改 文件如下:
1git clone https://github.com/hdi-project/ATM.git /path/to/atm cd /path/to/atm
aws.yaml
应包含在云中运行ATM的设置。这是不必要的 用于本地操作。更新了yaml文件后,运行datarun创建脚本并将路径传递给它 到您的新配置文件:
2git clone https://github.com/hdi-project/ATM.git /path/to/atm cd /path/to/atm
使用命令行参数
也可以在命令行上分别指定每个参数。的名字 变量与yaml文件中的变量相同。SQL配置变量必须是 以
sql-
开头,aws配置变量必须以aws-
开头使用命令行参数对于快速实验或 只需要更改默认配置中的几个值。例如:
3git clone https://github.com/hdi-project/ATM.git /path/to/atm cd /path/to/atm
也可以使用配置文件和命令行参数的混合;任何命令行 您指定的参数将覆盖配置文件中的值。
< > >- pypi上的第一个版本。
快速使用
下面我们将提供一个如何在桌面上运行ATM的快速教程。 我们将使用一个功能化的数据集,它已经保存在
<表><广告>data/test/pollution_1.csv
中。 这是openml.org上可用的数据集之一。 在这里可以找到更多详细信息。 在这个问题中,目标是使用与空气相关的指标来预测死亡率 污染。下面是csv
文件的快照。 数据有15个功能,最后一列是类
标签。 < /广告><正文>prec 一月 七月 ovr65 弹出 教育 小时 密度 nonw wwdrk 差 hc 氮氧化物 所以@ 潮湿 类 35 23 72 11.1 3.14 11 78.8 4281 3.5 50.7 14.4 8 10 39 57 1 44 29 74 10.4 3.21 9.8 81.6 4260 0.8 39.4 12.4 6 6 33 54 1 47 45 79 6.5 3.41 11.1 77.5 3125 27.1 50.2 20.6 18 8 24小时 56 1 43 35 77 7.6 3.44 9.6 84.6 6441 24.4 43.7 14.3 43 38 206 55 1 53 45 80 7.7 3.45 10.2 66.8 3325 38.5 43.1 25.5 30 32 72 54 1 43 30 74 10.9 3.23 12.1 83.9 4679 3.5 49.2 11.3 21 32 62 56 0 45 30 73 9.3 3.29 10.6 86 2140 5.3 40.4 10.5 6 4 4 56 0 … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … 37 31 75 8 3.26 11.9 78.4 4259 13.1 49.6 13.9 23 9 15 58 1 35 46 85 7.1 3.22 11.8 79.9 1441 14.8 51.2 16.1 1 1 1 54 0 就这样!您可以使用ctrl+c从Worker中脱离并重新启动 用同样的命令;它会在它停止的地方拾取。你也可以运行 在不同的终端同时命令并行工作——所有工人都将 请参考同一个ModelHub数据库。当你预算中的100个分类器都建立好了, 所有工人都将优雅地离开。
定制ATM的配置并使用您自己的数据
atm的默认配置完全由
atm/config.py
控制。我们的文件会 更详细地介绍配置,但本节简要概述了 指定最重要的值。使用自己的数据运行ATM
如果要将系统用于自己的数据集,请将数据转换为类似的csv文件 上面的例子。格式为:
接下来,您需要使用
enter_data.py
为您的任务创建数据集和
数据运行。
脚本将按顺序在以下位置查找每个配置变量的值:
这意味着有两种方法可以将配置传递给命令。
创建自定义数据运行后,启动一个工作进程,指定配置文件和 要计算的数据运行。
4git clone https://github.com/hdi-project/ATM.git /path/to/atm cd /path/to/atm
工作程序使用的sql配置必须与您的配置相匹配 传递到
enter_data.py
--其他rwise,工人会在错误的模型集线器中查找 数据库的数据运行!引用ATM
如果您使用ATM,请考虑引用以下文件:
托马斯·斯威林根、威尔·德雷沃、贝内特·塞弗斯、阿尔弗雷多·奎斯塔·因凡特、阿伦·罗斯、卡扬·维拉马切内尼。atm:用于自动机器学习的分布式、协作性、可扩展系统。ieee bigdata 2017,151-162
bibtex条目:
5git clone https://github.com/hdi-project/ATM.git /path/to/atm cd /path/to/atm
相关项目
BTB
btb,用于贝叶斯优化和bandits,是核心automl HDI项目下正在开发的库。btb公开了几种超参数方法 通过公共api进行选择和调优。它允许领域专家扩展现有的方法 很容易添加新的。BTB是ATM的核心部分,这两个项目是在 串联的,但是它的设计是不可知实现的,并且应该在广泛的范围内有用 超参数选择任务。
功能工具
featuretools是一个用于自动化的python库 特征工程。它可以用来为ATM准备原始的事务和关系数据集。 它由功能实验室创建和维护,也是功能实验室的一部分。 人类数据交互项目
历史记录
0.1.0(2018-05-04)
推荐PyPI第三方库