量化风控算法详解之CatBoost

CatBoost是俄罗斯的搜索巨头Yandex在2017年开源的机器学习库,与XGBoost、LightGBM并称为GBDT三大主流神器库。LightGBM和XGBoost已经在各领域得到了广泛的应用,而Yandex的CatBoost作为后起之秀则是号称比XGBoost和LightGBM在算法准确率等方面表现更为优秀的算法。

CatBoost的名称来源于”Category”和”Boosting”两个词。”Boosting”表明CatBoost和XGBoost、LightGBM一样,都是在梯度提升决策树(Gradient Boosting Decision Tree,GBDT)算法框架下的一种改进实现;而”Category”则体现了CatBoost最显著的一个特点,即它可以很好的处理类别型特征(Categorical Features)数据。在我们风控领域的建模中,类别型特征是十分常见的,比如用户的性别、职业、教育程度等等。

相较于XGBoost和LightGBM,CatBoost可以使我们在模型训练之前不再需要通过特征工程去处理分类型特征;同时CatBoost使用对称树作为基模型,并提出了新的方法来处理梯度偏差和预测偏移问题,减少了模型过拟合的可能,提升了模型预测的效果。可以预见,在风控建模中引入CatBoost算法会有着非常优异的表现。

下面我们针对CatBoost算法的主要特点逐一展开介绍:

一、类别型特征

1.Ordered TS编码

像XGBoost这样的算法是不接受类别型特征的输入的,因此在模型训练之前就需要对类别型特征进行特征工程处理。而特征工程中又有许多处理方法,比如分箱处理、one-hot编码、TS(target statistics)编码、label编码等。具体的方式选择取决于我们的主观经验以及调试结果。

CatBoost则设计了一直类似均值编码的,基于预测目标统计值的方法将类别特征转化为数值特征,这种方法称之为Ordered Target Statistics数值编码方法,可以有效解决梯度偏差和预测偏移的问题,降低模型过拟合的可能。它的流程如下:

对数据集多次随机排序,产生多组随机排列的情况。
将浮点型或属性值标记转化为整数。
对于每个样本的该类别特征中的某个取值,基于该样本之前的类别编码值取均值,同时加入先验的权重系数,转换为数值型结果。

由于CatBoost算法对样本进行了多次随机排序,在不同轮次的迭代中,会得到不同排序状态的样本集,综合起来使得模型方差更小,这种随机性可以减少过拟合。

2.特征交叉

特征交叉是指将样本集中的类别型特征进行组合,形成新的类别型特征。这是特征工程中的一种方式,可以丰富特征的维度。当然这些新的特征不一定都是有用的,需要结合实际业务场景和意义进一步筛选。

CatBoost在将类别特征转换为数值编码的同时,会自动产生交叉特征。但当样本集中的类别型特征较多的时候,如果让所有类别特征都两两,甚至三三及以上相互组合,产生的新特征又太多了。

CatBoost使用一种贪心的策略来进行特征交叉。在生成树选择第一个节点时,不使用交叉特征,而只考虑选择一个特征,如A;在生成第二个节点时,考虑A和任意一个类别型特征的组合,选择其中最优的,就这样使用贪心算法生成新的特征。

3.克服梯度偏差和预测偏移

在使用XGBoost和LightGBM的时候,经常会发生模型在训练集拟合的特别好,但是在测试集上却差强人意,这很有可能是由于模型太复杂了,造成了过拟合。

构建一棵树有两个阶段:一是选择树结构,二是计算叶节点的值。我们知道梯度提升算法都是通过构建新树来拟合当前模型的梯度。在训练下一棵树的时候,需要计算前面树构成的加法模型在所有样本上的一阶梯度和二阶梯度,然后用这些梯度来决定下一棵树的结构和叶子节点取值。但这是有偏的,前面的树是在这些样本上训练的,现在我们又在相同的样本上估计模型预测结果的梯度,应该换新的样本才合理。

而CatBoost和之前说的一样,先将样本随机打乱,每个样本只用排序在他前面的样本来训练模型,来估计预测结果的梯度,然后构建下一棵树的结构,最终树的每个叶子节点的取值则是用全体样本进行计算。这种方法可以有效减少梯度偏差,缓解预测偏移,缺点是增加了计算量,影响训练速度。

二、完全对称二叉树

XGBoost一层层建立节点(level-wise),LightGBM一个个地建立节点(leaf-wise),而CatBoost则采用完全对称二叉树作为基树模型,这种树的特点是每一层使用相同的分割特征。叶子节点可以被转化为二进制编码,结点的值被存储在一个长度为2的d次方(d为树的深度)的浮点向量中。这种树的一个优点是预测性能更好、速度更快,同时这种结构也能一定程度弱化决策树容易过拟合的缺点。

非对称树:
在这里插入图片描述

对称树:

图片

三、优缺点

在实际的应用中,相比于XGBoost和LightGBM而言,CatBoost在类别型特征较多的时候更能发挥自身的优势,总结而言主要有以下几大优点:

性能优异:

