在当今的技术领域,机器学习模型和人工智能机器的构建涉及到诸如调整超参数和选择提供更好准确性的模型等复杂过程。这些模型的行为由一系列指标控制。为了手动实现这一结果,需要进行许多实验,耗费大量的时间和计算资源。例如,对于一个简单的猫狗识别模型,或者对于不受时间和资源限制的大型应用项目,进行微小的调整以提高卷积神经网络的准确性可能会非常繁琐。
有多种机器学习算法可以用来训练模型,而且通常选择最有效的算法来满足数据和预测需求变得越来越困难和复杂。此外,执行许多预处理步骤来帮助清理数据并为机器学习模型做好准备,比如缺失特征的插补、去除NaN值等。
在寻找最佳模型的过程中,尝试不同的算法和预处理转换组合,这需要大量的时间和计算资源。那么,如何实现这一点呢?不用担心,即使对图表中的一半术语也一无所知。
让尝试实现这一点。已经花费了很多时间来为项目找到完美的模型,调整超参数以获得更好的准确性,相信,这非常令人疲惫。借助Azure机器学习的帮助,可以自动化地比较使用不同算法和预处理选项训练的模型。
现在,这里有一个令人震惊的惊喜!可以使用视觉界面在线与工作室互动,或者使用SDK来创建个性化定制,它支持最喜欢的语言,Python。这两种方法之间唯一的区别是SDK为提供了更大的控制权来设置自动化机器学习实验的设置。尽管如此,视觉界面更容易使用。
还在等什么?让开始吧。已经花费了很多时间来为项目找到完美的模型,调整超参数以获得更好的准确性,相信,这非常令人疲惫。借助Azure机器学习的帮助,可以自动化地比较使用不同算法和预处理选项训练的模型。
将探索泰坦尼克号数据集,了解整个机器学习过程是如何自动化的。在继续之前,让看看什么是自动机器学习。这次自动机器学习练习将指导如何使用Azure订阅和Azure机器学习工作室来尝试多种预处理技术和模型训练算法,并行自动化。
在这里,探索云计算的力量,为数据找到表现最佳的机器学习模型。自动化ML帮助无需深入的数据科学或编程知识就可以训练模型。对于有数据科学和编程经验的人来说,它提供了一种节省时间和资源的方法,通过有效自动化算法选择和超参数调整过程。
让开始在Azure云中创建一个机器学习资源。将资源命名为博客空间,因为这是为博客准备的,但可以随意命名。保留了默认值,没有做任何更改。
创建资源组后,应该得到一个页面,点击上面的Studio Web URL将带进入机器学习工作室,或者可以访问这里,并使用凭据登录。
这就是工作室的样子,正如所看到的,许多惊人的功能可以被全球开发者使用。在左列中,向下滚动并点击计算。在这里,将创建计算实例和计算集群。保持默认值,但可以根据订阅选择VM。选择了Standard_DS11_v2(2核,14GB RAM,28GB磁盘),但可以自由选择列表中的选项。
让开始编码吧!在计算实例中,点击Jupyter选项,这将打开Jupyter Notebook(确保点击的是Jupyter,而不是Jupyter Lab)。接下来,将创建一个新的笔记本,将笔记本命名为自动ML。让逐个代码单元格地浏览这个笔记本。除了最新版本的azureml-sdk和azureml-widgets包,还需要azureml-train-automl包来运行这个笔记本中的代码。
!pip show azureml-train-automl
安装了所需的SDK后,可以连接到工作区。
import azureml.core
from azureml.core import Workspace
ws = Workspace.from_config()
print("Ready to use Azure ML {} to work with {}".format(azureml.core.VERSION, ws.name))
需要在笔记本中加载训练数据。下面的代码看起来复杂,但它在数据存储中搜索泰坦尼克号数据集。如果不存在,上传数据并将其存储在数据存储中。
from azureml.core import Dataset
default_ds = ws.get_default_datastore()
if 'Titanic dataset' not in ws.datasets:
default_ds.upload_files(files=['./Titanic.csv'],
target_path='Titanic-data/',
overwrite=True,
show_progress=True)
tab_data_set = Dataset.Tabular.from_delimited_files(path=(default_ds, 'Titanic-data/*.csv'))
try:
tab_data_set = tab_data_set.register(workspace=ws,
name='Titanic dataset',
description='Titanic data',
tags={'format':'CSV'},
create_new_version=True)
print('Dataset registered.')
except Exception as ex:
print(ex)
else:
print('Dataset already registered.')
记住之前创建的集群吗?在这里,将它连接起来。
from azureml.core.compute import ComputeTarget
training_cluster = ComputeTarget(workspace=ws, name="blog-cluster")
最重要的配置设置之一是评估模型性能的指标。可以像这样检索由自动化机器学习为特定类型的模型任务(分类或回归)计算的指标列表:
import azureml.train.automl.utilities as automl_utils
for metric in automl_utils.get_primary_metrics('classification'):
print(metric)
设置自动机器学习。决定想要优化的指标(在这个例子中,AUC_weighted),可以配置自动化机器学习运行。由于这是一个简单的数据集,将迭代次数保持在4。
from azureml.train.automl import AutoMLConfig
automl_config = AutoMLConfig(name='Automated ML Experiment',
task='classification',
compute_target=training_cluster,
training_data = train_ds,
validation_data = test_ds,
label_column_name='Survived',
iterations=4,
primary_metric = 'AUC_weighted',
max_concurrent_iterations=2,
featurization='auto')
print("Ready for Auto ML run.")
所有配置设置完成后,现在可以运行实验。将show_output设置为False,但可以将其设置为True以实时查看模型运行情况。
from azureml.core.experiment import Experiment
from azureml.widgets import RunDetails
print('Submitting Auto ML experiment...')
automl_experiment = Experiment(ws, 'Titanic-automl-sdk')
automl_run = automl_experiment.submit(automl_config)
RunDetails(automl_run).show()
automl_run.wait_for_completion(show_output=False)
可以像下面这样检索表现最佳的模型,还可以查看最佳运行转换和最佳运行指标。代码在笔记本中不可用,但可以尝试一下。将在这里分享代码。
print('nBest Run Transformations:')
for step in fitted_model.named_steps:
print(step)
print('nBest Run Metrics:')
best_run_metrics = best_run.get_metrics()
for metric_name in best_run_metrics:
metric = best_run_metrics[metric_name]
print(metric_name, metric)
最后,找到表现最佳的模型后,可以注册它。
这并不是一件容易的事。最初,当尝试在本地系统上使用AutoML时,遇到了一些问题,无法将Azure订阅与Visual Studio Code连接起来。找不到解决方案,所以转向Azure Cloud来创建Python笔记本。结果证明这是完美的,因为它消除了创建一个需要端点和订阅密钥的JSON文件的需要。
一些代码单元格的输出有点难以理解。对于这个领域知识很少或没有的人来说,输出可能看起来像乱码。例如,当提交AutoML实验并运行时,会得到一个包含模型使用和依赖项及其版本的大量值的列表。不得不花一些时间来弄清楚和理解输出。
这对有什么好处?AzureAutoML所做的一切都是帮助数据科学家和开发人员更快、更有信心地构建、部署和管理高质量的模型。有了如此庞大和复杂的操作,行业需要一个可以尽快可靠地投入生产的解决方案。
所有这些特性使其能够满足行业标准。这个工具通过支持整个机器学习过程的开发体验,从构建到训练和部署模型,帮助提高生产力。不同的模型需要不同的输入数据格式;通过使用特征工程和调整超参数来开发准确的模型,使用自动化机器学习来解决图像、文本或表格模型的问题。不喜欢Jupyter笔记本?别担心。可以使用Visual Studio Code从本地到云训练,并使用功能强大的基于云的CPU和GPU集群进行扩展或缩小。