【MLOps】第 9 章 : MLOps 实践:消费者信用风险管理

2023-10-21 18:40

本文主要是介绍【MLOps】第 9 章 : MLOps 实践:消费者信用风险管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

​​

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

文章目录

背景:业务用例

模型开发

模型偏差注意事项

准备生产

部署到生产

总结


在本文的最后几章中,我们探讨了 MLOps 在实践中可能是什么样子的三个例子。我们明确选择这三个示例,因为它们代表了根本不同的机器学习用例,并说明了 MLOps 方法可能如何不同以适应业务及其 ML 模型生命周期实践的需求。

背景:业务用例

当消费者要求贷款时,信贷机构必须决定是否给予贷款。根据具体情况,流程中的自动化程度可能会有所不同。然而,决策很可能是根据评估贷款按预期偿还或不偿还的概率的分数来决定的。

分数通常用于该过程的不同阶段:

  • 在预筛选阶段,通过少量特征计算出的分数可以让机构快速放弃一些申请。

  • 在承保阶段,根据所有所需信息计算出的分数为决策提供了更精确的基础。

  • 承保阶段之后,分数可用于评估与投资组合中的贷款相关的风险。

数十年来一直使用分析方法来计算这些概率。例如,美国从 1995 年开始使用 FICO 评分。鉴于它们对机构收入和客户生活的直接影响,这些预测模型一直受到严格审查。因此,流程、方法和技能已经正式化为高度规范的环境,以确保模型的可持续性能。

无论模型是基于专家制定的规则、经典统计模型还是最新的机器学习算法,它们都必须遵守类似的规定。因此,消费者信用风险管理可以被视为 MLOps 的先驱:与其他用例的平行以及最佳实践可以基于此用例进行分析。

在做出信贷决策时,通常可以获得有关客户的历史和当前情况的信息。客户持有多少信用?客户是否曾经未偿还过贷款(用信贷术语来说,客户是否属于拖欠贷款)?在某些国家/地区,称为信用局的组织会收集此信息,并直接或通过分数(如上述 FICO 分数)的形式将其提供给债权人。

待预测目标的定义更为复杂。客户未按预期还款是信用风险模型中的“坏”结果。理论上,应该等待完全还款来确定“好”结果,并等待损失冲销来确定“坏”结果。然而,获得这些最终数据可能需要很长时间,而等待它们会阻碍人们对不断变化的情况做出反应。因此,通常会根据各种指标进行权衡,在损失确定之前宣布“坏”结果。

模型开发

从历史上看,信用风险建模基于基于规则的混合(现代 ML 术语中的“手动特征工程”)和逻辑回归。专业知识对于创建良好的模型至关重要。建立适应性的客户细分以及研究每个变量的影响和变量之间的相互作用需要大量的时间和精力。结合先进的技术,如带偏移的两阶段模型、先进的一般线性模型一方面基于 Tweedie 分布或单调性约束,另一方面基于金融风险管理技术,这使得该领域成为精算师的游乐场。

像 XGBoost 这样的梯度增强算法降低了构建良好模型的成本。然而,黑盒效应使它们的验证变得更加复杂:无论输入如何,都很难感觉到此类模型会给出合理的结果。尽管如此,信用风险建模人员已经学会了使用和验证这些新型模型。他们开发了新的验证方法,例如,基于个人解释(例如,Shapley 值)来构建相信他们的模型,这是 MLOps 的一个重要组成部分,正如我们在本书中所探讨的那样。

模型偏差注意事项

建模者还必须考虑选择偏差,因为模型将不可避免地用于拒绝申请人。因此,获得贷款的人群不能代表申请人群。

通过不加注意地对先前模型版本选择的人群训练模型版本,数据科学家将使模型无法准确预测被拒绝的人群,因为它没有出现在训练数据集中,而这正是预期的该模型。这种效应称为樱桃采摘。因此,必须使用特殊方法,例如根据申请人群体重新加权或根据外部数据校准模型。

型号用于风险评估,而不仅仅是做出发放贷款的决定,必须产生概率,而不仅仅是是/否结果。通常,预测模型直接产生的概率并不准确。虽然数据科学家应用阈值来获得二元分类不是问题,但他们通常需要一种称为校准的单调转换恢复根据历史数据评估的“真实”概率。

该模型此用例的验证通常包括:

准备生产

鉴于信用风险模型的重大影响,其验证过程涉及与生命周期的建模部分相关的重要工作,它包括以下方面的完整文档:

  • 使用的数据

  • 模型和构建模型的假设

  • 验证方法和验证结果

  • 监测方法

监测方法在这种情况下有两个方面:数据和性能漂移。由于预测和获得基本事实之间的延迟很长(通常是贷款期限加上几个月以考虑延迟付款),仅监控模型性能是不够的:还必须仔细监控数据漂移。

例如,如果发生经济衰退或商业政策发生变化,申请人群很可能会发生变化,以至于在没有进一步验证的情况下无法保证模型的性能。数据漂移为通常执行按客户群划分,并采用通用统计指标来衡量之间的距离概率分布(如 Kolmogorov-Smirnov 或 Wasserstein 距离)以及特定于金融服务的指标,如人口稳定性指数和特征稳定性指数。还定期评估具有通用指标 (AUC) 或特定指标(Kolmogorov-Smirnov、Gini)的子群体的性能漂移。

模型文档通常由 MRM 团队以非常正式和独立的流程进行审查。这种独立审查是确保向模型开发团队提出正确问题的良好做法。在某些关键情况下,验证团队可能会根据文档从头开始重建模型。在某些情况下,第二次实施是使用替代技术来建立对模型的文档化理解的信心,并突出显示源自原始工具集的未发现错误。

复杂且耗时的模型验证过程会对整个 MLOps 生命周期产生影响。如此冗长的 QA 无法进行快速修复和快速模型迭代,并且会导致非常缓慢且经过深思熟虑的 MLOps 生命周期。

部署到生产

在一个典型的大的金融服务在组织中,生产环境不仅与设计环境分离,而且还可能基于不同的技术堆栈。关键操作的技术栈——比如交易验证,还有潜在的贷款验证——总是会缓慢发展。

从历史上看,生产环境主要支持逻辑回归等规则和线性模型。有些可以处理更复杂的模型,例如 PMML 或 JAR 文件。对于不太重要的用例,Docker部署或通过集成数据科学和机器学习平台进行部署是可能的。因此,模型的操作化可能涉及从单击按钮到基于 Microsoft Word 文档编写公式的操作。

已部署模型的活动日志记录对于监控此类高价值用例中的模型性能至关重要。根据监控的频率,反馈循环可能是自动化的,也可能不是自动化的。例如,如果任务每年只执行一次或两次,并且大部分时间都花在询问数据问题上,则可能不需要自动化。另一方面,如果每周进行一次评估,自动化可能是必不可少的,对于期限为几个月的短期贷款来说可能就是这种情况。

总结

几十年来,金融服务一直在开发预测模型验证和监控方案。他们已经能够不断适应新的建模技术,如梯度提升方法。鉴于它们的重要影响,围绕这些模型的生命周期管理的流程已经正式化,甚至纳入了许多法规。因此,它们可以成为其他领域 MLOps 最佳实践的来源,尽管需要进行调整,因为一方面的稳健性和成本效率、价值实现时间以及(重要的)另一方面的团队挫败感之间的权衡可能在其他业务中有所不同。

这篇关于【MLOps】第 9 章 : MLOps 实践:消费者信用风险管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/256224

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI