构建机器学习模型:7个关键步骤与7个核心考量
构建机器学习模型:7个关键步骤与7个核心考量
在当今快速发展的数字化时代,机器学习已成为企业创新和优化业务流程的关键技术。然而,构建一个有效的机器学习模型并非易事,它需要系统的方法论和对关键环节的深入理解。本文将为您详细介绍构建机器学习模型的完整流程,并探讨选择模型时需要考虑的重要因素。
各种组织都在为各行业中的众多应用实施人工智能项目。这些应用包括预测分析、模式识别系统、自主系统、会话系统、超个性化活动和目标驱动系统。每一个项目都有一个共同点:它们都基于对业务问题的理解,并且数据和机器学习算法必须应用于解决问题,从而构建一个能够满足项目需求的机器学习模型。
部署和管理机器学习项目通常遵循相同的模式。然而,现有的应用程序开发方法并不适用,因为人工智能项目是由数据驱动的,而不是编程代码。学习来源于数据,因此正确的机器学习方法源于以数据为中心的需求,并产生专注于数据发现、清理、培训、模型构建和迭代阶段的项目。
对于许多组织来说,机器学习模型开发是一项新活动,但是在某种程度上已经建立了以数据为中心的项目构建方法。
大约25年前,一个由五家供应商组成的联盟开发了跨行业的数据挖掘标准流程(CRISP-DM),该流程专注于数据挖掘项目中各种数据密集型步骤的连续迭代方法。该方法从业务理解和数据理解之间的迭代循环开始。接下来是数据准备和数据建模之间的迭代循环的切换,然后是评估阶段,它将结果分解到部署和业务理解。这种循环的、迭代的循环导致了连续的数据建模、准备和评估。
但跨行业的数据挖掘标准流程(CRISP-DM)的进一步开发似乎已经停滞在近20年前完全生产的1.0版本上,而在15年前还发布其第二个版本。IBM公司和微软公司对这种方法进行了更新和迭代,以生成它们自己的变体,这些变体为数据处理和建模之间的迭代循环添加了更多细节,并提供了在此过程中产生的工件和可交付成果的更多细节。
此外,这种方法由于并不敏捷或不适用于人工智能和机器学习项目而受到质疑。因此需要增强诸如人工智能的认知项目管理之类的方法,以满足人工智能特定的要求,并且可以在具有现有敏捷开发团队和数据组织的组织中实施这些方法。
这些方法论以及大型公司及其数据科学团队的学习,因此采用了一种更强大、更灵活的分步方法来进行机器学习模型开发,以满足认知项目的特定需求。
机器学习模型开发的7个关键步骤
1. 了解并识别业务问题(并定义成功)
任何机器学习项目的第一阶段都是发展对业务需求的理解。在解决问题之前,组织需要知道要解决的问题。首先,与项目所有者合作,并确保组织了解项目的目标和要求。目的是将这些知识转换为适合机器学习项目的定义,设定具体、可量化的目标将有助于从机器学习项目中实现可测量的投资回报率,而不是简单地将其作为一个概念证明来实现,稍后将被搁置一边。其目标应该与组织业务目标相关,而不仅仅是机器学习。虽然机器学习特定的度量(例如精度、准确性、召回率和均方误差)可以包含在指标中,但更具体的业务相关关键绩效指标(KPI)更好。
2. 理解和识别数据
一旦对业务需求有了深刻的了解并获得了计划的批准,就可以开始建立机器学习模型了,是吗?这种想法是错误的。建立业务案例并不意味着组织拥有创建机器学习模型所需的数据。
机器学习模型是通过对训练数据进行学习和概括而构建的,然后将获取的知识应用于从未见过的新数据中进行预测并实现其目的。数据不足将会阻止组织构建模型,而仅访问数据是不够的。有用的数据必须是干净的并且处于良好的状态。在人工智能项目的这一阶段,了解真实世界数据和培训数据以及测试数据和培训数据之间是否存在任何差异,以及组织将采取何种方法来验证和评估模型的性能,这一点也很重要。
3. 收集并准备数据
一旦正确地识别了数据,组织就需要对这些数据进行格式化,以便可以使用它来训练其模型。重点是构建用于建模操作的数据集所必需的以数据为中心的活动。数据准备任务包括数据收集、清理、聚合、扩充、标记、规范化和转换以及结构化、非结构化和半结构化数据的任何其他活动。
数据准备和清理任务会花费大量时间。对机器学习开发人员和数据科学家的调查表明,数据收集和准备步骤最多可占用机器学习项目80%的时间。俗话说“垃圾进、垃圾出”。由于机器学习模型需要从数据中学习,因此花费在准备和清理上的时间是值得的。
4. 确定模型的特征并训练模型
一旦数据处于可用状态,并且组织知道要解决的问题,就到了组织希望做出的下一步:训练模型,以通过应用范围从已准备好的高质量数据中学习技术和算法。
5. 评估模型的性能并建立基准
从人工智能的角度来看,评估包括模型度量评估、混淆矩阵计算、KPI、模型性能度量,模型质量度量以及模型是否可以满足已建立的业务目标的最终确定。模型评估可以视为机器学习的“质量保证”。根据指标和要求对模型性能进行充分评估,可以确定模型在现实世界中的工作方式。
6. 实验并调整运行中的模型
当组织确信机器学习模型可以在现实世界中工作时,那么是时候看看它在现实世界中的实际运行了,也称之为“可操作性”模型。模型的操作化可能包括在云计算环境中,边缘、内部部署或封闭环境中或封闭的受控组中的部署方案。在运营方面的考虑因素包括模型版本控制和迭代、模型部署、模型监视以及开发和生产环境中的模型分段。根据需求,模型的操作范围可以从简单地生成报告到更复杂的多端点部署。
7. 实验和调整模型
即使模型是可运行的,并且组织一直在监视其性能,也还没有结束。在实施技术时,通常会说成功的秘诀是从小处开始,大处思考,并经常进行迭代。始终重复该过程并及时进行改进以进行下一次迭代。业务需求不断发生变化,而技术能力也在不断变化。实际数据以意想不到的方式变化。所有这些都可能对将模型部署到不同端点或新系统中提出新要求。而结束可能只是一个新的开始.
选择机器学习模型时需要考虑的7个关键因素
和很多人的想法相反,性能最好的机器学习模型未必是最好的解决方案。在 Kaggle 竞赛中,性能是你需要的全部。实际上,这也是另一个需要考虑的因素。下面让我们从模型的性能开始,并重新考虑一些其他考虑因素,以便在选择模型来解决问题时牢记在心。
- 性能
模型结果的质量是选择模型时应考虑的基本因素。优先选择能够使性能最大化的算法。取决于问题,不同的度量标准可能对分析模型的结果有所帮助。举例来说,最流行的度量有正确率、准确率、查全率和 F1 分数。
切记,并非每一个度量都适用于所有的情况。例如,在处理不平衡的数据集时,正确率是不适当的。在我们准备开始模型选择过程之前,选择一种良好的度量(或一组指标)来评估模型性能是一项至关重要的任务。
- 可解释性
很多情况下,对模型结果的解释是至关重要的。遗憾的是,很多算法就像黑盒子一样工作,无论结果如何,都很难解释。在这些情况下,缺乏可解释性可能是成功或失败的决定性条件。
如果存在可解释性问题,线性回归和决策树是很好的选择。神经网络则不然。选择好的候选者之前,一定要知道每种模型的结果是否易于解释。有意思的是,可解释性和复杂性通常存在于两个极端,所以接下来我们来看看复杂性。
- 复杂性
一种复杂的模型在数据中可能会发现更多有趣的模式,但是,这会使维护和解释更加困难。
这里有一些不严谨的概括,需要记住:
复杂性越高,性能就越好,但是成本也越高。
复杂性与可解释性成反比。模型越复杂,解释结果就越困难。
抛开可解释性不谈,构建和维护模型的成本是项目成功的关键因素。复杂的设置会对模型的整个生命周期产生更大的影响。
- 数据集大小
可用的训练数据量是选择模型时要考虑的主要因素之一。
神经网络在处理和合成大量数据方面确实很出色。KNN(K-Nearest Neighbors,K- 最近邻)模型更好,示例也更少。除了可用的数据量外,还有一个重要的考虑因素是,为了获得好的结果,你真正需要多少数据。有时候,你可以通过 100 个训练例子来建立一个很好的解决方案;有时候,你需要 100000 个例子。
利用这些与你的问题和数据量有关的信息,选择一个模型来处理它。
- 维度
从两个不同的角度看待维度是有用的:数据集的垂直大小代表我们拥有的数据量。水平大小代表特征的数量。
我们已经讨论了垂直维度如何影响优秀模型的选择。事实证明,水平维度也是需要考虑的因素。如果你的模型有更多的特征,就会有更好的解决方案。越多的特征也会增加模型的复杂性。
“维度的诅咒”(Curse of dimensionality)很好地介绍了维度如何影响模型的复杂性。可以想象,并非每一个模型对高维数据集的扩展都是相同的。在将高维数据作为问题进行集成时,我们可能也需要引入特定的降维算法。PCA 是这方面最流行的算法之一。
- 训练时间与成本
训练一个模型需要多长时间,需要多少钱?你会选择一个正确率为 98%、训练成本为 10 万美元的模型,还是选择一个准确率为 97%、成本为 1 万美元的模型?
这个问题的答案当然取决于你的个人情况。
需要在接近实时的情况下结合新知识的模型,很难适应长周期的训练。举例来说,推荐系统需要根据每个用户的动作不断更新,才能从廉价的训练周期中获益。在设计可扩展的解决方案时,平衡时间、成本和性能非常重要。
- 推理时间
运行一个模型并作出预测需要多长时间?想象一下自动驾驶系统:它需要实时作出决策,因此任何时间过长的模型都无法被考虑。
例如,使用 KNN 开发预测所需的大部分处理都在推理过程中进行。因此运行它的成本非常高。但决策树的推理时间较短,在训练过程中需要较长的时间。
结语
很多人专注于他们最喜欢的模型。常常是他们最熟悉的那个,在前一个项目中给他们带来了好效果。
但是机器学习中 没有免费的午餐。任何一种模型都不能同时适用于所有情况,尤其是当我们考虑现实生活中的系统限制时。
当选择一个好的模型时,了解几个不同的考虑因素对确保项目的成功至关重要。作为总结,下面列出了我们刚才讨论的内容:
模型的性能
结果的可解释性
模型的复杂性
数据集的大小
数据的维度
训练时间和成本
推理时间