本章探讨了数据在企业中的作用以及其对业务决策制定的影响。您还将了解机器学习(ML)工作流程的组成部分。您可能已经看到许多书籍、文章、视频和博客在讨论ML工作流程时都会从数据收集开始。然而,在收集数据之前,您需要了解要收集什么类型的数据。只有通过了解您需要解决的问题或需要做出的决策的类型,才能实现这种数据理解。
业务案例/问题定义和数据理解可以用于制定无代码或低代码ML策略。无代码或低代码的ML项目战略方法具有多个优点/好处。正如在介绍中所提到的,无代码的AutoML方法使具有领域知识但没有编码经验的任何人能够快速开发ML模型,而无需编写一行代码。这是开发ML应用的一种快速高效的方式。低代码方法使那些具有一些编码或深层编码经验的人能够快速开发ML应用,因为基本代码是自动生成的,还可以添加任何额外的自定义代码。但是,再次强调,任何ML项目都必须从明确目标、用例或问题开始。
目标或用例是什么?
企业、教育机构、政府机构和从业者面临许多决策,这些决策反映了机器学习的现实世界示例。例如:
- 我们如何增加糖尿病网络应用的患者参与度?
- 我们如何增加学生对课程调查的反馈数量?
- 我们如何提高检测针对公司网络的网络攻击速度?
- 我们是否能减少进入电子邮件服务器的垃圾邮件数量?
- 我们如何减少制造生产线的停机时间?
- 我们如何提高客户保留率?
- 如何减少客户流失率?
在这些示例中,必须检查众多数据源,以确定哪种ML解决方案最适合解决问题或辅助决策。让我们以降低客户流失率或流失率为例,使用一个非常简单的例子。流失预测是识别最有可能离开您的服务或产品的客户。这个问题属于监督学习领域,是一个分类问题,有两个类别:"流失-是"和"流失-否"。
从数据源的角度来看,您可能需要检查客户资料信息(姓名、地址、年龄、职称、就业情况)、购买信息(购买和账单历史记录)、互动信息(客户与您的产品互动体验[数字和实体])、您的客户服务团队或数字支持服务。客户信息的流行数据源包括客户关系管理系统、电子商务分析服务和客户反馈。实质上,客户"接触"的一切都应被跟踪和捕获为数据源。
您必须做出的决策性质与您需要收集的数据直接相关,这些数据需要制定为问题陈述。比如,假设您负责一家生产雨伞的公司的市场营销,业务目标是增加销售。如果降低您现有雨伞的销售价格,您能预测将销售多少把雨伞吗?图1-1显示了考虑此选项所需的数据元素。
正如您在这个以数据为基础的业务示例中所看到的,您的业务目标(增加销售)呈现出新的维度。您现在意识到,要理解产品价格降低,除了售价外,您还需要包括其他数据维度。您需要了解特定地区的雨季情况、人口密度,以及您的库存是否足够满足价格降低而增加销售的需求。您还需要考虑历史数据与实时捕获的数据。历史数据通常被称为批处理,而实时数据捕获通常称为流式数据。通过添加这些附加维度,业务目标突然变成一个非常复杂的问题,因为可能需要这些额外的列。对于任何组织,可能存在数十个离散的数据源,每个数据源都需要一定的技能来理解它们之间的关系。图1-2是这一挑战的示例。
那么,您在这里的用例是什么?这取决于情况。您需要进行一个业务决策过程,这是通过提出问题、收集数据和评估备选解决方案来做出选择的过程。一旦确定了用例或业务目标,您可以使用相同的数据来训练机器以了解您的客户模式,发现趋势,并使用AutoML或低代码人工智能来预测结果。图1-3显示了我们的雨伞示例作为一个业务用例,然后导致数据源确定、ML框架,然后进行预测。
企业机器学习工作流程
尽管决策过程帮助您确定问题或用例,但正是机器学习工作流程帮助您实施解决方案。本节介绍了一个典型的机器学习工作流程。在我们正在进行的雨伞示例中,您可以使用数据来训练一个机器学习模型,使用提供无代码解决方案的AutoML服务来运行无监督的机器学习聚类。从那里,您可以检查数据点的聚类,看看有什么模式。或者,您可以决定仅关注历史数据,以便基于某些数据输入特征来预测特定目标。您的企业机器学习工作流程会是什么样子?毫不奇怪,它是以数据为基础的,并需要在过程中做出决策。
机器学习工作流程可以展示为一系列步骤,这些步骤可以组合成阶段。图1-4显示了这10个步骤,然后我们简要讨论每个步骤。后面的章节将提供每个步骤的更详细的示例。
定义业务目标或问题陈述
机器学习工作流程始于定义一个具体的问题或具有明确定界的问题。在这个阶段,您试图定义范围和可行性。正确的问题将引导您确定所需的数据以及数据准备的潜在方式。需要注意的是,在分析数据时可能出现的任何问题都可以归为表1-1所示的五个机器学习类别之一。让我们继续使用我们的雨伞示例。
数据采集
在21世纪初期,公司、大学和研究人员通常依赖本地服务器/硬盘或数据中心来托管他们的数据库应用程序和存储他们的数据。依赖本地数据中心,甚至在数据中心租用服务器空间都是昂贵的:需要维护服务器基础设施,软件需要更新,必须安装安全补丁,物理硬件需要更换等等。在某些情况下,大量数据存储在一组机器上。
如今,为了降低成本,企业和教育机构已经转向云端,以托管他们的数据库应用程序并存储他们的数据。云存储是云供应商提供的一项服务,用于存储文件,允许您上传不同的文件格式,或可以配置为自动接收来自不同数据源的文件。因为大多数机器学习模型是使用来自文件的数据进行训练的,将数据存储在云存储桶中有助于简化数据收集。云存储桶可用于存储结构化和非结构化数据。
用于数据收集的另一种选项是GitHub,这是一个用于协作编码项目的服务。您可以将数据存储在云中供将来使用(免费),跟踪更改,并使数据公开可供复制。此选项有100MB的严格文件大小限制,但还可以使用Git Large File Storage(LFS),这是一个用于版本控制大文件的开源GitHub扩展。Git LFS将大文件,如数据集、音频样本、图形和视频,替换为Git中的文本指针,同时将文件内容存储在GitHub.com或GitHub Enterprise等远程服务器上。
在大型组织内,数据收集的挑战变得更为复杂,因为存在许多不同类型的运营管理软件,如企业资源规划、客户关系管理和生产系统,可能在不同的数据库上运行。数据也可能需要实时从外部来源获取,例如来自送货卡车的物联网(IoT)传感器设备。因此,组织不仅面临着收集结构化数据的挑战,还需要在批处理或实时(流式)中收集非结构化和半结构化数据格式。图1-5显示了用于结构化、非结构化和半结构化数据的数据收集的各种数据元素。
数据预处理
要进行数据清理,您需要处理缺失的数据值、重复值、异常数据、格式问题或由于人为错误而不一致的数据。这是因为现实世界的数据通常是原始和混乱的,并充满了假设。一个假设可能是您的数据具有正态分布,这意味着数据是对称分布的,没有偏斜,大多数值聚集在中心区域周围,值的频率远离中心(均值或平均值)会逐渐减小。
假设您的数据首次显示了在加利福尼亚沙漠小镇帕姆斯普林斯的八月份雨伞销售数量的增加。您的数据是否符合正态分布,或者这是否被视为异常值?这是否会扭曲对八月份雨伞销售预测的结果?当数据不符合正态分布时,需要进行归一化,通过将所有记录分组到[0,1]或[-1,1]范围内来使其正态化,例如。对数据进行归一化是为了更容易更快速地训练机器学习模型。归一化将在第7章中详细介绍。
因此,数据预处理可以意味着归一化数据(使数据集中的数值列使用通用尺度)和缩放数据,这意味着将您的数据转换为适合特定范围的数据。幸运的是,在Python中,只需几行简单的代码就可以轻松完成归一化和标准化。图1-6显示了实际数据在归一化和标准化之前和之后的情况。
数据分析
探索性数据分析(EDA)是一种用于探索和分析数据结构的过程。在这一步中,您正在寻找趋势、模式、特征相关性和相关性,比如一个变量(特征)可能如何与另一个变量相关。根据您试图解决的问题类型,您必须选择相关的特征数据用于您的机器学习模型。这一步的结果是一个输入变量的特征列表,可以潜在地用于机器学习。我们在第6章中可以找到使用EDA的实际练习。
图1-7和1-8是使用Seaborn绘制的EDA过程的结果,Seaborn是一个Python数据可视化库(更多关于数据集的详细信息请参见第6章)。图1-7显示了x和y之间的反向关系。图1-8显示了一个热力图(或相关矩阵),并说明在温度较低时产生更多能量。
数据转换和特征选择
在数据清理和分析之后,您会获得一个特征列表,这些特征被认为可以帮助您解决机器学习问题。但是其他特征可能也是相关的吗?这就是特征工程发挥作用的地方,您可以在其中创建新的特征,这些特征在原始数据集中并不存在。例如,如果您的数据集有单独的字段/列表示月份、日期和年份,您可以将这三个组合成一个"月-日-年"时间特征。特征工程是在特征选择之前的最后一步。
实际上,特征选择发生在两个阶段:在探索性数据分析(EDA)之后和在数据转换之后。例如,在EDA之后,您应该有一个潜在的特征列表,可能是创建新特征的候选特征,例如,将时间和星期几组合起来以获取一天中的小时。在进行特征工程之后,您会得到一个最终的特征列表,从中进行选择。图1-9显示了数据转换和特征选择在工作流程中的位置。
研究模型选择或使用AutoML(无代码解决方案)
在这一步中,您可以研究适合您问题的数据类型的最佳模型,或者您可以使用AutoML,一种无代码解决方案,根据您上传的数据集选择适当的模型,进行训练、测试并生成评估指标。如果您使用AutoML,模型选择、模型训练、模型调优和生成评估指标的繁重工作都将为您完成。第3章介绍了AutoML,第4章开始介绍如何使用AutoML。请注意,对于低代码解决方案,您需要知道选择哪种模型。
虽然AutoML可能涵盖了大约80%的机器学习问题,但您可能希望构建一个更加定制化的解决方案。在这种情况下,了解机器学习算法可以解决的问题类型将有所帮助。选择算法完全取决于问题(如前面所讨论的)。在表1-2中,添加了一个"描述"列,用于进一步描述机器学习模型问题类型。
模型训练、评估和调优
在机器学习模型部署到生产环境之前,需要对其进行训练、评估和测试。训练机器学习模型是一个过程,其中存储的数据实例被输入到机器学习模型(算法)中。由于每个存储的数据实例都具有特定的特征(回想一下我们的雨伞示例,其中包括不同类型、价格、销售地区等),这些数据实例的模式可以使用数百个变量进行检测,因此算法能够从训练数据中学习如何根据数据进行广义预测。
每个机器学习模型都需要被训练,而且还需要被评估。因此,您需要保留一部分数据,称为验证数据集。验证集用来衡量模型对未见过或新数据的泛化能力。训练误差用于确定模型对数据的拟合程度,因为模型是根据训练数据进行训练的。
模型评估指标应该根据问题或业务目标来选择或定义,以便与之保持一致。模型调优应该根据评估指标来提高模型性能。例如,在12月份的雨伞销售预测有多准确?这些预测是否可以推广到未来的预测工作?请注意,令人满意的性能应该由业务需求来确定,并且在开始任何机器学习项目之前应该达成一致意见。
模型测试
如果没有测试模型,就无法知道您的雨伞预测应用程序是否可以用于未来的预测工作。一旦训练数据集用于拟合模型到数据,验证数据集用于提高模型准确性,您就可以在模型从未见过的数据上对模型进行测试。测试数据用于评估模型的性能。
例如,假设您想构建一个可以根据雨伞的图像识别颜色或图案的应用程序。您通过提供带有特定颜色或图案标签的各种雨伞图像来训练模型。然后,您在移动应用程序中使用该模型来识别任何雨伞的颜色或图案。测试就是评估模型在区分雨伞颜色和图案方面的性能如何。
图1-10显示了训练、验证和测试数据集之间的关系。
图1-11以五个过程步骤展示了训练、验证和测试数据集之间的关系。为简化起见,未显示回到第5步的数据集的箭头,因为一旦将模型部署为应用程序并开始收集数据,新数据会进入流水线,可能会扭曲原始模型的结果。(在这一点上,您进入了机器学习运维的迷人领域,这超出了本书的范围。)
模型部署(服务)
一旦机器学习模型经过训练、评估和测试,它就会部署到一个实时生产环境中,可以在其中使用。请注意,当模型达到生产阶段时,很可能已经有一个Web应用前端(使用浏览器),通过应用程序编程接口(API)与生产系统进行通信。数据可以实时捕获并流式传输(摄取)到MLOps管道中。或者数据可以批量捕获并存储以进行摄取。或者两者兼而有之。
维护模型
当预测与原始业务目标或用例指标不一致时,模型可能会变得陈旧。陈旧可能发生在世界发生变化或业务要求发生变化时。这些变化会影响模型。在部署后,您需要监控您的模型,以确保它继续如预期地执行。模型和数据漂移是一种现象,您应该预料到并准备通过定期使用MLOps进行重新训练来加以缓解。让我们看一个数据漂移的示例,这意味着您训练时使用的数据和现在从Web应用程序接收的数据发生变化。
在我们的雨伞示例中,曾经经历大雨的地区现在正在经历干旱条件。同样,曾经经历干旱条件的地区现在正在经历大雨。与天气和气候以及对雨伞和雨伞类型的需求有关的任何预测都将受到影响。在这种情况下,您需要使用新数据重新训练和测试一个新模型。
总结
企业、教育机构、政府机构和从业者面临着许多决策,反映了机器学习的真实世界示例,从增加客户参与到减少客户流失。数据------其收集、分析和使用------推动了机器学习中用于确定提供真实世界问题的真实世界解决方案的最佳机器学习战略方法的决策过程。
虽然决策过程有助于识别问题或用例,但是机器学习工作流程有助于实施解决方案。企业机器学习工作流程是数据驱动的,并在过程中需要决策。机器学习工作流程可以显示为一系列10个步骤,这些步骤可以组合成四个阶段:
- 决策制定
- 数据处理
- 建模
- 部署
机器学习工作流程的每个阶段都可以使用AutoML或低代码人工智能来实施。AutoML为您完成所有繁重的工作。AutoML将训练模型、调优模型、测试模型,并呈现评估指标。您的角色仅仅是评估这些指标,并确定它们是否符合您的业务目标或解决您的问题。AutoML适用于快速实验和原型。它还用于生产环境。低代码方法使具有一些编码或深度编码经验的人能够在机器学习工作流程的任何阶段使用自动生成的代码,并在任何阶段进一步进行定制。
在本章中,您了解了作为机器学习工作流程的一部分的数据收集和分析。第2章提供了本书中使用的数据集的概述,以及如何查找数据源、数据文件类型以及批处理、流处理、结构化、半结构化和非结构化数据之间的区别。您还将亲自体验使用基本的Python代码,帮助您进行探索性数据分析(EDA)并解决脏数据问题。