数据准备可能是任何机器学习项目中难度最大的步骤之一。
原因在于每个数据集都不同,并且高度特定于项目。尽管如此,在预测建模项目中存在足够的共性,我们可以定义一个松散的步骤和子任务序列,您很可能会执行这些步骤和子任务。
这个过程提供了一个上下文,我们可以在其中考虑项目所需的数据准备,这既受到数据准备之前执行的项目定义的影响,也受到之后执行的机器学习算法评估的影响。
在本教程中,您将学习如何将数据准备视为更广泛的预测建模机器学习项目中的一个步骤。
完成本教程后,您将了解:
- 每个使用机器学习的预测建模项目都是不同的,但在每个项目中都会执行一些共同的步骤。
- 数据准备涉及以最佳方式将问题中未知的底层结构暴露给学习算法。
- 项目中数据准备之前和之后的步骤可以指导应用哪些数据准备方法,或者至少是探索哪些方法。
通过我的新书《机器学习数据准备》启动您的项目,其中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。

机器学习项目中的数据准备是什么
图片由 dashll 提供,保留部分权利。
教程概述
本教程分为三个部分;它们是:
- 应用机器学习流程
- 什么是数据准备
- 如何选择数据准备技术
应用机器学习流程
每个机器学习项目都不同,因为项目核心的特定数据不同。
您可能是第一个(甚至是唯一一个!)处理特定预测建模问题的人。这并不意味着其他人没有处理过类似的预测任务,甚至可能是相同的高级任务,但您是第一个使用您收集到的特定数据的人(除非您正在使用标准数据集进行练习)。
……正确的特征只能在模型和数据的上下文中定义;由于数据和模型如此多样,特征工程的实践很难在项目中通用。
— 《机器学习的特征工程》,2018年,第vii页。
这使得每个机器学习项目都独一无二。没有人能告诉您最佳结果是什么或可能是什么,或者使用什么算法来实现它们。您必须建立一个性能基线作为参考点来比较所有模型,并且您必须发现哪种算法最适合您的特定数据集。
您并不孤单,之前应用机器学习方面的大量文献可以为您提供关于鲁棒评估模型和评估算法的技术。
尽管您的项目是独一无二的,但通向良好甚至最佳结果的路径步骤通常在项目之间是相同的。这有时被称为“应用机器学习过程”、“数据科学过程”或旧名称“数据库知识发现”(KDD)。
应用机器学习过程由一系列步骤组成。这些步骤是相同的,但所执行的步骤和任务的名称可能因描述而异。
此外,这些步骤是按顺序编写的,但对于任何给定项目,我们会在这些步骤之间来回跳跃。
我喜欢用四个高级步骤来定义这个过程:
- 步骤1:定义问题。
- 步骤2:准备数据。
- 步骤3:评估模型。
- 步骤4:确定模型。
让我们仔细看看这些步骤中的每一个。
想开始学习数据准备吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
步骤 1:定义问题
此步骤旨在充分了解项目,以便选择预测任务的框架或框架。例如,它是分类还是回归,还是其他更高阶的问题类型?
它涉及收集被认为有助于进行预测的数据,并清晰定义预测的形式。它还可能涉及与项目利益相关者和领域内具有深厚专业知识的其他人员进行交流。
此步骤还涉及仔细查看数据,以及可能使用汇总统计和数据可视化来探索数据。
步骤2:数据准备
此步骤涉及将收集到的原始数据转换为可用于建模的形式。
数据预处理技术通常指训练集数据的添加、删除或转换。
——《应用预测建模》,2013年,第27页。
我们将在下一节中更详细地介绍此步骤。
步骤 3:评估模型
此步骤涉及评估您数据集上的机器学习模型。
它要求您设计一个可靠的测试工具来评估您的模型,以便您可以信任所获得的结果并将其用于在您评估的模型中进行选择。
这涉及到选择用于评估模型技能的性能指标、建立所有模型评估都可以与之比较的性能基线或下限,以及用于将数据分成训练集和测试集以模拟最终模型将如何使用的重采样技术。
为了快速粗略地估计模型性能,或者对于非常大的数据集,可以进行一次性的数据训练-测试分割。更常见的是使用k折交叉验证作为数据重采样技术,通常会重复该过程以提高结果的鲁棒性。
此步骤还涉及用于从表现良好的模型中获得最大收益的任务,例如超参数调整和模型集成。
步骤 4:最终确定模型
此步骤涉及选择和使用最终模型。
一旦评估了一系列模型,您必须选择一个代表项目“解决方案”的模型。这被称为模型选择,可能涉及对保留验证数据集上的候选模型进行进一步评估,或通过其他项目特定标准(如模型复杂性)进行选择。
它还可能涉及以标准方式向项目利益相关者总结模型的性能,这是一个重要步骤。
最后,很可能存在与模型产品化相关的任务,例如将其集成到软件项目或生产系统中,以及为模型设计监控和维护计划。
现在我们熟悉了应用机器学习的过程以及数据准备在该过程中的位置,让我们更详细地了解可能执行的任务类型。
什么是数据准备
在预测建模项目(例如分类或回归)中,原始数据通常不能直接使用。
这是由于以下原因:
- 机器学习算法要求数据为数字。
- 某些机器学习算法对数据有要求。
- 数据中的统计噪声和误差可能需要纠正。
- 复杂非线性关系可能需要从数据中提取出来。
因此,原始数据在使用机器学习模型进行拟合和评估之前必须进行预处理。预测建模项目中的这个步骤被称为“数据准备”,尽管它有许多其他名称,例如“数据整理”、“数据清洗”、“数据预处理”和“特征工程”。其中一些名称可能更适合作为更广泛的数据准备过程的子任务。
我们可以将数据准备定义为将原始数据转换为更适合建模的形式。
数据整理(也常被称为数据清理、转换、操作、杂务等)可能是一个艰苦而费力的过程。
— 《使用 R 进行数据整理》,2016年,第v页。
这高度取决于您的数据、项目目标以及将用于建模数据的算法。我们将在下一节中进一步讨论这些关系。
然而,在机器学习项目的数据准备步骤中,有一些常用或标准的任务可以利用或探索。
这些任务包括:
- **数据清洗**:识别并纠正数据中的错误或失误。
- **特征选择**:识别与正在预测的目标变量最相关的输入变量。
- **数据转换**:改变变量的比例或分布。
- **特征工程**:从可用数据中派生新变量。
- **降维**:创建数据的紧凑投影。
这些任务中的每一个都是一个拥有专门算法的完整研究领域。
数据准备并非盲目进行。
在某些情况下,变量必须进行编码或转换,然后才能应用机器学习算法,例如将字符串转换为数字。在其他情况下,情况就不那么清楚了,例如,缩放变量可能对算法有用,也可能没用。
数据准备的更广泛理念是发现如何最好地将问题的底层结构暴露给学习算法。这是指导方针。
我们不知道问题的底层结构;如果知道,就不需要学习算法来发现它并学习如何做出熟练的预测。因此,揭示问题未知的底层结构是一个发现过程,同时也是发现项目中表现良好或最佳的学习算法的过程。
然而,我们通常不知道预测变量的最佳重新表示形式来提高模型性能。相反,预测变量的重新处理更像一门艺术,需要正确的工具和经验来找到更好的预测变量表示形式。此外,我们可能需要搜索许多替代的预测变量表示形式来提高模型性能。
——《特征工程与选择》,2019年,第xii页。
这可能比乍一看更复杂。例如,不同的输入变量可能需要不同的数据准备方法。此外,不同的变量或输入变量的子集可能需要不同的数据准备方法序列。
鉴于方法数量众多,每种方法都可能有自己的配置和要求,这可能会让人感到不知所措。然而,数据准备之前和之后的机器学习过程步骤可以帮助指导考虑哪些技术。
如何选择数据准备技术
我们如何知道在数据中使用哪些数据准备技术?
与许多统计问题一样,对于“哪种特征工程方法最好?”的答案是:这取决于。具体来说,它取决于所使用的模型以及与结果的真实关系。
——《应用预测建模》,2013年,第28页。
表面上看,这是一个具有挑战性的问题,但如果我们在整个项目的背景下看待数据准备步骤,它就会变得更直接。预测建模项目中数据准备步骤之前和之后的步骤会指导可能需要的数据准备工作。
数据准备之前的步骤涉及定义问题。
作为问题定义的一部分,这可能涉及许多子任务,例如:
- 从问题域收集数据。
- 与主题专家讨论项目。
- 选择将用作预测模型的输入和输出的变量。
- 审查已收集的数据。
- 使用统计方法总结收集到的数据。
- 使用图表可视化收集到的数据。
已知的数据信息可用于选择和配置数据准备方法。
例如,数据图表可能有助于识别变量是否存在异常值。这有助于数据清洗操作。它也可能提供对数据底层概率分布的洞察。这可能有助于确定改变变量概率分布的数据转换是否合适。
统计方法,例如描述性统计,可以用来确定是否需要进行缩放操作。统计假设检验可以用来确定变量是否符合给定的概率分布。
配对图和统计数据可以用来确定变量之间是否存在关联,如果存在,关联程度如何,从而提供关于一个或多个变量是否冗余或与目标变量无关的见解。
因此,问题定义和数据准备之间可能存在很多相互作用。
数据准备步骤和模型评估之间也可能存在相互作用。
模型评估可能涉及以下子任务:
- 选择评估模型预测能力的性能指标。
- 选择模型评估程序。
- 选择要评估的算法。
- 调整算法超参数。
- 将预测模型组合成集成模型。
关于算法选择和高性能算法发现的信息也可以指导数据准备方法的选择和配置。
例如,算法的选择可能会对数据中输入变量的类型和形式提出要求和期望。这可能需要变量具有特定的概率分布,移除相关联的输入变量,和/或移除与目标变量不强相关的变量。
性能指标的选择也可能需要对目标变量进行仔细准备,以满足期望,例如根据特定度量单位的预测误差来评估回归模型,这需要对用于建模的该变量应用的任何缩放转换进行逆运算。
这些以及更多的例子都强调,尽管数据准备是预测建模项目中一个重要步骤,但它并非独立存在。相反,它受到数据准备之前和之后执行的任务的强烈影响。这突显了任何预测建模项目的高度迭代性质。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
教程
书籍
- 特征工程和选择:预测模型的实用方法, 2019.
- 机器学习的特征工程, 2018.
- 应用预测建模, 2013.
- 数据挖掘:实用机器学习工具和技术,第4版,2016年。
文章
总结
在本教程中,您学习了如何将数据准备视为更广泛的预测建模机器学习项目中的一个步骤。
具体来说,你学到了:
- 每个使用机器学习的预测建模项目都是不同的,但在每个项目中都会执行一些共同的步骤。
- 数据准备涉及以最佳方式将问题中未知的底层结构暴露给学习算法。
- 项目中数据准备之前和之后的步骤可以指导应用哪些数据准备方法,或者至少是探索哪些方法。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
优秀的文章,对任何机器学习实践者都非常有益。感谢您的文章。
但是,摘要中的第二个要点,也出现在主文章中,我读了之后理解方式不同,是不是我的理解与您所说的不同?有点困惑!
您所说的
“数据准备涉及以最佳方式将问题中未知的底层结构暴露给学习算法。”
我的理解是
“数据准备涉及以最佳方式将数据中未知的底层结构暴露给学习算法。”
谢谢。
同意,但您认为有什么区别?例如,数据体现了问题。问题包含了数据,我想其中也可能包含领域知识。
先生,我买了您所有的书,除了weka,每本书至少读了10遍,
我正焦急地等待您的下一本书,请告诉我主题和发布时间,
您可以验证我的电子邮件……
您的书是我的生命
谢谢!
下一本书是关于数据准备的,很快就会出版(我希望)。
非常感谢。不胜感激
不客气。
你好 Jason,
很高兴阅读您关于数据科学和机器学习各个主题的博客,内容详细清晰,感谢您并请继续保持这种优秀的工作。
但这里有一个小困惑,请帮我解答
您将预测建模项目的主要步骤列为
步骤 1:定义问题。
步骤 2:准备数据。
步骤 3:评估模型。
步骤 4:最终确定模型。
但任何建模过程都涉及一个重要的步骤“学习(训练)”步骤,也称为拟合方法,模型从准备好的数据中学习模型的参数。
这个步骤落在上述过程步骤的哪里?我觉得在步骤2和步骤3之间应该有一个步骤,叫做训练/学习/拟合步骤。在训练/学习/拟合之前我们如何评估模型,因为您的步骤在“数据准备”步骤之后直接跳到“评估步骤”。
我没有注意到在步骤2和步骤3中将这个训练步骤作为一个子过程提及。
请让我听听对此的一些评论
谢谢并致以问候
谢谢!
是的,第3步是评估模型。我们在训练数据上拟合模型(学习)并在测试数据上进行预测,然后计算一个分数来查看模型学习得如何。
如何通过网上银行购买书籍?
您可以使用 PayPal 账户或信用卡购买我的电子书
https://machinelearning.org.cn/faq/single-faq/why-doesnt-my-payment-work
你好 Jason,
感谢这篇精彩的博客。您能否提供我可用于我的论文报告的引用详细信息。
先谢谢您了。
不客气。
这将帮助您引用
https://machinelearning.org.cn/faq/single-faq/how-do-i-reference-or-cite-a-book-or-blog-post