AutoGluon是一款全新的开源AutoML库,适用于图像、文本和表格数据集的深度学习(DL)和机器学习(ML)任务。不论你是初学者还是资深从业者,AutoGluon都能简化你的工作流程。通过使用AutoGluon,你只需编写少量Python代码就能开发和优化深度学习模型。
在过去,创建机器学习模型需要大量的背景知识、经验和人力。数据准备、特征工程、验证拆分、缺失值处理和模型选择都是机器学习应用程序需要处理的任务。特别是超参数的选择,是一个非常复杂的过程。
超参数是指在构建模型时需要决定的许多参数,比如数据处理步骤、神经网络架构以及训练过程中使用的优化程序。每个超参数都会以某种方式影响模型的预测性能,而强大的模型(如深度神经网络)通常需要更多的超参数调优。细微的超参数变化可能会显著改变模型的效果。由于不清楚如何做出这些决策,开发者通常需要手动调整他们的机器学习管道,这可能需要多次迭代和大量的人力工作。
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的强大之处,它可以显著简化机器学习的工作流程。