组织构建一个可行的、可靠的、敏捷的机器学习模型来简化操作和支持其业务计划需要耐心、准备以及毅力。
各种组织都在为各行业中的众多应用实施人工智能项目。这些应用包括预测分析、模式识别系统、自主系统、会话系统、超个性化活动和目标驱动系统。每一个项目都有一个共同点:它们都基于对业务问题的理解,并且数据和机器学习算法必须应用于解决问题,从而构建一个能够满足项目需求的机器学习模型。
部署和管理机器学习项目通常遵循相同的模式。然而,现有的应用程序开发方法并不适用,因为人工智能项目是由数据驱动的,而不是编程代码。学习来源于数据,因此正确的机器学习方法源于以数据为中心的需求,并产生专注于数据发现、清理、培训、模型构建和迭代阶段的项目。
对于许多组织来说,机器学习模型开发是一项新活动,但是在某种程度上已经建立了以数据为中心的项目构建方法。
大约25年前,一个由五家供应商组成的联盟开发了跨行业的数据挖掘标准流程(CRISP-DM),该流程专注于数据挖掘项目中各种数据密集型步骤的连续迭代方法。该方法从业务理解和数据理解之间的迭代循环开始。接下来是数据准备和数据建模之间的迭代循环的切换,然后是评估阶段,它将结果分解到部署和业务理解。这种循环的、迭代的循环导致了连续的数据建模、准备和评估。
但跨行业的数据挖掘标准流程(CRISP-DM)的进一步开发似乎已经停滞在近20年前完全生产的1.0版本上,而在15年前还发布其第二个版本。IBM公司和微软公司对这种方法进行了更新和迭代,以生成它们自己的变体,这些变体为数据处理和建模之间的迭代循环添加了更多细节,并提供了在此过程中产生的工件和可交付成果的更多细节。
此外,这种方法由于并不敏捷或不适用于人工智能和机器学习项目而受到质疑。因此需要增强诸如人工智能的认知项目管理之类的方法,以满足人工智能特定的要求,并且可以在具有现有敏捷开发团队和数据组织的组织中实施这些方法。
这些方法论以及大型公司及其数据科学团队的学习,因此采用了一种更强大、更灵活的分步方法来进行机器学习模型开发,以满足认知项目的特定需求。
步骤1.了解并识别业务问题(并定义成功)
任何机器学习项目的第一阶段都是发展对业务需求的理解。在解决问题之前,组织需要知道要解决的问题。
首先,与项目所有者合作,并确保组织了解项目的目标和要求。目的是将这些知识转换为适合机器学习项目的定义,并制定实现该项目目标的初步计划。需要回答的关键问题包括:
- 需要认知解决方案的业务目标是什么?
- 解决方案的哪些部分是认知的,哪些并没有认知?
- 是否解决了所有必要的技术、业务和部署问题?
- 项目定义的“成功”标准是什么?
- 项目如何在迭代冲刺阶段进行?
- 是否对透明度、可解释性或减少偏见有特殊要求?
- 道德方面的考虑是什么?
- 精度和混淆矩阵值可接受的参数是什么?
- 对模型的预期输入和预期输出是什么?
- 要解决的问题的特征是什么?这是分类、回归还是聚类问题?
- 什么是“启发式”:解决不需要机器学习的问题的快速方法?模型需要比启发式方法好多少?
- 如何衡量模型的收益?
尽管在第一个步骤中有很多问题要回答,但是回答甚至尝试回答这些问题将会显著增加整个项目成功的机会。
设定具体、可量化的目标将有助于从机器学习项目中实现可测量的投资回报率,而不是简单地将其作为一个概念证明来实现,稍后将被搁置一边。其目标应该与组织业务目标相关,而不仅仅是机器学习。虽然机器学习特定的度量(例如精度、准确性、召回率和均方误差)可以包含在指标中,但更具体的业务相关关键绩效指标(KPI)更好。
步骤2. 理解和识别数据
一旦对业务需求有了深刻的了解并获得了计划的批准,就可以开始建立机器学习模型了,是吗?这种想法是错误的。建立业务案例并不意味着组织拥有创建机器学习模型所需的数据。
机器学习模型是通过对训练数据进行学习和概括而构建的,然后将获取的知识应用于从未见过的新数据中进行预测并实现其目的。数据不足将会阻止组织构建模型,而仅访问数据是不够的。有用的数据必须是干净的并且处于良好的状态。
确定组织的数据需求,并确定数据是否适合机器学习项目。组织的重点应放在数据识别、初始收集、需求、质量识别、见解和潜在的值得进一步研究的方面。以下是一些需要考虑的关键问题:
- 训练模型所需的数据源在哪里?
- 机器学习项目需要多少数据?
- 当前培训数据的数量是多少?质量如何?
- 如何拆分测试集数据和训练集数据?
- 对于监督学习任务,是否可以标记这些数据?
- 可以使用预训练的模型吗?
- 操作和培训数据位于何处?
- 在边缘设备上或更难以到达的地方访问实时数据是否有特殊需求?
回答这些重要问题有助于组织处理数据的数量和质量,并了解使模型正常工作所需的数据类型。
此外,组织需要了解模型如何在实际数据上运行。例如,该模型是否可以离线使用,以批处理模式对异步输入和处理的数据进行操作,还是可以实时使用并在高性能要求下运行以提供即时结果?这些信息还将确定所需的数据类型和数据访问要求。
组织还要确定模型是否将在迭代中训练,定期或实时部署其版本。实时训练对数据提出了许多要求,这些要求在某些设置中可能不可行。
在人工智能项目的这一阶段,了解真实世界数据和培训数据以及测试数据和培训数据之间是否存在任何差异,以及组织将采取何种方法来验证和评估模型的性能,这一点也很重要。
步骤3.收集并准备数据
一旦正确地识别了数据,组织就需要对这些数据进行格式化,以便可以使用它来训练其模型。重点是构建用于建模操作的数据集所必需的以数据为中心的活动。数据准备任务包括数据收集、清理、聚合、扩充、标记、规范化和转换以及结构化、非结构化和半结构化数据的任何其他活动。
- 数据准备、收集和清理过程中的程序包
- 从各种来源收集数据。
- 跨不同数据源标准化格式。
- 替换不正确的数据。
- 增强和扩充数据。
- 添加更多具有预先计算数量的维度,并根据需要汇总信息。
- 使用第三方数据增强数据。
- “倍增”基于图像的数据集,如果这些数据集不足以进行培训。
- 删除无关的信息和重复数据。
- 从培训中删除无关的数据以改善结果。
- 减少噪音并消除歧义。
- 考虑匿名化数据。
- 标准化数据以使其进入格式化范围。
- 来自大型数据集的样本数据。
- 选择可标识最重要尺寸的特征,并在必要时使用多种技术减小尺寸。
- 将数据分为训练、测试和验证集。
数据准备和清理任务会花费大量时间。对机器学习开发人员和数据科学家的调查表明,数据收集和准备步骤最多可占用机器学习项目80%的时间。俗话说“垃圾进、垃圾出”。由于机器学习模型需要从数据中学习,因此花费在准备和清理上的时间是值得的。
步骤4.确定模型的特征并训练模型
一旦数据处于可用状态,并且组织知道要解决的问题,就到了组织希望做出的下一步:训练模型,以通过应用范围从已准备好的高质量数据中学习技术和算法。
这一阶段需要模型技术的选择和应用,模型训练、模型超参数设置和调整、模型验证、集成模型开发和测试、算法选择以及模型优化。为此,需要执行以下操作:
- 根据学习目标和数据要求选择正确的算法。
- 配置和调整超参数以获得最佳性能,并确定获得最佳超参数的迭代方法。
- 确定提供最佳结果的功能。
- 确定是否需要模型可解释性。
- 开发集成模型以提高性能。
- 测试不同型号的性能。
- 确定模型的运行和部署要求。
然后可以评估结果模型以确定其是否满足业务和运营要求。
步骤5.评估模型的性能并建立基准
从人工智能的角度来看,评估包括模型度量评估、混淆矩阵计算、KPI、模型性能度量,模型质量度量以及模型是否可以满足已建立的业务目标的最终确定。在模型评估过程中,应该执行以下操作:
- 使用验证方法和验证数据集评估模型。
- 确定分类问题的混淆矩阵值。
- 确定k-折叠交叉验证的方法(如果使用该方法)。
- 进一步调整超参数以获得最佳性能。
- 将机器学习模型与基准模型或启发式模型进行比较。
模型评估可以视为机器学习的“质量保证”。根据指标和要求对模型性能进行充分评估,可以确定模型在现实世界中的工作方式。
步骤6.实验并调整运行中的模型
当组织确信机器学习模型可以在现实世界中工作时,那么是时候看看它在现实世界中的实际运行了,也称之为“可操作性”模型:
- 部署模型以持续测量和监视其性能。
- 制定基准,以可用来衡量模型的未来迭代。
- 不断迭代模型的不同方面,以提高整体性能。
模型的操作化可能包括在云计算环境中,边缘、内部部署或封闭环境中或封闭的受控组中的部署方案。在运营方面的考虑因素包括模型版本控制和迭代、模型部署、模型监视以及开发和生产环境中的模型分段。根据需求,模型的操作范围可以从简单地生成报告到更复杂的多端点部署。
步骤7.实验和调整模型
即使模型是可运行的,并且组织一直在监视其性能,也还没有结束。在实施技术时,通常会说成功的秘诀是从小处开始,大处思考,并经常进行迭代。
始终重复该过程并及时进行改进以进行下一次迭代。业务需求不断发生变化,而技术能力也在不断变化。实际数据以意想不到的方式变化。所有这些都可能对将模型部署到不同端点或新系统中提出新要求。而结束可能只是一个新的开始,因此最好确定以下内容:
- 对模型功能的下一个要求;
- 扩大模型培训以涵盖更大的能力;
- 改善模型的性能和准确性;
- 改进模型的运行性能;
- 不同部署的操作要求;
- 针对“模型漂移”或“数据漂移”的解决方案,这些解决方案可能会由于实际数据的变化而导致性能变化。
组织需要反思在其模型中哪些有效,哪些是正在进行的工作。要在机器学习模型构建中取得成功,最可靠的方法就是不断地寻找改进和更好的方法来满足组织不断发展的业务需求。