风控串行组合模型及其信用评估场景实践

news2024/11/18 23:28:30

在信贷风控中,数据建模好像是“家常便饭”那么普通且重要,而我们最终享用“饭菜”的美味程度,在数据“食材”较完备的情况下,完全取决于我们建模的方法。根据实际业务场景,采用合理且有效的建模思路,可以较大限度保证模型的应用效果。
通常情况下,针对不同的场景需求,我们习惯采用单一算法来建立模型,例如逻辑回归、决策树、K近邻、朴素贝叶斯、支持向量机等,但我们有时会遇到模型性能难以满足预期的结果,无论选择何种模型算法,还是调整模型拟合参数,都不足以进一步提升模型的综合效果。在这种情景下,我们可以尝试下模型组合思路,即采用多个模型算法来建立模型,并将其通过某种方式进行合并,便可以得到一个综合模型,此类模型可以有效提升模型的准确度与区分度等性能,从而在实际场景应用中发挥更好的效果。
模型组合主要包含3种模式,分别为串行组合、并行组合、串并混合,其中串并混合只是将串行与并行的思路结合,在模型决策流程中相对较为复杂,因此实际场景应用较少。对于串行组合与并行组合,在建模过程中相对较为常见,且最终得到的综合模型效果表现较好。本文将对其中的串行组合模型及其应用进行介绍,同时围绕具体的信用评估场景来展开详细分析。对于并行组合模型的应用描述,我们后续以另外一篇文章进行呈现。

1、串行组合模型原理
串行组合模型是将多个模型进行串联叠加,将前一个模型的输出作为后一个模型的输入,在单个模型精度不高的情况下,可以实现多个模型的性能聚合,从而有效提升最终模型的精度。一般情况下,串行组合模型的链条,往往将精度较高的模型置于前边,例如随机森林、神经网络、深度学习等,而类似逻辑回归、K近邻、决策树等算法模型放于后边,这样设置思路可以较大程度优化模型训练的拟合空间。此外,这里需要注意的是,并非多个模型的串行组合性能必定优于单个模型,也不是串行的模型数量越多其效果越好,具体需要结合建模数据分布、场景业务需求、模型提升幅度等情况来决定。
串行组合模型的示意流程如图1所示,现有3个算法模型依次串联,模型1的输入仅为原始样本数据;模型2的输入除了原始样本数据外,还包括模型1的输出结果;模型3的输入同理还包括模型2的输出结果。串行组合最终输出的模型结果为最后位置对应的模型,以本示意图为例,模型3输出为综合模型的决策结果。不同业务场景的模型输出是有区别的,例如常见的二分类模型,则模型1/2/3的输出output体现为模型预测的概率值(0~1)。
在这里插入图片描述
图1 串行组合模型流程

对于串行组合的模型1~模型n,可以采取同种类型的算法,也可以是不同种类的算法。若为同种类型算法,区别主要在于模型的训练参数组合不同,例如各模型均选择GBDT算法,则树的数量、树的深度、学习率等重要参数的取值可以交叉定义;若为不同种类的算法,例如逻辑回归、XGBoost、LightGBM等,此时模型训练参数组合可根据经验自由定义。针对组合模型的特点,由于模型类型与算法参数可选,因此串行模型组合可以分为同类模型串行与异类模型串行。一般情况下,异类模型串行组合在实际业务场景中较为常用,因此接下来我们将围绕异类模型串行组合,来展开实例场景的建模分析。

2、串行模型实现过程
2.1 实例样本描述
结合以上对串行组合模型的理解,接下来我们围绕贷前风控典型的信用评估场景,采用模型串行组合方法来构建信用风险模型,以更具体的描述串行组合模型的应用效果。本文选取的实例样本数据包含10000条样本与9个字段,部分数据样例如图2所示。其中,id为样本主键,credit_apply、call_total、travel_index等7个特征为X变量池,label为目标变量Y,具体特征字典详情如图3所示。
在这里插入图片描述
图2 样本数据样例

在这里插入图片描述
图3 样本特征字典