足以匹敌任何先进的机器学习算法,在某些情况下能比XGBoost和LightGBM有更高的精准性和泛用性;

稳健性:

它减少了对很多超参数调优的需求,并降低了过度拟合的机会,这也使得模型变得更加具有通用性;

实用:

可以处理类别型、数值型特征,支持自定义损失函数;

易用:

提供scikit集成的Python接口,支持自动调参。

当然,CatBoost也有一些缺点:

对于类别型特征的处理需要大量的内存和时间;
不同随机数的设定对于模型预测结果有一定的影响。

四、总结

在信贷风控场景中,LightGBM和XGBoost已经得到了充分的应用,而CatBoost算法的使用还相对较少。这是因为这个算法比较新,国内对它的研究也比较少。当实际业务中的数据包含较多的类别型特征的时候,我们不妨可以试试这个简单而又强力的后起之秀,说不定能得到意外的效果。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP32(掌控板) 陀螺仪显示与RGB灯

ESP32(掌控板) 陀螺仪显示与RGB灯 本程序图形化显示陀螺仪位置(注意要换算),根据陀螺仪位置控制RGB灯颜色并有3种颜色组合和关灯可选,通过触摸按键调节亮度。 图形化程序如下 Arduino代码如下 /*!* MindP…

【记录】SMB|Windows下修改SMB端口并挂载

环境:Window11 使用背景:勒索病毒导致445端口不安全,故而该端口在服务器端被全面禁用了,如需使用SMB服务需要换个SMB服务端口。 方法1:端口转发 winx点开管理员权限的终端: 运行以下指令,检查…

数字电路设计——加法器

数字电路设计——加法器 半加器 半加器只有两个一位宽的输入 a a a 和 b b b ,输出 a b ab ab 所产生的本位和 s u m sum sum 和进位 c o u t cout cout。组合逻辑为: S A ⊕ B , C o u t A B S A \oplus B,Cout AB SA⊕B,CoutAB 真值表和原…

经典神经网络(7)DenseNet及其在Fashion-MNIST数据集上的应用

经典神经网络(7)DenseNet及其在Fashion-MNIST数据集上的应用 1 DenseNet的简述 DenseNet不是通过更深或者更宽的结构,而是通过特征重用来提升网络的学习能力。 ResNet 的思想是:创建从“靠近输入的层” 到 “靠近输出的层” 的直连。而DenseNet 做得更…

python环境

卸载旧环境 wini 打开应用卸载 删除python解释器和pycharm 删除配置文件夹JetBrains C:\Users\CJC\AppData\Roaming\JetBrains 安装 安装python解释器 安装pycharm 查看或设置该项目的解释器和安装包 快捷键 全局搜索 双击shift 当前文件中搜索 ctrl f 查看函数…

【Linux】基础开发工具——yum篇

目录 📖Linux下安装软件的三种方案📰源代码安装📰rpm安装📰yum安装 📖Linux软件包管理器yum📰rz、sz📰查看软件包📰软件安装📰软件删除 📖yum源问题&#x1f…

如何查看 当前安装的vue版本

目录 1 实现 1 实现 要查看当前安装的 Vue 版本,可以使用以下方法: 在终端或命令提示符中运行以下命令: vue --version如果你使用的是 Vue CLI 创建的项目,可以在项目的根目录中找到 package.json 文件。在该文件中&#xff0c…

ChatGPT爆火 但生成式AI并非全新产物

以ChatGPT、Midjourney 为代表的 AIGC 产品横空出世,在全球掀起新一轮的 AI 技术变革新浪潮。近二十年来,我们见证了从「机器学习」算法到「深度学习」,再到「基础模型」的发展。随着数据量大规模膨胀,可扩展的算力,再…

机器学习26:《数据准备和特征工程-IV》数据转换

特征工程 是确定哪些特征可能对训练模型有用,然后通过转换日志文件等数据来源中的原始数据来创建这些特征的过程。在本文中,笔者将重点讨论何时以及如何转换数字和分类数据,以及不同方法的权衡。 目录 1.数据转换的原因 1.1 数据兼容性的强…

PPT文件,使用python删除链接

文章目录 一、需求二、处理方式三、代码实现 一、需求 如下图所示,将PPT文件中的链接进行删除,且不保留链接名。 原始文件: 处理后文件: 二、处理方式 使用python 的pptx模块进行处理,读取文字块,然后…

部署LVS+Keepalived高可用集群

目录 一、keepalived概述 1.1管理LVS负载均衡软件 1.2VRRP(Virtual Router Redundancy Protocol) 原理 二、keepalived服务的重要功能 2.1自动切换(failover) 2.2健康检查(health checking) 2.3高可用(HA&#x…

决策树分析特征重要性可视化无监督特征筛选

from sklearn.tree import DecisionTreeClassifierdtc DecisionTreeClassifier() # 初始化 dtc.fit(x_train, y_train) # 训练# 获取特征权重值 weights dtc.feature_importances_ print(>>>特征权重值\n, weights)# 索引降序排列 sort_index np.argsort(weights…