机器学习项目清单

图片



在这篇文章中,我整理了一份清单,在进行全面的机器学习项目时经常参考。



为什么我完全需要清单?



由于您必须处理项目的众多要素(准备,问题,模型,调整等),因此很容易迷失方向。它将指导您完成后续步骤,并推动您检查每个任务是否成功完成。



有时,我们尝试寻找起点,清单会帮助您从正确的来源中提取正确的信息(数据),以建立关系并揭示相关的想法。



建议项目的每个部分都经过审查范式。



正如Atul Gawande在他的《清单宣言》一书中所说,

我们所知道的范围和复杂性已经超过了我们个人正确,安全和可靠地提供收益的能力。

因此,让我为您介绍这份清晰明了的行动清单,这些清单将减少您的工作量并改善您的结果...

机器学习项目清单



在几乎每个项目中,您都应遵循以下8个步骤。某些步骤可以按顺序互换执行。



1.从高级角度定义问题



这是为了理解和制定问题的业务逻辑。这应该告诉您:



  • 问题的性质(受控/不受控制,分类/回归),
  • 您可以开发的解决方案的类型
  • 您应该使用什么指标来衡量绩效?
  • 机器学习是否是解决此问题的正确方法?
  • 解决问题的手动方法。
  • 问题的固有先决条件


2.定义数据源并获取数据



在大多数情况下,如果您有数据并想要确定周围的问题(问题)以便更好地使用输入数据,则可以在第一步之前执行此步骤。



根据您的问题定义,您将需要识别数据源,可以是数据库,数据仓库,传感器等。要将应用程序部署到生产环境中,必须通过开发允许输入数据进入系统的数据管道来自动化此步骤。



  • 列出所需的数据源和数量。
  • 检查位置是否有问题。
  • 检查是否允许您出于目的使用数据。
  • 获取数据并将其转换为可行的格式。
  • 检查数据类型(文本,分类,数字,时间序列,图像)
  • 选择一个样品进行最终测试。


3.初步数据探索



在此阶段,您将研究影响您的结果/预测/目标的所有功能。如果您有大量数据,请尝试此步骤以使您的分析更易于管理。



脚步:



  • 使用Notebook Jupyter,因为它提供了用于浏览数据的简单直观的界面。
  • 定义目标变量
  • 定义要素类型(分类,数字,文本等)
  • 分析特征之间的关系。
  • 添加多个数据可视化,以轻松解释每个功能对目标变量的影响。
  • 记录您的研究结果。


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



现在是时候通过定义用于数据转换,清理,功能选择/设计和缩放的功能来借鉴上一步的经验。



  • 编写函数以转换数据并自动处理即将到来的数据包。
  • 编写函数以清理数据(估算缺失值并处理异常值)
  • 编写用于选择和设计特征的函数-删除冗余特征,格式化对象转换和其他数学转换。
  • 特征缩放-特征标准化。


5.建立一个基本模型,然后探索其他模型以选择最佳模型



创建一个非常基本的模型,该模型应作为所有其他复杂机器学习模型的基础。步骤清单:



  • 使用默认参数训练几个常用的模型,例如朴素贝叶斯模型,线性回归模型,SVM等。
  • 测量并比较每个模型与基本模型以及所有其他模型的性能。
  • 对每个模型使用N折交叉验证,并计算N折性能指标的平均值和标准差。
  • 探索对目标影响最大的功能。
  • 分析模型在预测时所犯的错误的类型。
  • 设计功能有所不同。
  • 重复上述步骤几次(通过反复试验),以确保我们使用的是正确格式的正确函数。
  • 根据其性能指标将顶级模型入围。


6.从候选清单中微调模型,并检查整体方法



当您接近最终决定时,这应该是关键步骤之一。重点应包括:



  • 使用交叉验证进行超参数调整。
  • 使用随机搜索或网格搜索等自动调整技术为您的顶级型号找到最佳配置。
  • 测试方法集成,例如投票分类器等。
  • 用尽可能多的数据测试模型。
  • 完成工作后,请使用开始时放在一边的测试样本检查其是否合适。


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



沟通过程是多种多样的。您需要牢记所有现有和潜在的利益相关者。因此,主要要点包括:



  • 记录您的代码以及整个项目的方法。
  • 创建仪表盘,例如voila或具有自解释性视觉效果的有见地的演示文稿。
  • 撰写有关如何分析功能,测试各种转换等的博客/报告。描述您的学习曲线(失败的方法和有效方法)
  • 完成主要结果和将来的数量(如果有)


8.将模型部署到生产,监视



如果您的项目需要对真实数据进行部署测试,则必须创建一个Web应用程序或REST API,以在所有平台(Web,Android,iOS)上使用。关键点(因项目而异)包括:



  • 将最终训练好的模型保存到h5或pickle文件中。
  • 通过Web服务为模型服务,您可以使用Flask开发这些Web服务。
  • 连接输入源并设置ETL管道。
  • 使用Pipenv,Docker / Kubernetes管理依赖项(基于扩展要求)
  • 您可以使用AWS,Azure或Google Cloud Platform部署服务。
  • 对真实数据进行性能监控,或者仅供人们使用您的数据模型。


注意。可以根据项目的复杂性来调整清单。



图片



通过完成SkillFactory付费在线课程,了解如何从头开始或成为技能和薪资水平升级的热门职业的详细信息:






阅读更多






All Articles