根据以上样本数据,现构建一个贷前信用风险评估模型,即通过credit_apply、call_total、travel_index等7个特征变量对目标变量label进行拟合训练。其中,特征变量池的简单描述性统计分布eda结果如图4所示,目标变量label的二分类取值分布如图5所示。
在这里插入图片描述
图4 特征变量eda分布

在这里插入图片描述
图5 目标label取值分布

2.2 特征性能分析
对于以上样本数据,我们从特征相关性、特征预测性这2个维度来简单分析下各字段的性能。其中,特征相关性采用perarson系数来量化分析,以了解各字段之间的相关性能,从而避免模型拟合出现过度的共线性现象,在python语言环境中仅需要通过语句data.drop(columns=[‘id’,‘label’]).corr(method=‘pearson’)实现,具体系数分布结果如图6所示。
在这里插入图片描述
图6 特征相关性系数

由以上特征相关性系数结果可知,各变量之间的相关系数均表现较小,最大值也不超过0.5,因此特征变量之间的相关性较弱,有利于模型的训练拟合。接下来看特征的预测性,这里采用常见的信息值IV来评估,具体采用无监督的等距方式来完成,实现过程详见知识星球代码详情,输出结果如图8所示。
在这里插入图片描述
图8 特征IV值分布

通过特征IV值的分布结果可知,各字段的信息值均大于0.02,对目标的预测能力整体表现尚可,因此可用于模型拟合的变量范围。

2.3 单一模型效果
为了更客观的介绍串行组合模型的效果,我们选用4个常见的机器学习分类算法来建立信用风险评估模型,分别为逻辑回归LR、XGBoost、LightGBM、随机森林RF。在实现模型串行组合之前,我们有必要采用各个分类算法来依次构建模型,并对各模型的区分效果进行评估,这样为后续串行组合模型的性能对比作参照对象。
针对逻辑回归、XGBoost、LightGBM、随机森林,模型训练与模型评估的具体实现过程详见知识星球代码详情。为了保持模型参数相对统一,除了大部分参数取默认值外,对于本例决策树类的算法模型(XGBoost、LightGBM、随机森林),重要参数树的数量n_estimators=20、树的深度max_depth=5、学习率learning_rate=0.1均定义为相同值。
通过以上各单一模型的训练拟合与性能评估过程,得到各模型的量化指标表现,这里选取Accuracy、AUC、KS指标来进行对比分析,具体分布结果如图13所示。
在这里插入图片描述
图13 子模型性能对比

2.4 串行模型实现
为了验证串行那个组合模型的性能优势,下面我们按照逻辑回归、XGBoost、LightGBM、随机森林的顺序来串联模型。对于各阶段的模型训练环节,由于逻辑回归模型排在首位,训练数据仅为原始样本数据,而后续各模型的输入数据除了原始数据外,还包括上一个模型输出的预测结果数据,具体体现为对目标变量正例值1的预测概率。
本实例异类串行组合模型的示意流程如图14所示,各模型的训练参数与前边单一模型均保持相同。按照LR、LR+XGB、LR+XGB+LGBM、LR+XGB+LGBM+RF的模型叠加串联,具体实现过程详见知识星球代码详情。
在这里插入图片描述
图14 串行组合模型实例

按照以上异类模型串行组合的实现过程,对于LR、LR+XGB、LR+XGB+LGBM、LR+XGB+LGBM+RF这4个模型训练环节,相应的模型性能指标结果如图18所示。由图可直观的了解到,随着串行子模型的叠加融合,综合模型的KS、AUC、Accuracy指标效果逐渐提升,有效证明了串行组合思想对模型效果提升的作用。同时,最终组合模型LR+XGB+LGBM+RF的性能指标,要优于各个单一模型的效果(图13),进一步说明了串行组合模型的有效性。
在这里插入图片描述
图18串行模型性能分布

