风控违约场景如何预测,来看看这份常见的三种模型实现算法对比

news/2024/7/2 23:55:03

在机器学习算法中,树模型在风控、营销等实际业务场景应用中始终备受青睐。其中对于GBDT集成学习树模型,我们是非常熟悉的,而且在此基础上发展而来的XGBoost、LightGBM更是我们日常建模场景中经常接触到的,可以称为是Boosting算法体系的两大“明星”算法。实际上,在GBDT算法衍生而来的主流树模型“神器”,并未只有XGBoost、LightGBM,还有一个算法也是名副其实的模型“宠儿”,那就是CatBoost。
CatBoost树模型的最大独特之处是可以直接对字符型类别特征进行数据处理,这是XGBoost、LightGBM等很多算法无法实现的。其实,从CatBoost的名称也能看出算法的显著特点,CatBoost的Cat便是Category(类别)的缩写,直观表现出了CatBoost对类别特征处理的特殊能力。而且,除此优点之外,CatBoost与XGBoost、LightGBM相比,在模型训练速度、模型结果精度、任务内存消耗等方面,也并没有都处于劣势,虽然各算法相互之间虽各有自身特点,但CatBoost模型的整体实现效果也是表现比较好的,甚至在某些方面优于其他两种算法。
为了让大家进一步了解并熟悉CatBoost的特点,我们将CatBoost、XGBoost、LightGBM这三个典型Boosting算法汇总,从多个维度来综合分析对比下各算法的性能,具体如下所示:
(1)类别特征处理:XGBoost不支持类别型特征,需要经过OneHot编码处理;LightGBM可以支持类别特征,但需要通过特定参数指定;CatBoost可以直接支持字符串类型的类别特征,无需任何数据预处理或超参数定义。
(2)模型训练速度:LightGBM很明显快于XGBoost,而CatBoost比XGBoost稍快,但也慢于LightGBM。
(3)模型结果精度:XGBoost和LightGBM表现相当,CatBoost效果相对较好,而且很多情形下无需过多参数调整便可获得较好结果。
(4)任务资源消耗:LightGBM远小于XGBoost,CatBoost也小于XGBoost,但大于LightGBM。
(5)模型预测速度:XGBoost和LightGBM表现相当,而CatBoost明显快于XGBoost和LightGBM。
(6)特征缺失处理:XGBoost与LightGBM均可以自动处理特征缺失值,但CatBoost不能自动处理缺失值,需要提前对其完成数据清洗。
(7)图表可视化:CatBoost自带某种可视化工具,可以实时展示相关指标的变化情况。

通过以上介绍,我们大体熟悉了CatBoost树模型算法的整体性能特点,为了体现CatBoost的实现效果,接下来我们围绕信贷风控的贷前场景,根据实例样本数据,采用CatBoost来构建一个信贷违约预测模型。
1、样本数据探索分析
本实例选取的样本数据包含10000条样本与12个特征,部分样本数据样例如图1所示。其中,ID为样本主键;X01~X10为特征变量池,分别表示用户各维度的数据信息,例如银行卡交易、APP设备使用、多头借贷、交通出行等;Target为目标变量,代表样本用户的贷后表现,取值1/0表示是/否违约,各字段对应的特征字典具体如图2所示。
在这里插入图片描述
图1 样本数据样例

在这里插入图片描述

                                 图2 特征字典详情

从数据样例与特征字典可知,建模样本的特征变量中存在字符类别型变量,例如特征X02、X03等。若采用XGBoost等算法来建立模型,必然需要对其进行数据转换才能满足模型的输入条件,最常见的特征编码方式例如OneHot编码、Label编码等。但是,当类别特征的取值情况较多时,OneHot编码会使特征的维度过多,直接影响资源内存消耗与模型训练效率;当类别特征的有序性能并不能很好反映权重关系时,Label编码会较大程度忽略原有特征的真实分布信息。对于以上常见情形,CatBoost算法则无需考虑,原因是算法自身可以直接对类别型特征进行分析处理,不需要类似特征编码的数据预处理环节。

2、模型训练及其评估
针对以上建模样本数据,采用CatBoost算法来建立模型,与XGBoost、LightGBM等其他树模型类似,CatBoost也可以根据不同类型的树来解决分类与回归问题,对应树分别为CatBoostClassifier与CatBoostRegressor。由于本文案例的违约预测场景属于二分类情况,因此需采用CatBoostClassifier树算法来训练拟合模型。为了验证模型效果,我们采用随机抽样方式按照7:3比例,将建模数据拆分训练集与测试集,从而通过训练样本来拟合模型,然后对测试样本进行预测,具体实现过程如图3所示。
在这里插入图片描述
图3 模型训练与预测

