机器学习:AutoGluon引见及示例
作者头像
  • 杜小含
  • 2019-12-13 18:44:29 15

引介AutoGluon

AutoGluon是一款全新的开源AutoML库,适用于图像、文本和表格数据集的深度学习(DL)和机器学习(ML)任务。不论你是初学者还是资深从业者,AutoGluon都能简化你的工作流程。通过使用AutoGluon,你只需编写少量Python代码就能开发和优化深度学习模型。

主要特点

在过去,创建机器学习模型需要大量的背景知识、经验和人力。数据准备、特征工程、验证拆分、缺失值处理和模型选择都是机器学习应用程序需要处理的任务。特别是超参数的选择,是一个非常复杂的过程。

超参数是指在构建模型时需要决定的许多参数,比如数据处理步骤、神经网络架构以及训练过程中使用的优化程序。每个超参数都会以某种方式影响模型的预测性能,而强大的模型(如深度神经网络)通常需要更多的超参数调优。细微的超参数变化可能会显著改变模型的效果。由于不清楚如何做出这些决策,开发者通常需要手动调整他们的机器学习管道,这可能需要多次迭代和大量的人力工作。

AutoGluon通过自动化所有这些任务,提供了一种无需手动干预的体验。它会利用可用的计算资源来找到最佳的机器学习方法。AutoGluon支持自动化的图像分类、对象检测、文本分类等监督学习任务。每个任务的超参数通过贝叶斯优化、超带和强化学习等优化算法自动选择。因此,你不需要熟悉底层模型,因为所有超参数都将自动调整到默认范围内,这些默认范围对于特定任务和模型来说效果很好。

对于专业人员,AutoGluon允许他们轻松地自定义这一过程。例如,你可以为某些超参数指定值范围,或者使用AutoGluon自动调整自定义模型的各个方面。如果你有多台机器,AutoGluon可以轻松地将计算任务分布到这些机器上,以便更快地获得训练好的模型。

AutoGluon示例

安装

为了使用AutoGluon,建议安装CUDA 10.0和GPU以加速对象检测任务。此外,还需要安装MXNet以利用深度学习模型。

bash pip install --upgrade mxnet-cu100 pip install autogluon

对象检测示例

我们将使用AutoGluon来演示对象检测任务。在对象检测中,不仅要识别图像中的对象,还要定位它们的位置。

首先,我们需要导入AutoGluon并指定对象检测任务。然后,我们将下载并加载一个用于演示的数据集。该数据集是使用VOC数据集的摩托车类别生成的。

```python import autogluon as ag from autogluon import ObjectDetection as task

url = 'https://autogluon.s3.amazonaws.com/datasets/tinymotorbike.zip' datadir = ag.unzip(ag.download(url)) dataset = task.Dataset(data_dir, classes=('motorbike',)) ```

接下来,我们可以使用fit()函数训练一个检测器模型:

python detector = task.fit(dataset)

在这个调用中,AutoGluon将在不同的网络配置和优化超参数下训练多个模型,并选择最佳模型作为最终的检测器。在没有任何用户输入的情况下,调用fit()还会自动应用最新的深度学习技术,例如预训练的YOLOv3网络的迁移学习。我们可以通过predict()方法在新图像上测试训练好的检测器:

python url = 'https://autogluon.s3.amazonaws.com/images/object_detection_example.png' filename = ag.download(url) index, probabilities, locations = detector.predict(filename)

predict()函数会自动加载测试图像,并输出每个检测对象的预测类别、概率和边界框位置。这将生成如上所示的可视化图像。

表格数据示例

表格数据是最常见的数据形式,通常包含结构化数据,如CSV文件或数据库中的数据。在表格数据集中,每一列代表某个变量的测量值(称为特征),每一行代表一个独立的数据点。AutoGluon可以用于训练模型,通过其他列预测特定列的值,并且可以泛化到以前未见过的实例。

我们将训练一个用于预测个人收入是否超过50,000美元的模型。我们将使用80%的数据进行训练,并用20%的数据测试生成的AutoGluon预测器。使用AutoGluon,我们不需要指定验证数据。AutoGluon将使用提供的训练数据最优地分配验证集。

首先,我们需要导入AutoGluon并指定一个任务,在这个任务中我们将使用TabularPrediction处理表格数据。然后,我们从S3上的CSV文件加载数据集。

```python from autogluon import TabularPrediction as task

trainpath = 'https://autogluon.s3.amazonaws.com/datasets/AdultIncomeBinaryClassification/traindata.csv' traindata = task.Dataset(filepath=train_path)

predictor = task.fit(traindata, label='class', outputdirectory='ag-example-out/') ```

现在我们的预测器模型已经训练完成,我们将对之前未见过的测试数据进行预测。我们可以直接使用返回的预测器,或者从指定的输入目录中加载它。

```python predictor = task.load('ag-example-out/') testpath = 'https://autogluon.s3.amazonaws.com/datasets/AdultIncomeBinaryClassification/testdata.csv' testdata = task.Dataset(filepath=testpath) ytest = testdata['class'] testdatanolabel = testdata.drop(labels=['class'], axis=1)

ypred = predictor.predict(testdatanolabel) ypredproba = predictor.predictproba(testdatanolabel)

print(list(ypred[:5])) print(list(ypred_proba[:5])) ```

以上就是AutoGluon的基本使用方法。通过这些示例,你可以看到AutoGluon的强大之处,它可以显著简化机器学习的工作流程。

    本文来源:图灵汇
责任编辑: : 杜小含
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
引见示例AutoGluon机器学习
    下一篇