3、串行模型性能调优
以上串行组合模型的实现,我们是按照LR+XGB+LGBM+RF的顺序来递进完成的,虽然综合效果与单一模型相比有较明显的提升,但仍有一定程度的提升空间。在上文对串行组合模型原理的介绍中,我们提到通常情况下类似随机森林等精度较高的模型优先排在前边位置,而逻辑回归等传统模型可考虑放在后边。为了验证串行子模型顺序对综合模型效果的影响,我们将逻辑回归LR调整至末位,而将XGBoost模型置于首位,调整顺序后的串行组合为XGB+LGBM+RF+LR,接下来按照这个流程来建立模型,具体实现过程与前边串联组合LR+XGB+LGBM+RF同理,相关代码详见本文附件材料。这里来看下经调优后模型训练过程各环节的模型性能情况,具体指标结果如图19所示。
在这里插入图片描述
图19 串行模型调优性能

由以上结果可以看出,当逻辑回归LR模型调整至最后位置后形成串行组合XGB+LGBM+RF+LR,模型的最终性能评价指标KS与AUC,与前文调优前的串行组合LR+XGB+LGBM+RF结果(图18)相比均有所提高,其中KS从0.4165提升至0.4358,AUC从0.7082提升至0.7179,Accuracy则基本保持稳定(0.8521与0.8517),整体提升效果是显而易见的。因此,在串行组合模型的类型与数量保持一定情况下,模型的顺序也会影响最终综合模型的效果,合理的配置模型位置,有利于模型性能的优化。
综合以上内容,我们首先介绍了串行组合模型的原理思想与划分类型,然后以常用的异类串行组合模型为例,围绕贷前信用风险评估的二分类场景,以及具体的实例样本数据,建立了串行组合模型,对比分析了串行组合模型相对单一子模型的效果提升。此外,通过串行组合的模型顺序调整,验证了不同模型串行位置对最终模型性能的影响。因此,串行组合模型对于实际场景的数据建模有很好的参考意义与应用价值。
为了便于大家对串行组合模型有进一步理解与熟悉,本文额外附带了与以上内容同步且更为详细的Python代码与样本数据,供大家参考学习,详情请移至知识星球查看相关内容。
在这里插入图片描述
逻辑回归模型训练与评估
在这里插入图片描述
随机森林模型训练与评估

在这里插入图片描述
LR+XGB+LGBM+RF模型串联

在这里插入图片描述

~原创文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

诊断和响应故障_RMAN数据修复概念

1.RMAN数据修复概述 1.1.关于需要数据修复的问题 虽然有几种问题会中止Oracle数据库的正常操作或影响数据库I/O操作,只有以下几种情况要求DBA介入和数据修复:用户错误,应用程序错误和介质故障。 1.1.1.关…

[附源码]计算机毕业设计JAVA中达小区物业管理系统

[附源码]计算机毕业设计JAVA中达小区物业管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

【LeetCode】1775. 通过最少操作次数使数组的和相等

题目描述 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间(包含 1 和 6)。 每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6&…

LaTeX行距以及字体大小

