在机器学习算法中,树模型在风控、营销等实际业务场景应用中始终备受青睐。其中对于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代码与样本数据,供大家参考学习,详情请移至只是星球查看相关内容。

更多详细内容,有兴趣的童鞋可关注:

~原创文章

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

  1. 运用自回归滑动平均模型、灰色预测模型、BP神经网络三种模型分别预测全球平均气温,并进行预测精度对比(附代码、数据)

    大家好,我是带我去滑雪,每天教你一个小技巧!全球变暖是近十年来,人们关注度最高的话题.2022年夏天,蔓延全球40℃以上的极端天气不断刷新人们对于高温的认知,人们再也不会像从前那样认为全球变暖离我们遥 ...

  2. 信贷风控的三种模型策略体系

    互联网金融浩浩荡荡不过十载,时间上看虽然不长,但从影响上规模上不可不谓之巨变.这一点从名字上就可以看出来,广为人知的是互联网金融,而不是曾经许多专家学家们激烈争论的金融互联网.传统金融互联网化实在不足 ...

  3. Python银行风控模型的建立 SVM 决策树 神经网络 三种模型比较

    一.首先要感谢原作者的无私分享 原文网页链接: Python银行风控模型的建立_DG息的博客-CSDN博客_银行风控模型 首先感谢"Python银行风控模型的建立"()这位老师,他 ...

  4. 三种近距离通信技术特点及其应用场景的分析与预测

    一.WIFI 概念:创建于IEEE 802.11标准的无线局域网技术.WiFi(Wireless Fidelity,无线保真技术)即IEEE 802.11协议,是一种短程无线传输技术,能够在数百英尺范 ...

  5. 【Netty】IO 模型简介 ( Netty 特点 | Netty 应用场景 | Java 三种 IO 模型 | BIO 模型 )

    文章目录 I . Netty 简介 II . Netty 应用场景 III . Java I/O 模型 IV . BIO 概念 V . BIO 开发流程 VI . BIO 实例 VII . BIO 模 ...

  6. table表头固定4种方法_在常见的3种工资条场景中,教你4种批量打印工资条的方法...

    私信回复关键词[福利]~ 获取丰富办公资源,助你高效办公早下班! 打印工资条估计是财务老师的痛,要把一行行的数据,变成一条条的工资条. 数据很多,表头很复杂. 一个个复制粘贴?那是不可能的! 那怎么办 ...

  7. Java根据路径获取文件内容的三种场景分析

    给出一个资源路径,然后获取资源文件的信息,可以说是非常常见的一种需求场景了,当然划分一下,本文针对最常见的三种状况进行分析 网络地址 本地绝对路径 本地相对路径 I. 实现 1. 思路 http or ...

  8. 电路交换、报文交换、分组交换三种数据交换方式的特点、优点、应用场景以及技术对比分析

    1.电路交换 电路交换是指在呼叫双方在开始通话之前,首先由交换设备在两者之间建立一条专用电路,并且在整个通话期间独占该条电路直到结束.其通信过程一般分为:电路建立阶段.通信阶段.电路拆除阶段三部分.常 ...

  9. ML之FE:金融风控—基于预处理(PSI+标签编码+文本型抽数字+缺失值RF模型拟合填充)+多种筛选指标(PCA/IV值/Gini/熵/丰富度)利用CatBoost实现贷款违约二分类预测案例之详细攻略

    ML之FE:金融风控-基于预处理(PSI+标签编码+文本型抽数字+缺失值RF模型拟合填充)+多种筛选指标(PCA/IV值/Gini/熵/丰富度)利用CatBoost实现贷款违约二分类预测案例之详细攻略 ...

最新文章

  1. 练习10-1 使用递归函数计算1到n之和 (10 分)
  2. Kafka消费者重置offset读取数据
  3. PIE SDK影像快速拼接
  4. 简单排序:直接插入排序
  5. 洛谷 P1955 [NOI2015]程序自动分析(沙雕题)
  6. 【转】家庭装修预算计算公式大全
  7. mybatis postgresql insert后返回自增id
  8. Docker-Oracle和物理机Oracle数据库性能测试
  9. Delphi下DLL调用以及共享数据库连接
  10. Vue在组件上使用v-model
  11. SqlServer中将某字符串按照特定的字符分隔并返回临时表
  12. 补:关于man关于SEE ALSO(参见)中代号与vim下常用命令
  13. 夏商周秦西东汉 三国两晋南北朝 隋唐五代和十国 辽宋夏金元明清
  14. 文件管理服务器win7,Win7如何取得文件管理所有权
  15. emui11是鸿蒙系统吗,搭载鸿蒙内核的EMUI11.1机型曝光了,快看有你用的吗
  16. 转: RGB565、RGB888互相转换原理和代码
  17. 商务智能与数据挖掘 - 认识数据
  18. 视频人体动作捕捉技术
  19. TEMPORARY表空间和文件(转)
  20. 基于javaweb的医院分诊挂号住院管理系统(java+springboot+freemarker+mysql)

热门文章

  1. 由于找不到C:\InetPub\ftproot\Tipray\Ldterm\ghijt32.DLL,无法继续执行代码。重新安装程序可能会解决此问题。
  2. 一名自由程序员:我所整理和收集的前端面试题(五)
  3. 迅雷11下载报错:下载引擎未启动
  4. Java设计模式 - 依赖倒转原则
  5. Pytorch 多线程 运行卡死
  6. linux下shell脚本启动其他可执行程序
  7. 最近自己安装CDH5.X版本时发现,CM包和parcels包无法下载了。
  8. 西门子1500和300哪个贵_西门子s71500与s7300的区别
  9. 手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)
  10. [转载]如何用JDO开发数据库应用(3)