顺应数据时代潮流,利用云资源进行自动机器学习

近年来数据科学出现了两种趋势:

1.利用云资源进行数据分析和模型训练

2.机器学习管道的算法开发和优化

本文将简要介绍这些趋势,并在Python中使用Google Colaboratory以及通过云资源自动机器学习来展示具体步骤。

使用Google Colab进行云计算

最初,所有计算都是在大型计算机上完成的。你需要通过终端登录,和多用户同时共享的一台大型计算机。然而,伴随着微处理器的发明和个人计算机革命运动的产生,每个人都拥有了属于自己的计算机。虽然笔记本电脑和台式机都能完成日常工作任务,但随着最近数据集规模的扩大和运行机器学习模型所需的计算能力的增加,利用云资源计算势在必行。

一般而言,云计算是指“通过互联网提供计算服务”。这涵盖了从数据库到服务器到软件的各种各样的服务,但在本文中,我们将以Jupyter Notebook的形式在云上运行一个简单的数据科学工作负载。我们将使用相对较新的Google Colaboratory服务:在Google服务器上运行Python的在线Jupyter Notebook功能,你无论在何地都可以通过互联网连接访问,并且可以像Google Doc一样进行共享。

Google Colab使得云计算的使用变得轻而易举。过去,需要花费数十个小时配置Amazon EC2,才能在云上运行Jupyter Notebook,还必须按小时付费!然而从去年起,Google宣布现在可以在其Colab服务器上运行Jupyter Notebook,每次免费试用长达12小时。而且你不必担心安装软件可能会面临的技术困难,现今的笔记本电脑已经预装了大多数的数据科学软件包。

顺应数据时代潮流,利用云资源进行自动机器学习

首先在Colaboratory中打开笔记本

顺应数据时代潮流,利用云资源进行自动机器学习

丰富的在线资源使得数据科学变得越来越容易获取,Colab项目降低了云计算的障碍。对于那些熟悉Jupyter Notebooks的人来说,这是一次完美的革新,而对于那些不是很熟悉它的人来说,这是开始学习使用这个数据科学工具的好机会!

使用TPOT进行自动化机器学习

自动机器学习旨在通过算法设计和优化机器学习管道来解决特定的问题。在此背景下,机器学习管道包括:

1.特征预处理:填补、缩放和构建新特征

2.特征选择:降维

3.模型选择:评估多种机器学习模型

4.超参数调整:寻找最佳模型设置

这些步骤可以无限组合,最佳解决方案将针对问题而改变!设计机器学习管道或许是一个耗时且令人沮丧的过程,不到最后你永远不会知道你开发的解决方案是否接近最优方案。自动机器学习可以通过评估数以千计的可能管道来帮助你寻找针对特定问题的最佳(或接近最佳)解决方案。

机器学习只是数据科学过程的一部分,自动化机器学习并不意味着取代数据科学家。相反,自动机器学习是为了解放数据科学家,以便他们可以在更有价值的方面工作,例如收集数据或解释模型。

自动机器学习工具有许多:H20、auto-sklearn、Google Cloud AutoML。本文将专注于由Randy Olson开发的TPOT。TPOT使用基因编程来找到最佳的机器学习管道。

基因编程

基因编程的工作原理如下:

1.从随机生成的机器学习管道的初始数量开始,比如说100个,每一个都由用于特征预处理、模型选择和超参数调整的函数组成。

2.训练每个管道(称为个人)并使用交叉验证来评估性能指标。交叉验证性能代表个体的“适应性”。每一个人口的训练都被称为一代人。

3.经过一轮训练后,第一代通过繁殖、变异和交叉创造第二代100人。繁殖意味着在管道中保持相同的步骤,选择的概率与健康评分成正比。变异指一代人内部随机变化。交叉是随机变化,从一代到下一代人。总而言之,这三种变化将产生100条新的管道,每条管道都略有不同,但是,根据适应度函数最好的步骤更容易被保留。