LaTeX行距以及字体大小1、行距2、字体大小1、全局模式2、局部模式1、行距 一:改变全文行距 导言部分前加入\linespread{2.0}即可,代表全文两倍行距。 二:部分段落需要改变行距 \usepackage{setspace} \begin{spacing}{2.0}(内…

js_实现网页自动跳转

网页自动跳转实现网页定时自动跳转实现网页定时自动跳转 效果&#xff1a; 10秒后自动跳转到网易云音乐的页面 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box{wi…

什么是 NFT 洗盘交易:洗盘交易背后的原理

2022年12月 CoinGecko 与 Footprint Analytics 联合报告 Data Source&#xff1a;Footprint Analytics 市场上有一种说法是&#xff0c;整个NFT 市场的交易本质是欺诈性的&#xff0c;并且是由洗盘交易者操纵出来的假象。我们经常看到许多 媒体头条 在推动这种说法。毕竟&…

HTML学生个人网站作业设计:宠物网站设计——萌宠有家(5页) HTML+CSS 简单DIV布局宠物介绍网页模板代码 DW学生个人网站制作成品下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

动态规划:01背包问题例题(leetcode+cpp实现)

文章目录分割等和子集最后一块石头的重量前情回顾&#xff1a; 动态规划(4)&#xff1a;01背包问题详解 分割等和子集 力扣传送门&#xff1a; https://leetcode.cn/problems/partition-equal-subset-sum/ 题目描述&#xff1a; 给你一个整数数组&#xff0c;将这个数组里的…

论文速读Backbone系列一:点云Transformer结合、PointNet++改进、点云卷积核设计

如有错误&#xff0c;恳请指出。 对一些经典论文进行快速思路整理&#xff0c;以下内容主要关注的是3d点云的backbone设计&#xff0c;包括transformer的应用&#xff0c;卷积核的设计&#xff0c;PointNet网络的改进。 文章目录一、Transformer改进1. 《PCT: Point Cloud Tran…

Wireshark高级特征

1&#xff0c;端点和网络会话 想要让网络通信正常进行&#xff0c;你必须至少拥有两台设备进行数据流的交互。端点&#xff08;endpoint&#xff09;就是指网络上能够发送或接收数据的一台设备。两个端点之间的通信被称之为会话&#xff08;conversation&#xff09;。Wiresha…

Python中如何选择Web开发框架?

Python开发中Web框架可谓是百花齐放,各式各样的web框架层出不穷,那么对于需要进行Python开发的我们来说,如何选择web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web框架,我们可以根据各个Web框架的特性进行选择应用。 Django Django是市面上…

利用Astar算法实现飞行轨迹的三维路径规划(基于Matlab代码实现)

目录 1 概述 1.1研究背景 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 随着自动化技术的发展,现代航空技术水平有了前所未有的提高,促进了无人机在军事、民用领域的广泛应用。航迹规划技术作为无人机任务规划的关键技术,一直都是无人机领域的一大研究热点。无人机航迹规划是…

Synopsys Sentaurus TCAD系列教程之-- Svisual《一》看图工具

Svisual Svisual作为独立的模块&#xff0c;可以实现Inspect对于节点.plt曲线的查看&#xff0c;也可以实现TecplotSV的.tdr看图功能&#xff0c;还可以进行自动化操作。 当作看图工具使用 - 当作一维曲线看图工具&#xff08;.plt,Inspect) 1.1 打开&#xff1a;Sdevice模块…

[附源码]Python计算机毕业设计SSM基于自组网的空地一体化信息系统(程序+LW)

[附源码]Python计算机毕业设计SSM基于自组网的空地一体化信息系统&#xff08;程序LW) 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

F12抓包简单案例

F12抓包原理&#xff1a;在电脑访问互联网之前&#xff0c;进行包录制 1.谷歌开发者工具&#xff08;F12&#xff09; 元素&#xff08;Elements&#xff09;&#xff1a;页面元素查看分析&#xff0c;web自动化 控制台&#xff08;Console&#xff09;:查看日志 来源&#xf…

c语言---指针进阶(2)--玩转指针

今天内容不多&#xff0c;但都是精华。 1.数组参数和指针参数 2.函数指针 2.1笔试题 3.函数指针数组 1.数组参数和指针参数 例1&#xff1a;一维数组传参 void test(int arr[]) {} void test(int arr[10]) {} void test(int *arr) {}void test2(int *arr2[20]) {} void …

kotlin之声明变量的方式

让我们来看一下java声明变量的方式 Java声明变量方式 类型 变量名 等于 初始化值 String str "999999999"; kotlin声明变量方式 <关键字> <变量名称> : <类型> <初始化值> var sr : String "s…

[附源码]Python计算机毕业设计SSM计算机软考系统的设计与实现(程序+LW)

[附源码]Python计算机毕业设计SSM计算机软考系统的设计与实现&#xff08;程序LW) 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

nginx安装及使用(详细版)

一、负载均衡介绍 负载均衡分为硬件负载均衡和软件负载均衡。 硬件负载均衡解决方案是最直接服务器和外部网络间安装负载均衡设备&#xff0c;这种设备我们通常称之为负载均衡器产品有F5、NetScaler等。 软件负载均衡解决方案是指一台或多台服务器响应的操作系统上安装一个或多…

【旋转目标检测】旋转标注工具roLabelImg使用教程

旋转目标检测系列文章:第一篇,学会使用roLabelImg标注工具 本次实验在Windows 10系统下进行, python版本3.6.10(2年前安装的python版本,有点老了) 下载标注工具项目代码: https://github.com/cgvict/roLabelImg 下载代码压缩包到桌面: 解压: 打开Anaconda Prompt终…