2017 年 12 月

第 32 卷,第 12 期

人工智能 - 探索 Azure Machine Learning Workbench

作者 Frank La La | 2017 年 12 月

Frank LaVigne在最近的两个专栏中,我探讨了 Azure 机器学习工作室提供的功能和服务。2017 年 9 月,Microsoft 发布了用于在 Azure 上进行机器学习 (ML) 的新工具套件。这些新工具的基础是 Azure Machine Learning Workbench。但是,进行 ML 时,有什么比机器学习工作室的简单拖放界面更好呢?

机器学习工作室是创建 ML 模型的理想工具,无需编写代码,但它在有些方面不如人意。首先,这一工具的简单性要求采用“黑盒”方法。无法显示正在使用的算法,只能操作在 UI 中公开的参数。源代码管理实际上是不存在的。虽然可以通过运行历史记录访问项目的以前版本,但机器学习工作室缺乏与传统的源代码管理工具(如 Git)的集成。最后,管理作为 Web 服务公开的模型的部署将面临大规模的独特挑战。

自 2015 年推出机器学习工作室以来,团队一直在收集大小规模用户的反馈。他们采纳了这些反馈并通过可满足各级 ML 专业人员需求的 Machine Learning Workbench 创造了一些独特功能。

创建机器学习帐户

Machine Learning Workbench 需要在 Azure 中预配机器学习帐户。转到 Azure 门户 (portal.azure.com),然后单击左上角的“新建”按钮。在随即出现的文本框中键入“机器学习试验”并单击第一条结果。在下面的边栏选项卡中,单击屏幕底部的“创建”按钮。

接下来,会显示一个边栏选项卡,要求提供用来创建此服务的一些信息。可以选择符合验证要求的任何名称。请参阅图 1 查看我选择的值。目前,该服务仅在三个地区提供。因为我身处美国东海岸,所以我选择了美国东部 2。确保选中创建模型管理帐户旁边的复选框。接下来,选择一个定价层。就本文而言,免费的 DevTest 层就足够了。单击 DevTest 层,然后单击“选择”。最后,单击“创建”按钮。

为创建机器学习试验服务所选的选项
图 1 为创建机器学习试验服务所选的选项

云服务初始化时,正好可以设置本地计算机。

安装 Machine Learning Workbench

虽然 Machine Learning Workbench 在 Mac 和 Windows 上均可用,但本文将采用适用于 Windows 安装的路径。有关在 Mac 上进行安装的详细信息和系统要求,请参阅有关该主题的 Microsoft 文档,网址如下:bit.ly/2zYrA7X

如果尚未在系统中安装 Docker,现在可以进行安装。虽然本文不会使用 Docker,但有关 Machine Learning Workbench 的后续文章将会用到它。Machine Learning Workbench 使用 Docker 在不同的框架中以本地方式运行代码。一些项目默认可使用 Python 和 PySpark 容器,而另一些项目只能使用 Python 容器。可用容器配置可以由配置文件进行管理。

可从以下网址下载适用于 Windows 的 Machine Learning Workbench:aka.ms/azureml-wb-msi。下载安装程序后,运行此程序并按照说明安装该工具。安装完成后,启动程序。输入用于在 Azure 中创建机器学习实验服务的相同帐户凭据。片刻后,屏幕更新并显示“开始使用”窗口。请注意,在左侧的“项目”区域中,工作区的名称应该与之前在 Azure 中输入的值相匹配。另外,请注意,在屏幕的左下角会出现一个青色按钮,并显示活动帐户的名称缩写。点击该按钮以显示飞出菜单,可以在该菜单中查看当前帐户并注销。

创建并运行项目

若要创建新项目,请从“文件”菜单中选择“新建项目”或单击“项目”窗格中的加号。在图 2 显示的以下对话框中,输入 SimpleLinearRegression 作为项目名称,为项目文件选择一个目录,然后从可用的项目模板中选择“简单线性回归”。项目模板是一个很好的资源,可用来学习如何基于各种模型和外部库创建 ML 项目。单击“创建”按钮创建项目。