对于CatBoost模型的训练过程,输入参数的定义是非常重要的,这里对其部分重要参数进行简单介绍。(1)iterations:树的最大数量,默认1000;(2)learning_rate:学习率,默认0.3;(3)depth:树的深度,取值范围[1,16],默认6;(4)loss_function:损失函数,支持RMSE、Logloss、MAE、Multiclass等,默认RMSE。此外,在模型拟合函数fit()中,cat_features=[]为待处理的类别型特征列表,具体为列的索引或名称,cat_features=[1,2,5,7]代表特征X02、X03、X06、X08。
当模型拟合训练完成后,通过predict()对测试样本test_X进行预测,得到相应标签,label取值为1和0,代表样本用户的预测结果是否违约;同时,采用predict_probs()得到用户的违约概率,取值越大说明违约的可能性越大,当概率值大于0.5则标签label为1,当然对于判断阈值是可以根据实际场景进行调整的。获取了测试样本数据的真实标签train_Y、预测标签pred_Y之后,便可以对模型的综合效果进行评估,这里采用常见分类模型指标KS、AUC、Accuracy来评价,具体过程如图4所示。
在这里插入图片描述
图4 模型评估

为了进一步了解特征变量对模型的贡献大小,可以采用get_feature_importance来实现特征的重要性分析,下面将各个特征变量的重要性系数输出,并通过可视化图表形式来展示具体分布,实现过程如图5所示。
在这里插入图片描述
图5 特征重要性系数

综合以上内容,我们结合当前比较流行的树模型机器学习算法,描述了CatBoost算法的性能特点,同时与XGBoost、LightGBM进行了对比分析,有助于大家在建模实践中可以有效应用。同时,本文围绕具体业务场景与样本数据,介绍了通过CatBoost树模型算法来构建信贷违约预测模型的过程,包括样本探索、模型训练、模型评估、特征分析等建模流程的重要环节。为了便于大家对CatBoost应用的进一步熟悉与了解,本文额外附带了与以上内容同步的python代码与样本数据,供大家参考学习,详情请移至只是星球查看相关内容。
在这里插入图片描述

更多详细内容,有兴趣的童鞋可关注:
在这里插入图片描述

~原创文章


http://lihuaxi.xjx100.cn/news/3644.html

相关文章

Java毕设项目——智能仓储系统(java+SSM+Maven+Mysql+Jsp)

文末获取源码 开发语言:Java 框架:SSM 技术:Jsp JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&#xff1a…

计算机毕业设计Java演出票在线预定网站系统(源码+系统+mysql数据库+Lw文档)

计算机毕业设计Java演出票在线预定网站系统(源码系统mysql数据库Lw文档) 计算机毕业设计Java演出票在线预定网站系统(源码系统mysql数据库Lw文档)本源码技术栈: 项目架构:B/S架构 开发语言:Ja…

经验分享:产品经理面试的5大技巧

​感谢Andy 老师给这个机会给大家分享一下我的一些面试心得,做了一个简单的总结给大家说一下。 今天的分享内容一共有6方面: 1、个人职业的总结 2、面试前学习的内容 3、我们如何去寻找面试机会 4、我们该如何准备面试 5、面试过程中遇到的常见问题…

postgresSQL多种字符串分割及查询汇总

目录 表及数据准备 SPLIT_PART函数应用及说明 string_to_array函数应用及说明 基于指定规则查询该列所有 按需分割后产生的字符串单独判断 按需分割后产生的字符串及其它列混合查询 以按需分割查询为条件查询其它列 array_length函数应用及说明 表及数据准备 测试表 …

艾美捷Abnova MYOC (人)抗体对说明书

MYOC 编码蛋白质肌纤蛋白,据信它在细胞骨架功能中起作用。MYOC 在包括小梁网在内的许多眼组织中表达,并被揭示为小梁网糖皮质激素诱导反应蛋白 (TIGR)。小梁网是调节眼压所必需的特殊眼组织,MYOC 的突变已被确定为遗传性青少年型开角型青光眼…

使用Softing为西门子工业边缘开发的edgePlug软件简化了设备与应用程序的连接

一 为西门子工业边缘应用轻松提供控制器数据 作为西门子工业边缘市场的一部分,Softing edgePlug软件产品通过西门子工业边缘(一个由边缘设备、应用程序和设备管理组成的开放、即用型边缘计算平台)将西门子PLC连接到应用程序。 这意味着&…

c语言基础学习笔记(三):while循环

文章目录while循环四位数以下判断数的位数程序示例while循环数位数的算法do-while循环do-while循环实现数位数计算 log2log_2log2​X 的程序示例倒计时循环程序示例猜数游戏程序示例while循环 四位数以下判断数的位数程序示例 人可以一眼看出这是几位数,但计算机不…

Linux-shell常用运维指令

一.常用命令简介: 1.常看程序运行进程 ps -ef |grep javaps命令将某个进程显示出来 grep命令是查找 中间的**|**是管道命令 是指ps命令与grep同时执行 ps是LINUX下最常用的也是非常强大的进程查看命令 grep命令是查找,是一种强大的文本搜索工具 字…