4.重复这个过程,通过繁殖、变异和交叉创造新的个体。

5.在优化结束时,选择性能最好的单个管道。

基因编程在建立机器学习模型方面的主要优势在于探索。即使是时间充裕的人,也会由于知识和想象力有限,而无法尝试所有预处理、模型和超参数的组合。基因程序设计不会对任何特定的机器学习步骤顺序产生初始偏差,并且每一代都会对新的管线进行评估。

在云上自动进行机器学习

现在,我们可以在Google Colab笔记本中使用TPOT来自动设计机器学习管道。

我们的任务是:根据纽约市的能源数据,要预测建筑物的能源之星得分。通过使用人工特征工程、降维、模型选择和超参数调整,我们设计了一个梯度提升回归模型,该模型在测试集上实现了9.06分的平均绝对误差(范围从1到100)。

该数据包含数十个连续的数字变量(如建筑物的能源使用和面积)以及两个独热编码的分类变量(自治市镇和建筑物类型),共计82个特征。

顺应数据时代潮流,利用云资源进行自动机器学习

原始数据功能

将所有缺失的值编码为np.nan,并不对数据进行特征预处理。

首先,我们需要确保TPOT已安装在Google Colab中。大多数数据科学软件包已经安装好了,但我们可以使用系统命令添加任何新的数据(在Jupyter中):

顺应数据时代潮流,利用云资源进行自动机器学习

在读入数据后,我们通常会填写缺失值,并将这些规范化到一个范围内。但是,除了特征工程、模型选择和超参数调整之外,TPOT还会自动计算缺失值并进行特征缩放所以,我们的下一步是创建TPOT优化器:

顺应数据时代潮流,利用云资源进行自动机器学习

TPOT优化器的默认参数将评估100个管道,每个管道有100代,共10,000条管道。使用10倍交叉验证,这代表有100,000个训练在运行!为了避免在Colab服务器上耗尽时间,我们将设置最多8小时的时间进行评估。


在对优化器的调用中设置以下参数:

scoring = neg_mean_absolute error: 回归表现指标

max_time_minutes = 480:将评估限制为8小时

n_jobs = -1:使用机器上所有可用的内核

verbosity=2:在训练时显示有限的信息量

cv = 5:使用5倍交叉验证(默认值为10)

TPOT优化器的语法设计与Scikit-Learn模型相同,因此我们可以使用.fit方法来训练优化器。

顺应数据时代潮流,利用云资源进行自动机器学习

在训练期间,会得到一些信息:

顺应数据时代潮流,利用云资源进行自动机器学习

由于时间限制,模型只能达到15代。这代表了1500个不同的独立管道被评估,这比纯手工的要多得多。

一旦模型已经过训练,就可以使用tpot.fitted_pipeline_来查看最优管道。也可以将模型保存到Python脚本中:

顺应数据时代潮流,利用云资源进行自动机器学习

我们在Google Colab笔记本中为了将管道从服务器上传到本地计算机上,我们必须使用Google Colab库:

顺应数据时代潮流,利用云资源进行自动机器学习

然后打开文件并查看已完成的管道:

顺应数据时代潮流,利用云资源进行自动机器学习

我们可以看到优化器为我们提供了缺失的值,并构建了一个完整的模型管道。

要找到平均绝对误差,可以使用.score方法:

顺应数据时代潮流,利用云资源进行自动机器学习

我们构建的一个梯度提升回归模型,其平均绝对误差为9.06。自动化机器学习的性能有着显著的提高,大幅缩短了开发时间。

我们可以使用优化的管道,并尝试进一步完善解决方案。如果使用这个管道作为最终模型,可以试着解释模型或者编写一份记录报告。

结论

在这篇文章中,简要介绍了云的功能和自动机器学习。只要有Google帐户和互联网,我们就可以使用Google Colab开发、运行和共享机器学习或数据科学工作负载。使用TPOT,我们可以自动开发具有功能预处理、模型选择和超参数调整的优化机器学习管道。


分享到:


相關文章: