Harshit Tyagi作者小舟、杜伟参与

做ML项目,任务繁多琐碎怎么办?这份自查清单帮你理清思路

机器学习项目中含有众多因素,包括数据处理、模型优化等。开发者经常会陷入混乱,或者遗漏一些重要的东西。这里有一份备忘清单,请查收。


任何科研项目都是系统性的,机器学习项目也不例外,它包含一系列大大小小、或繁或简的要素和组件,如讨论、准备工作、提出问题、模型构建和优化调整等。在这种情况下,开发者很容易漏掉一些重要的东西。

这时就需要对项目中经涉及到的任务做一份详尽的清单。有时开发者绞尽脑汁也无法找到一个好的起始点,那么任务清单则有助于他们在正确的信息源中提取有用的数据并建立联系,从而发掘出深刻见解。

此外,还需要对项目中的每项任务进行规划的检查,确保任务的完成度。

正如 Atul Gawande 在其著作《清单宣言:如何把事情做对》(Checklist Manifesto)中说到的:

我们所了解事物的数量和复杂度已经超出了自身从它们中正确、安全或可靠地获益的能力。


在本文中,网页和数据科学讲师 Harshit Tyagi 以端到端机器学习项目为例,对经常涉及的任务做了一份清单。

本文作者 Harshit Tyagi。

接下来,我们就来看 Harshit Tyagi 是如何一步步创建属于自己的机器学习项目任务清单的。


八步完成 ML 项目检查清单

几乎每个机器学习项目中都至少要执行 8-10 个步骤,其中一些步骤的执行顺序也可以互换。


步骤 1:从一个高水平的视角定义问题

执行此步骤是为了弄清楚问题的业务逻辑。你应该了解到:

  • 问题的本质(有监督的 / 无监督的,分类问题 / 回归问题)。

  • 你可以开发的方案类型。

  • 应该用什么指标来度量性能?

  • 机器学习是解决这个问题的正确方法吗?

  • 解决该问题的手动方法。

  • 该问题固有的假设。


步骤 2:确定数据源并获取数据

在大多数情况下,如果你已经准备一些数据并想要定义关于这些数据的问题以更好地利用输入的数据,那么你可以先于步骤 1 执行这个步骤。

基于问题的定义,你需要确定数据源中哪些可以作为数据库或传感器等。对于生产中某个应用的部署,这一步应该通过开发数据 pipeline 来实现自动化,以保证输入的数据能够进入系统。

具体步骤如下:

  • 列出你需要的数据源及数据量;

  • 检查存储空间是否会成为问题;

  • 检查你是否有权限应用这些数据来达到你的目的;

  • 获取数据并将其转换为可利用的格式;

  • 检查数据类型,通常包括文本、分类、数值、时序、图像数据;

  • 保留样本以进行最终的测试。


步骤 3:初步探索数据

在这一步中,你需要对所有影响项目结果 / 预测 / 目标的特征进行研究。如果数据量很大,请对数据进行采样使得分析更易管理。具体步骤如下:

  • 使用 jupyter notebook,因为它为研究数据提供了简单直观的界面;

  • 确定目标变量;

  • 确定特征的类型(分类、数值、文本等);

  • 分析特征之间的关系;

  • 添加一些可视化数据,使每个特征对目标变量的影响更易于解释;

  • 记录你的发现。



步骤 4:探索性数据分析以准备数据

在这一步中,通过定义数据转换、数据清理特征选择 / 工程和扩展的函数来处理之前步骤中的发现。具体如下:

  • 编写数据转换函数,并自动处理将输入的下一批数据;

  • 编写数据清理函数(估算缺失值并处理异常值);

  • 编写函数以选择和工程化特征,包括删除冗余特征、特征格式化以及其他数学变换;

  • 特征扩展——标准化特征。



步骤 5:开发一个基线模型,然后探索其他模型以选出最佳模型

创建一个能够为所有其他复杂机器学习模型提供基线的基础模型。具体步骤如下:

  • 使用默认参数训练一些常用的机器学习模型,如朴素贝叶斯线性回归支持向量机(SVM)等;

  • 度量并比较每种模型的性能;

  • 对每个模型采用 N 倍交叉验证并在 N 倍的基础上计算性能指标的均值和标准差;

  • 研究对目标影响最大的特征;

  • 分析模型在预测过程中存在的错误类型;

  • 用不同的方式工程化特征;

  • 重复上述步骤几次,以确保使用正确的特征,且其形式也无误;

  • 选出基于性能指标的最佳模型。



步骤 6:优化你选出的模型并检查相关方法

这是你更加接近最终解决方案的关键步骤之一,具体步骤如下:

  • 交叉验证优化超参数

  • 随机搜索网格搜索等自动调整方法来找出最佳模型的最佳配置;

  • 测试相关方法,比如集成学习等;

  • 用尽可能多的数据测试模型;

  • 最终确定后,使用在开始保留的未见过测试样例来检查模型是否存在过拟合欠拟合



步骤 7:保存代码并交流你的方案

交流的过程也是性能加倍的过程。你需要记得所有已有或潜在的利益相关者。主要步骤包括如下:

  • 保存代码并记录整个项目的过程及用到的方法;

  • 创建仪表板,如 voila 或带有接近自我解释可视化的有效 presentation;

  • 撰写一篇描述你如何进行特征分析、测试数据转换等的文章 / 报告。记录你的学习过程,包括失败的经验和有效的技术方法;

  • 总结主要结果并规划未来设想(如果有的话)。


步骤 8:将模型投入生产并监测模型

如果你的项目需要在实时数据上进行测试,你应该创建一个可以在所有平台(web、android、iOS)上使用的网页版应用或 REST API。主要步骤包括:

  • 在 h5 或 pickle 文件中保存你最终的训练模型;

  • 提供网页版模型应用,你可以使用 Flask 来开发这些网页服务;

  • 关联输入数据源并设置 ETL 路径;

  • 基于扩展需求,用 pipenv、docker/Kubernetes 管理依赖关系;

  • 你可以使用亚马逊、Azure 或者谷歌云平台来部署你的服务;

  • 在实时数据上监测性能或让人们在你的模型上方便地使用他们的数据。


最后,创建任务清单时需要注意的一点是:你可以根据项目的难易程度来对清单进行实时调整。

原文链接:https://towardsdatascience.com/task-cheatsheet-for-almost-every-machine-learning-project-d0946861c6d0
工程Jupyter Notebook代码机器学习
1
相关数据
Amazon机构

亚马逊(英语:Amazon.com Inc.,NASDAQ:AMZN)是一家总部位于美国西雅图的跨国电子商务企业,业务起始于线上书店,不久之后商品走向多元化。目前是全球最大的互联网线上零售商之一,也是美国《财富》杂志2016年评选的全球最大500家公司的排行榜中的第44名。

https://www.amazon.com/
相关技术
数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

网格搜索技术

网格搜索是一项模型超参数优化技术,常用于优化三个或者更少数量的超参数,本质是一种穷举法。对于每个超参数,使用者选择一个较小的有限集去探索。然后,这些超参数笛卡尔乘积得到若干组超参数。网格搜索使用每组超参数训练模型,挑选验证集误差最小的超参数作为最好的超参数。

欠拟合技术

使用太少参数,以致于不能很好的拟合数据,称为拟合不足(欠拟合)现象

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

集成学习技术

集成学习是指使用多种兼容的学习算法/模型来执行单个任务的技术,目的是为了得到更佳的预测表现。集成学习的主要方法可归类为三大类: 堆叠(Stacking)、提升(Boosting) 和 装袋(Bagging/bootstrapaggregating)。其中最流行的方法包括随机森林、梯度提升、AdaBoost、梯度提升决策树(GBDT)和XGBoost。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

规划技术

人工智能领域的「规划」通常是指智能体执行的任务/动作的自动规划和调度,其目的是进行资源的优化。常见的规划方法包括经典规划(Classical Planning)、分层任务网络(HTN)和 logistics 规划。

数据清理技术

数据清理(data cleansing)指删除、更正数据库中错误、不完整、格式有误或多余的数据。数据清理不仅仅更正错误,同样加强来自各个单独信息系统不同数据间的一致性。专门的数据清理软件能够自动检测数据文件,更正错误数据,并用全企业一致的格式整合数据。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

线性回归技术

在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系。由X可以部分地决定Y的值,但这种决定往往不很确切。常常用来说明这种依赖关系的最简单、直观的例子是体重与身高,用Y表示他的体重。众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y。又如,城市生活用电量Y与气温X有很大的关系。在夏天气温很高或冬天气温很低时,由于室内空调、冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少。但我们不能由气温X准确地决定用电量Y。类似的例子还很多,变量之间的这种关系称为“相关关系”,回归模型就是研究相关关系的一个有力工具。

朴素贝叶斯技术

朴素贝叶斯是一种构建分类器的简单方法。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。它不是训练这种分类器的单一算法,而是一系列基于相同原理的算法:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关。举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

支持向量机技术

在机器学习中,支持向量机是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

随机搜索技术

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

交叉验证技术

交叉验证,有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。交叉验证的目标是定义一个数据集到“测试”的模型在训练阶段,以便减少像过拟合的问题,得到该模型将如何衍生到一个独立的数据集的提示。

合合信息机构
推荐文章
暂无评论
暂无评论~