机器学习模型-开发生命周期

The 机器学习模型开发生命周期 (MDLC) 指导 ML 模型开发从开始到退役的活动。在本文中,我们概述了 MDLC 的关键阶段——包括数据摄取、探索性数据分析、模型创建和模型操作。
MDLC 如下图所示,具有典型的步骤顺序:

数据摄取
训练预测模型是关于使用捕获的数据从过去的事件中学习。因此,拥有高质量数据是任何机器学习活动的先决条件。数据分散在许多持久性位置(例如日志文件、事件流或数据库)中,通常位于高度分散的地理分布环境中。数据摄取是将数据从其原始来源收集到具有强大分析处理能力的中央数据存储库中以允许进行广泛的数据处理和分析的过程。
数据摄取通常使用数据管道完成,使用以下步骤。
- 从原始数据源中提取原始数据。有两种模式:
1) 在 polling 模式下,数据提取由管道以一定的时间间隔启动。数据增量(自上次提取以来的新数据)将由管道提取。
2) 在_pushing_模式下,数据源不断地将新数据上传到由管道管理的数据流中。
- **将提取的数据转换成适合后续处理的形式。
1)** 根据预定义的质量标准验证数据,例如数据结构(例如,每条记录的属性数量是否正确)、数据类型(例如,当需要数字时接收字符串)、数据值(例如,拒绝 200 作为无效的人类年龄)和缺失值(缺少强制性属性)。还应评估数据以确定它是否表现出任何偏见——这在处理代表个人身份信息 (PII) 的数据时尤其重要,因为有偏见的数据会导致有偏见的模型。
2) 通过验证过程的数据将根据数据仓库中定义的模式进行转换。可以丢弃不相关的属性,并可以添加其他属性来丰富上传的数据。
- **以针对访问优化的适当格式存储数据。下面列出了一些常见的数据类型。此外,通常将图像和视频数据存储在文件系统或对象存储中,例如 S3。
1)** 表格数据可能是最常见的,它被组织为行和列,其中每一行代表一个实例(或样本),每一列代表实例的属性。通常使用 SQL 数据库。
2) 时间序列数据是表格数据的一种特殊情况,其中一列代表一个时间维度。使用时间维度时,可以使用专门的索引机制来加速处理。
3) 自由格式的文本(如电子邮件、在线聊天、新闻网站)也很常见,尤其是在执行自然语言处理 (NLP) 时。它通常存储为正向索引(从文档 ID 到文档内容)和倒排索引(从单词到文档 ID)以加速关键字查询。
4) 当数据代表具有复杂相互关系的不同类型的实体时,图形数据很常见。数据通常表示为“节点”,关系表示为“边”。可以使用专门的图形数据库来加速访问(例如,通过边缘导航以探索相邻节点)。

探索性数据分析
通过探索性数据分析 (EDA),我们开始探索我们收集的数据,了解正在发生的事情,将我们的发现与业务领域知识相结合,并为产品和服务产生创新想法。 EDA 通常用作投资开发模型之前的第一个合格步骤。

