机器学习项目必备:端到端机器学习项目开发过程的任务表

liukecun0 2020-08-03

本文转载自公众号“读芯术”(ID:AI_Discovery)。

在创建具有重大意义的项目时,我会记录所有在其他人身上学到的以及自己在工作中领悟到的东西。这对我来说是必须的,因为需要处理一个项目中的许多内容(争论、准备、问题、模型、微调等等),这容易让人忘记一些事情。

任务列表能指导开发人员完成下一步,促使你检查每个任务是否已成功执行。有时候,我们很难找到出发点,任务表也可帮助开发人员从正确的来源中获取正确的信息(数据),以便建立关系并揭示相关的见解。

机器学习项目必备:端到端机器学习项目开发过程的任务表

最好的做法是让项目的每一部分都经过检查。正如阿图·葛文德在其《清单革命》(The Checklist Manifesto)中所说:“我们所知事物的数量和其复杂性已经超过了我们能正确、安全、可靠地传达其优点的能力范畴。”

所以,看看这个简洁明了的项目任务表,它将帮你减少工作量,提高产出!

机器学习项目清单

在几乎每个机器学习项目中都必须执行8-10个步骤,其中一些步骤可以按顺序交替执行。

1. 从高层次的角度定义问题

为了理解和阐明问题的业务逻辑,任务表应该告知:

  • 问题的性质(有监督/无监督、分类/回归)。
  • 可开发的解决方案类型。
  • 应该使用哪些指标来衡量性能?
  • 机器学习是解决这个问题的正确方法吗?
  • 人工解决问题的方法。
  • 问题的固有假设。

2. 识别数据源并获取数据

在大多数情况下,如果拥有数据,并且希望定义相关问题以更好地利用传入的数据,可以在第一步之前执行此步骤。

基于问题的定义,我们需要确定数据的来源,可以是数据库、数据存储库、传感器等。对于要在生产中部署的应用程序,需通过开发数据管道来自动执行此步骤,以保持传入数据流入系统。

  • 列出所需数据的来源和数量。
  • 检查空间是否会成为一个问题。
  • 检查你在使用数据上是否被授权。
  • 获取数据并将其转换为可行的格式。
  • 检查数据类型(文本、分类、数字、时间序列、图像)。
  • 取一个样本用于最终测试。

机器学习项目必备:端到端机器学习项目开发过程的任务表

图源:unsplash

3. 数据的初步探索

在这一步骤中会发现所有对研究结果、预测以及目标有影响的数据特征。如果你有一个巨大的数据块,在该步骤中对其进行抽样,使分析更易于管理。应遵循以下步骤:

  • 使用jupyter notebook,因为它们为研究数据提供了一个简单直观的界面。
  • 确定目标变量。
  • 识别特征类型(分类、数字、文本等)。
  • 分析特征之间的相关性。
  • 添加一些数据可视化,以便于解释每个特征对目标变量的影响。
  • 记录发现。

4. 探索性数据分析,以准备数据

是时候通过定义用于数据转换、清理、特征选择/设计和缩放的函数来执行前一步的发现了。

  • 编写函数,以转换数据,自动化处理即将出现的大批量数据。
  • 编写函数,以清理数据(输入缺失值和处理异常值)。
  • 编写函数,以选择并设计特征——删除冗余的特征、特征的格式转换以及和其他数学转换。
  • 特征缩放——标准化特征。
机器学习项目必备:端到端机器学习项目开发过程的任务表
图源:unsplash

5. 开发一个基准模型并探索其他模型以筛选最佳模型

创建一个非常基础的模型,作为所有其他复杂机器学习模型的基线。按照以下步骤:

  • 使用默认参数,训练一些常用的机器学习模型,如朴素贝叶斯、线性回归、支持向量机(SVM)等。
  • 利用基线和其他模型,测量并比较每个模型的性能。
  • 每个模型部署N折交叉验证(N-fold cross-validation),并计算N个折叠上性能指标的平均值和标准差。
  • 研究对目标影响最大的特征。
  • 分析模型在预测时出错的类型。
  • 以不同的方式设计特征。
  • 多次重复上述步骤(反复试验),确保以正确的格式使用正确的特征。
  • 基于性能衡量标准列出最佳模型。

6. 微调入围模型,检查集成方法

这是关键步骤之一,在此步骤中将更接近最终解决方案。主要步骤应包括:

  • 使用交叉验证进行超参数调整。
  • 使用自动调整方法,如随机搜索或网格搜索,为最佳模型找到最佳配置。
  • 测试集成方法,如投票分类器等。
  • 用尽可能多的数据测试模型。
  • 完成后,使用一开始抛之一侧的测试样本,来检查是否过拟合或欠拟合。

7. 记录代码并传达解决方案

沟通的过程是多方面的,请时刻牢记所有现有的和潜在的利益相关者。主要步骤包括:

  • 记录代码以及整个项目的完成方法和过程。
  • 创建一个简明的仪板或一个具有深刻见解的演示文稿,其应具有接近自我解释的可视化效果。
  • 撰写博客/报告,记录如何分析特征、测试不同的转换等,记录学习成果(失败和有效的技巧)。
  • 总结主要成果和未来蓝图(如有)。

8. 在生产中部署模型和监视器

如果项目需要在实时数据上测试部署,应该创建一个web应用程序或REST API,以便在所有平台(web、android、iOS)上使用。主要步骤(因项目而异)包括:

  • 将最终训练的模型保存到h5或pickle文件中。
  • 使用web服务为模型服务,可以使用Flask开发这些web服务。
  • 连接输入数据源并设置ETL管道。
  • 使用pipenv、docker/Kubernetes(基于扩展需求)管理依赖关系。
  • 可以使用AWS、Azure或Google云平台来部署服务。
  • 监控实时数据的性能,或让人们将你的模型与他们的数据一起使用。
机器学习项目必备:端到端机器学习项目开发过程的任务表
图源:unsplash

相关推荐