机器学习在数据分析与应用中的实践与挑战
1. 数据分析与机器学习在 OAC 中的应用
在数据分析过程中,利用工具进行有效的报告和展示是关键。以 OAC 为例,通过其 Narrate 选项卡,能基于已完成的分析和可视化内容创建报告或演示文稿。具体操作如下:
- 可从可视化内容里挑选画布;
- 为其添加描述;
- 隐藏图表;
- 添加注释等。
完成后,既可以直接在 OAC 中进行叙述展示,也能将项目导出为 PowerPoint(.pptx)、Acrobat(.pdf)、图像(.png)或 OAC 包(.dva)等格式,甚至直接打印出来。
在机器学习方面,OAC 有诸多应用场景。当数据上传到 OAC 时,数据样本会给出转换和丰富数据的建议。其 Explain 功能、自动语言叙述等特性,都体现了机器学习让工具更易用、高效。此外,还能通过以下步骤使用机器学习:
1.
创建预测模型
:借助数据流程创建预测模型。先使用 Data Flow 编辑器在训练数据上创建并训练模型,再将其应用于已知输入和输出的数据集进行评估。不断迭代训练过程,直至模型达到理想质量。最后用训练好的模型对新数据的未知输出进行评分或预测,并保存预测数据集。还能通过添加场景将预测模型应用到项目中。
2.
查看和管理机器学习模型
:从主导航菜单中选择“Machine Learning”,可查看可用的机器学习模型。选择某个模型后,能对其进行研究、标记为收藏或删除。若列表中没有所需模型,可进行注册。注册步骤如下:
- 选择存在该模型的 Oracle 数据库的连接,此数据库可以是本地数据库或 Oracle 自治数据库。
- 若没有可用连接,需点击“Create Connection”创建新连接。
- 连接到数据库后,会看到可用的 ML 模型列表,选择模型并点击“Register”,该模型即可在 OAC 中使用。
3.
搜索功能的机器学习应用
:在 OAC 主页的搜索功能中也运用了机器学习。点击麦克风图标,口头提出分析问题,OAC 会检查数据,找到答案所需的数据并自动创建分析图表。
2. 机器学习开发与部署的挑战
随着可用数据量的增长、计算处理成本的降低和数据存储价格的下降,机器学习模型在商业应用中的集成不断加速。然而,机器学习应用的开发和部署面临着诸多挑战。
2.1 开发挑战
与传统软件开发相比,机器学习应用开发更具难度。传统软件开发中,通过软件逻辑能充分表达产品期望行为,经过模拟数据测试的代码,在生产环境中使用真实数据时通常能正常工作。而机器学习应用无需特定编程就能执行任务,其质量依赖于输入数据和调优参数。训练模型时会建立输入(自变量)到输出(目标变量)的映射函数,但从历史数据中学到的映射在未来新数据上可能不再有效,因为输入和输出数据的关系可能发生变化,这会导致模型预测准确性随时间下降,因此需要不断提供新数据以维持其正常工作。
模型漂移是机器学习中的一个重要概念,指外部数据变化导致预测模型的预测性能变差。根据漂移原因,可分为概念漂移和数据漂移:
-
概念漂移
:指目标变量的统计属性随时间变化。例如电子邮件垃圾邮件过滤应用,由于垃圾邮件和正常邮件的不断演变,会频繁出现概念漂移。
-
数据漂移
:当自变量的属性发生变化时会出现数据漂移。比如在信用卡客户违约预测模型中,目标变量(违约支付)的定义不变,但定义该目标的自变量(如人口统计因素、信用数据、支付历史和账单声明)的值发生变化。
2.2 部署挑战
在部署前,模型通常会进行预训练并导出为特定文件格式(如 pickle、ONNX、PMML)。若无模型漂移,Model Serving 代码可加载这些预训练模型包进行预测,为下游应用提供服务。但对于处理实时数据的模型,模型训练在开发阶段结束后并未终止。投入运行后,需要对模型进行监控,可能还需频繁重新训练以适应变化的情况。这就需要添加带有模型监控的重新训练管道,为模型服务模块提供数据,形成特定的生命周期模式。
下面是机器学习生命周期各阶段及其产生的额外工件的 mermaid 流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(数据准备):::process -->|验证、预处理、拆分| B(模型构建):::process
B -->|训练| C(模型评估):::process
C -->|评估指标| D(模型验证):::process
D -->|选择版本| E(模型服务):::process
E -->|预测| F(模型监控):::process
F -->|检测漂移| A
各阶段具体情况如下表所示:
| 阶段 | 操作内容 |
| ---- | ---- |
| 数据准备 | 数据处理代码先验证原始数据,若检测到模式或分布偏差则生成事件,否则对数据进行预处理并拆分为训练集和测试集。 |
| 模型构建 | 用实验参数创建候选模型,使用训练集进行训练。 |
| 模型评估 | 评估候选模型并生成性能指标。 |
| 模型验证 | 将候选模型与当前实时版本进行验证和比较,选择更符合性能要求的版本。 |
| 模型服务 | 将选定的模型推广到生产环境,使用新数据进行预测。 |
| 模型监控 | 通过比较连续的历史数据集,检测特征和预测中的模式或分布偏差。若检测到明显漂移,记录模型漂移事件并触发新的生命周期迭代进行模型重新训练。 |
2.3 扩展挑战
数据科学家和工程师在扩展机器学习解决方案时,需关注以下几个关键领域:
-
模型训练
:训练过程中,大量数据会反复进行一系列数学计算,训练出一个准确率较高的模型可能需要很长时间(数天或数周),且要训练的模型数量越多,问题越严重。
-
模型推理
:模型推理服务需处理大量输入或用户,要满足延迟和吞吐量要求。在计算机视觉的深度学习推理加速方面,硬件和应用层面都需要进行优化。
-
输入数据处理
:在典型的机器学习生命周期中,系统会处理大量数据。数据的内存表示和算法访问数据的方式会对可扩展性产生重大影响。为了跟上多个加速硬件设备的数据消耗速度,需要提高数据处理速度和吞吐量。
综合上述分析,支持实时机器学习模型的关键要求如下:
- 实现整个机器学习生命周期的自动化(必要时可进行人工干预或审批)。
- 跟踪和管理机器学习模型及相关工件,如数据、代码、模型包、配置、依赖项和性能指标,这对漂移检测、模型重现性、可审计性、调试和可解释性至关重要。
- 模型性能(如准确性)是衡量任何机器学习模型的关键质量指标。
- 机器学习的操作要求包括 ML API 端点的响应,时间、预测时的内存/CPU 使用情况以及磁盘利用率(如适用)。
机器学习在数据分析与应用中的实践与挑战
3. 设计考虑与解决方案
为了克服机器学习开发和部署中的挑战并满足相关要求,需要考虑一些常见的设计思路,并借助一些先进的解决方案和工具。
3.1 自动化数据科学步骤
将机器学习模型产品化通常需要对生命周期处理进行自动化,这涉及到以下具体的数据科学步骤:
1.
数据摄取/预处理
:从传入数据源收集和处理原始数据。
2.
数据验证
:验证输入数据的模式和统计属性是否符合模型预期。
3.
数据准备
:清理、规范化数据,并将其拆分为训练集和测试集。
4.
特征工程
:转换原始数据,构建能更好地向模型呈现潜在问题的附加特征。
5.
特征选择
:去除无关特征,选择对目标变量贡献最大的特征,输出训练算法所需格式的特征拆分。
6.
模型训练
:将各种机器学习算法应用于准备好的特征集,训练机器学习模型,包括超参数调整以获得性能最佳的模型。
7.
模型评估
:使用一组指标评估候选模型的质量。
8.
模型验证
:根据模型评估和监控指标,确定模型是否适合部署。
9.
模型服务
:ML 推理程序使用训练好的模型生成预测。
10.
模型监控
:监控以检测训练/服务偏差和模型漂移,若漂移显著,需使用最新数据重新训练和刷新模型。
这些手动的数据科学步骤需要在自动化管道中实现,才能部署到生产环境。MLOps 是机器学习自动化中的一个重要且较新的概念。
3.2 自动化 ML 管道:MLOps
MLOps 是结合数据科学家和运营专业人员实践的一套方法,用于自动化和管理生产机器学习(或深度学习)生命周期,是大规模机器学习产品化的 CI/CD 框架。
以下是相关概念的解释:
-
持续集成(CI)
:软件开发的最佳实践,将所有开发人员的工作副本频繁合并到共享存储库中,每次合并后通过自动化构建和自动化验收测试进行验证。
-
持续交付(CD)
:确保代码库随时可部署,除了通过自动化测试,还需具备将应用程序推送到生产环境所需的所有配置、依赖项和打包。
-
DevOps
:自动化和集成传统软件开发与运营团队流程的一套实践,结合文化理念、实践和工具,提高组织交付高速应用程序和服务的能力。
MLOps 的运营方面与 DevOps 类似,可复用经典 DevOps 工具链组件来处理源代码存储库、构建/测试/打包/部署自动化和集成测试,例如:
| 工具名称 | 用途 |
| ---- | ---- |
| Git | 源代码存储库 |
| Jenkins | 自动化工具 |
| Kubeflow 和 Airflow | 编排器 |
| Travis CI | 持续集成服务 |
| Argo CD | 持续交付工具 |
| Kubernetes | 用于自动化应用程序部署的容器编排系统 |
MLOps 对 ML 管道自动化的流程如下:
1. 模型驱动的应用代码包含 ML 管道。
2. 代码提交并合并到代码存储库(Git)后,DevOps 的持续集成工具自动启动集成和测试。
3. 持续交付工具确保 ML 管道与所有必要的配置/依赖库打包,准备好部署到生产环境。
然而,生产机器学习由于特定的相互依赖关系,带来了额外的 CI/CD 和编排挑战。MLOps 是 DevOps 的扩展,具有额外的基础设施和工具:
-
特殊硬件
:需要对数据和算法进行特殊分割和编排,以利用加速硬件(如图形处理单元(GPU)和张量处理单元(TPU))并满足可扩展性要求。
-
复杂计算图
:编排可能涉及复杂的运行时计算图,ML 应用程序可能有多个管道并行执行。
-
A/B 测试、集成、多臂老虎机
:用于模型优化和评估。
-
可重复性
:由于模型训练的实验性质,保持管道和组件的可重复性很重要。ML 管道可根据模型注册表中的信息进行重用、调整和恢复。
-
持续模型交付
:模型注册表决定将模型从暂存环境提升到生产环境后,模型会自动准备好供预测服务和下游应用/客户端使用,实现 ML 管道内新模型版本的“持续交付”。
-
法规合规性
:需要额外的可解释性和解释模块,向各种合规监管机构说明模型的复杂性。
3.3 模型注册表跟踪
模型注册表是一个集中的数据存储,支持管理机器学习模型的整个生命周期。它提供模型版本控制、生产/暂存/存档转换,跟踪每个活动管道实例的数据依赖、代码依赖、环境和配置。
以下是通常在模型注册表中跟踪和保存的项目:
1. 训练模型的选定版本
2. 输入数据的版本
3. 代码的版本(所有源代码的版本,如模型训练、应用程序、管道处理等,在外部源代码存储库中跟踪)
4. 依赖项(与依赖库、数据库连接等的链接)
5. 环境配置(控制 ML 管道组件的参数,如数据处理、特征选择、数据验证或模型监控使用的阈值)
6. 超参数(控制 ML 学习过程的参数,如学习率、批量大小、神经网络大小、训练轮数、层数、滤波器数量和优化器名称)
7. 训练模型包(模型训练的结果包,典型格式为 pickle、ONNX 和 PMML)
8. 模型评分结果(模型做出的预测)
9. 训练和测试的特征
10. 特征重要性(根据输入特征对预测目标变量的有用性分配的分数)
11. 模型性能指标
- 训练时间
- 准确率
- 损失
- 混淆矩阵
- 准确率:(TP + TN) / (TP + FP + TN + FN)
- 精确率:TP / (TP + FP)
- 召回率:TP / (TP + FN)
其中,TP、TN、FP 和 FN 分别代表真阳性、真阴性、假阳性和假阴性。在二元分类器(具有两个类:真和假)中,它们的定义如下:
- TP:预测为真且实际结果为真的案例数
- TN:预测为真但实际结果为假的案例数
- FP:预测为假但实际结果为真的案例数
- FN:预测为假且实际结果为假的案例数
mermaid 流程图展示模型注册表在 ML 管道中的作用:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(代码仓库):::process -->|版本化代码| B(模型注册表):::process
C(数据源):::process -->|版本化数据| B
B -->|模型选择| D(模型服务):::process
D -->|预测| E(下游应用):::process
E -->|反馈| B
综上所述,机器学习在数据分析和商业应用中具有巨大潜力,但也面临着开发、部署和扩展等多方面的挑战。通过采用 MLOps 等方法和工具,以及有效的模型注册表跟踪机制,可以更好地应对这些挑战,实现机器学习模型的高效开发和应用。
超级会员免费看

被折叠的 条评论
为什么被折叠?