EDA 通常涉及以下活动:
-
了解数据所讲述的故事。可视化数据以通过各种图表从不同角度了解数据分布和相关性。例如,条形图可用于了解客户在不同地区的分布情况,折线图可用于了解过去六个月的收入变化,散点图可用于了解公司规模与购买的关系体积。
-
我们将收集到的数据与业务领域知识结合起来讲故事。例如,解释为什么会看到某种现象,了解其潜在驱动因素,评估未来的机会和风险,并确定后续行动。
-
了解数据是否与我们之前的商业意识一致(或矛盾)。我们根据零假设陈述我们的信念,并对收集的数据进行统计显着性检验,以评估我们的信念是否仍然成立。进行 A/B 测试(随机对照实验)以测试假设的重要性。
模型创建
充分了解我们的数据和我们想要解决的问题后,我们就可以创建我们的模型了——通常使用迭代过程。
在 ML 中,有许多类型的模型,包括找到因果关系的_因果模型_和决定在特定情况下采取什么行动的_优化模型。在本文中,我们关注_预测模型的生命周期,_这是机器学习中最常见的模型类型。
基于监督学习——每个数据记录都包含一个标记(基本事实)输出——一个预测模型是通过一个训练过程创建的,在这个过程中,我们将包含输入和标记输出属性的数据提供给机器学习算法,该算法逐步调整它的参数以产生接近标记输出的预测。
以下八个步骤详细描述了训练过程:
1) 定义用于衡量模型性能的指标。
-
R2、RMSE 和 MAPE 是输出数值的回归模型的常用指标。
-
Precision、Recall、F1 和 AUC通常用于输出分类值的分类模型。
-
您还需要选择一个损失函数以反映您选择的模型性能指标。
2) 清理数据集。
-
删除重复记录。
-
处理具有缺失值的数据——插补或填充缺失值或删除有问题的行或列。
-
查找任何潜在的异常值并将其删除,但前提是它们代表错误;真正的异常值通常是重要的数据点。
3) 从现有属性创建输入特征。
-
通过组合不同的原始输入数据属性来创建额外的输入属性。
-
对于数字输入属性,将每个属性的值归一化,使其落在均值为零的统一范围内(例如,介于 -1 和 +1 之间)。
-
检查数字属性的偏度,如果可能,将它们适当地转换为钟形曲线形状。
-
对于分类属性,将字符串编码为数字(使用one-hot encoding,class-mean encoding或[embedding]zwz1000.4)
-
如果每条记录的输入属性太多,考虑使用降维技术去除一些不太重要的属性,例如主成分分析(PCA)。特征选择技术也可以用来挑选一小组更重要的输入属性。
4) 将数据分成三组(百分比可能因问题性质和数据可用性而异)。
-
训练集(通常是可用数据的 70%)用于训练模型。
-
验证集(通常为 10%)用于优化模型超参数(例如线性回归模型的正则化权重)。
-
测试集(通常为 20%)仅用于衡量最终训练模型在未见数据上的性能。
5) 如果输出类高度不平衡,请重新采样数据以平衡输出类。
-
来自稀有类的过采样记录和来自频繁类的欠采样记录。
-
(可选)为稀有类创建合成数据记录。
6) 选择模型结构。两种流行的型号是:
-
神经网络(也称为深度学习)
-
梯度提升决策树
7)调整模型的超参数(例如,梯度提升决策树中的树数或神经网络中的学习率)。
-
对于每个超参数配置,模型会根据训练数据进行训练,并使用验证数据评估性能。
-
通常会选择性能最好的模型作为最终模型。但是,根据要求,我们可能会选择用性能换取更可解释、更公平或支持更快推理的模型。
8 ) 使用测试集根据步骤 1 中定义的指标(“定义用于衡量模型性能的指标”)评估最终模型的性能。
-
如果我们对最终模型的性能感到满意,我们可以将最终模型保存到模型存储库中,并将模型部署到生产中。
-
如果没有,我们需要回去做更多的数据探索,创造新的特征,重复训练周期。
-
遵循公司关于模型治理的政策并检查以确保模型在做出决策或预测时没有使用受保护的属性(例如性别、年龄等)。

模型操作
模型从训练阶段毕业后,进入模型运行阶段,准备投入生产使用。模型操作阶段包括以下任务。
- 将模型部署到生产服务环境中。
-
模型的暴露方式有两种:将模型封装为应用代码调用的库函数,或者将模型封装为模型服务平台托管的RESTful API服务。
-
或者,我们可以将最新模型逐步部署到有限比例的用户,同时运行 A/B 测试以将其与当前部署的生产模型进行比较。根据性能差异,我们可以决定是否应该前滚到最新模型。
2) 监控模型的性能,检测以下是否有漂移:
-
输入变量的分布:如果新数据显着偏离训练数据,这很好地表明环境中的某些东西发生了变化。
-
模型性能指标:如果模型在新数据上的性能相对于其在训练阶段的性能有所下降,则可能需要重新训练模型。
3) 如果检测到漂移,使用最新刷新的数据重新训练模型。在某些情况下,也可以安排模型再训练。例如,您可以选择每周根据最新数据重新训练模型。

在本文中,我们概述了 MDLC 和不同阶段所涉及的活动。在以后的文章中,我们将进一步扩展每个阶段的细节和底层设计注意事项。
请继续关注并继续学习...... :)
更多推荐

所有评论(0)