自动化机器学习(AutoML):快速上手#
本节要点:
- 两类工具:一类是免写代码的网页应用,一类是提供 API 与 CLI 的自动化工具;后者更强大也更灵活,代价是更吃编程与机器学习的功底。
- 工作流大同小异:AutoML 与手工训练的步骤基本一致——问题定义、数据收集、数据准备、模型开发、评估与再训练,区别只在于其中一部分任务被工具接了过去。
- 数据准备仍要你自己做:标注、清洗与格式化、特征变换,这些活儿 AutoML 帮不上全部的忙。
- 无代码工具的建模四步:导入数据、分析数据、打磨数据、配置训练参数,配完就能启动自动训练。
- 训练之后:看特征重要性、看模型架构与超参数、看顶层性能指标;部分系统还顺带支持部署与再训练。
如果你正打算用 AutoML,心里多半会攒着一串问号:它到底是怎么运作的?上手之前又该准备些什么?这一节就把常见的 AutoML 模式再往深挖一层,讲清楚 AutoML 的工作原理,也梳理一下真正动手之前需要做的准备。
AutoML 工具#
先说工具。AutoML 工具大致可以分成两类:
免写代码的工具:通常就是一个网页应用,你在界面上配置、跑实验,它帮你从数据里找出最好的模型,全程不需要写一行代码。
API 与 CLI 工具:提供更高级的自动化能力,代价是需要更多(有时候是多得多)编程与机器学习专业功底。
需要写代码的那一类,能力更强、也更灵活,但用起来的门槛自然也更高。这一讲以无代码方案为主,不过要提醒你一句:如果你确实需要定制化的自动化流程,API 与 CLI 那条路是能帮上忙的。
AutoML 工作流#
接下来我们走一遍典型的机器学习工作流,看看换成 AutoML 之后每一步有什么不同。高层次的步骤和手工训练是一样的,主要区别在于:其中一些任务 AutoML 会替你做掉。
问题定义#
任何机器学习工作流的第一步都是定义问题。用 AutoML 的时候,要先确认你选的工具能撑起这个项目的目标——大多数 AutoML 工具都支持多种监督学习算法和多种输入数据类型。
想再多了解一些关于问题定义的思路,可以看看 Introduction to Machine Learning Problem Framing 这个模块。
数据收集#
在动手用 AutoML 工具之前,你得先把数据收集到一个统一的数据源里。记得翻一下产品文档,确认这个工具支持你的数据源、支持你数据集里的数据类型,也支持你数据集的规模。
数据准备#
数据准备是 AutoML 能帮上忙的地方,但没有任何工具能把所有事情都自动化,所以在把数据导进工具之前,你还是要先干一些活。给 AutoML 准备数据,和你手工训练模型时要做的事是同一套;想知道具体该怎么准备,可以看看处理数值数据与处理类别型数据这两个模块。
具体来说,把数据导进 AutoML 开始训练之前,下面这几件事得先做完:
标注数据:数据集中的每一个样本都要有标签。
清洗并格式化数据:现实世界的数据往往很脏,用之前先清理干净。就算有 AutoML 帮手,你仍然要针对自己的数据集和问题,判断哪种处理方式最好——这可能要花上一些探索的时间,甚至跑上几轮 AutoML,才能拿到理想结果。
做特征变换:有些 AutoML 工具会替你完成一部分特征变换,但如果某个变换它不支持、或者支持得并不好,那你可能得提前自己把它做掉。
模型开发(以无代码 AutoML 为例)#
训练过程中的脏活累活,AutoML 会替你干。但训练启动之前,你得先把这次实验配置好。配一次 AutoML 训练,通常要设定下面这么几个高层步骤:
导入数据:指定数据源。导入的过程中,AutoML 工具会给每一个数据值判定一个语义类型。
分析数据:AutoML 产品一般都会提供分析数据集的工具,训练前、训练后都能用。作为最佳实践,开跑之前先用这些工具把自己的数据看明白、验证一遍。
打磨数据:AutoML 工具往往会提供一些机制,让你在导入之后、训练之前把数据再收拾收拾。下面这几件事,通常值得做一做:
语义类型检查:导入时,AutoML 工具会尽力判断每个特征该是什么语义类型,但这些判断终究只是猜测。你应该把每个特征被指定的类型都过一遍,错了就改过来。比如你的数据库里有一列邮政编码,存成了数字——大多数 AutoML 系统会把它识别成连续数值型,可对邮政编码来说这显然不对,你多半要把这一列的语义类型从连续改成类别型。
特征变换:有些工具允许你在打磨数据的过程中自定义数据变换。数据集里有些特征可能有预测价值,但需要经过某种变换或组合才能体现出来,而这种变换很难让 AutoML 靠自己判断出来,这时就得手工指定。举个例子:你手上有一份房价数据集,要用它预测房子的售价。假设里面有一个表示房源描述的特征
description,你想据此造出一个新特征description_length。有些 AutoML 系统提供了自定义变换的方式,在这个例子中大概会有一个LENGTH函数来生成这个描述长度的特征:LENGTH(description)。
配置 AutoML 运行参数:正式开跑之前的最后一步,是挑几个配置项,告诉工具你希望它怎么训练模型。每个 AutoML 工具的配置项都不太一样,但下面这几项重要配置通常都要你来定:
选定你要解决的机器学习问题类型:比如,这是一个分类问题,还是一个回归问题?
选定数据集中哪一列是标签。
选定用哪一组特征来训练模型。
选定模型搜索时 AutoML 要考虑哪些机器学习算法。
选定 AutoML 用哪一个评估指标来挑出最佳模型。
配置完这次实验,就可以启动训练了。训练可能要花上相当长的时间,通常以小时计。
评估模型#
训练结束后,你可以借助 AutoML 产品提供的各种工具来查看结果,它们能帮你:
通过特征重要性指标,评估你的各个特征。
通过查看模型用到的架构与超参数,理解这个模型本身。
通过训练过程中收集的图表与指标,评估模型的顶层性能。
投产#
投产这一块不在本模块的讨论范围内,不过有些 AutoML 系统能帮你测试模型、部署模型。
重新训练模型#
你可能会需要用新数据重新训练模型——可能是在你评估完这次 AutoML 训练之后,也可能是在模型已经上线跑了一段时间之后。不管是哪种情况,AutoML 系统同样能帮你做重训。跑完一轮 AutoML 之后再回头看看自己的数据,然后用改进过的数据集重训一遍,这种做法并不罕见。
关键术语:
- AutoML
接下来#
恭喜你完成这个模块!
你可以按自己的节奏和兴趣,去探索 MLCC 的各个模块。如果你想按推荐的顺序往下走,接下来建议进入这个模块:公平性模块。