“新建项目”对话框
图 2 “新建项目”对话框

创建项目后,项目仪表板将打开。Machine Learning Workbench 中的每个项目都会在其项目仪表板中打开。仪表板包含有关项目和功能的说明和信息,类似于 GitHub 存储库中的 readme.md 文件。实际上,仪表板文件的内容位于项目根目录下的 readme.md 文件中。

从“文件”菜单中选择“打开命令提示符”。在命令提示符下键入:

conda install matplotlib

如果提示安装 matplotlib(一个 Python 的绘图库),请按照屏幕上的说明进行操作。安装完成后,关闭命令提示符窗口以返回到 Machine Learning Workbench。请注意“运行”按钮及其左侧的控件。确保在两个下拉列表中选中 local 和 linar_reg.py,并且“参数”文本框为空。单击“运行”。

单击“运行”后,立即出现一个“作业”窗格,并且在列表中显示一个条目。几分钟后,作业将完成。

探索界面 - 作业

在屏幕左边有一个垂直的工具栏,单击从上往下第四个图标,该图标类似于一个时钟,其外部有一个逆时针箭头。在这种情况下,linear_reg.py 文件在执行成功之前无法运行两次,如图 3 中所示。请注意,Machine Learning Workbench 将跟踪通过它执行的作业。在窗口底部“状态”标头下方,单击“已完成”来查看此运行的属性。

作业运行历史记录
图 3 作业运行历史记录

花些时间来了解下此屏幕的各个部分:运行“属性”、“输出”、“可视化效果”和“日志”。运行“属性”将显示有关此特定运行属性的数据。如果 Python 脚本创建输出文件并将它们置于输出子文件夹中,则它们将出现在“输出”部分下方的列表中。在此运行中,有一个文件:lin.png。

屏幕下方是“可视化效果”部分,显示由 Python 脚本创建的所有图像。对于此脚本,有一个文件根据项目中包含的数据文件绘制了线性回归。这是“输出”部分中显示的同一个文件:lin.png。最后,“日志”部分列出所有与此运行相关的日志。

探索界面 - 文件

到目前为止,我已经运行了一个 Python 脚本来执行线性回归并生成输出可视化效果,但是我没有展示任何代码。让我们来看看刚刚运行的作业背后的代码。在屏幕左侧的工具栏中,单击“作业”图标正下方的文件夹图标。在出现的面板中,有一个与该项目相关的文件列表:三个目录和五个文件。单击 linear_reg.py 查看之前运行的脚本的内容。

对于不熟悉 Python 的读者,代码首先导入各种库,以使用数组 (NumPy) 和绘制图形 (matplotlib) 进行高级数学计算。接下来,代码将数据从本地文件 data.csv 加载到数组中。然后,代码将数组转换成能使 NumPy 执行矩阵乘法的 nparray。经过一些计算后,代码将计算出一个近似数据的线性回归公式并输出结果。在 35 到 39 行中,代码使用 matplotlib 呈现数据的图形,并绘制代表线性回归的线条。其余的代码输出有关线性回归模型的错误和准确性的信息。

在有机会浏览脚本文件时,请单击 data.csv 文件查看数据文件。请注意,该文件会立即加载并显示一个 .csv 文件,该文件每行带有用逗号分隔的两个数字。

内置的数据再加工工具

工具栏顶部的第二个图标将显示数据窗格。单击它将显示一个带有两个空节点的树控件。linear_reg.py 文件自行管理数据,并没有使用 Machine Learning Workbench 高级数据再加工工具。现在是探索通过 Machine Learning Workbench 创建数据源的好时机。单击数据窗格中的加号,然后单击“添加新数据源”。 

在下面的对话框中,单击标有文件/目录的框,然后单击“下一步”。浏览到项目目录中的 data.csv 文件,然后单击“打开”。再次单击“下一步”。请注意,Workbench 已经检测到这是一个逗号分隔的文件。保持所有设置不变,然后单击“下一步”。请注意,在此数据类型步骤中,Machine Learning Workbench 已自动检测每个数据字段的格式。单击“下一步”查看采样步骤。

对于这个小数据集,不需要改变任何设置。对于更大的数据集,此屏幕允许你制定自定义策略来选择性地加载数据。这样,在处理高达数 PB 的数据集时,可以选择性地处理一小部分数据,以定义转换数据的规则。单击“下一步”并保留默认选择,以不在最终数据集中包含路径列。单击“完成”。屏幕应如图 4 所示。

结果数据集
图 4 结果数据集

请注意,右侧的窗格显示刚刚在列表中执行的步骤。单击任何一个项目将显示一个选项以编辑操作。在更高级的方案中,此功能通过执行更多的步骤来对数据进行再加工,允许更改和编辑这些步骤。

在屏幕的顶部,有两个工具栏按钮:“度量”和“准备”。单击“度量”。在几秒钟内,Machine Learning Workbench 将自动为每列生成一系列数据可视化效果。使用新的数据集时,收集每个字段的一些基本信息可能会非常有用。度量视图会创建数据集中每个字段的直方图和基本描述性统计信息。可以通过单击“选择度量”下拉列表来自定义显示的度量。默认情况下,选择所有度量。单击新显示的“数据”工具栏按钮返回到上一个屏幕。

现在,单击“准备”按钮。在“准备”对话框中,保留顶部下拉列表的“新建数据准备程序包”默认设置,并在“数据准备程序包名称”中输入 SimpleDataPrep。单击“确定”。现在“数据”窗格有两个条目

右键单击 SimpleDataPrep 条目,然后单击“生成数据访问代码文件”。随即会打开新创建的文件,显示加载引用包并返回 Pandas DataFrame 的存根代码。在 PySpark 环境中,这个调用将返回一个 Spark DataFrame。DataFrame 是 Python 中常见的数据结构。使用由 Machine Learning Workbench 生成的 DataFrame 创建代码可以节省大量时间。

总结

起初,我对机器学习工作室可以得到改进持怀疑态度。然而,我越使用 Machine Learning Workbench,越对它印象深刻。它不仅提供了导入数据的机制,而且还自动生成一个程序包,可用来清理数据并将其以 DataFrame(Python 的常用数据格式)的形式公开。通过采用这种方式导入数据,数据科学家可以节省大量时间。此外,你已经发现使用数据导入工具并不是什么难事。借助 Machine Learning Workbench 还可以使用任何 Python 库,比如 matplotlib。

本文只是粗浅地介绍了 Machine Learning Workbench 的一些功能。在后续文章中,我将更深入地探讨这个出色的工具。例如,配置 Machine Learning Workbench 以使用 Azure 中的虚拟机进行快速处理,“通过示例”转换数据,以及使用 Machine Learning Workbench 中的 Jupyter Notebookz。


Frank La Vigne 负责领导 Wintellect 的数据与分析实践,共同主持 DataDriven 播客。他定期在 FranksWorld.com 上发表博客,你还可以在他的 YouTube 频道“Frank’s World TV”(FranksWorld.TV) 中看到他。

衷心感谢以下技术专家对本文的审阅:Andy Leonard (EnterpriseDNA)、Hai Ning (Microsoft) 和 Jonathan Wood (Wintellect)
Andy Leonard 是一位自称为“数据哲学家”的技术专家,他住在 Farmville。不是在游戏里,而是一个真正的城市。他编写代码并管理数据。他留着摇滚范儿的胡子,努力地工作着。Andy Leonard 是一位喜欢生成和自动化数据集成解决方案的作者和工程师

Jonathan Wood
自高中关注 TechTV 频道以来,Jonathan 对软件和技术的兴趣始终不减。他从事 .NET 和 C# 开发超过八年,主要关注 Web 和移动计算。最近,他热衷于任何与数据有关的东西。Jonathan 是 Wintellect 的一名软件顾问和开发人员,他专注于数据科学、数据可视化效果、机器学习、统计信息以及他所涉及的任何数据主题。


在 MSDN 杂志论坛讨论这篇文章