当前位置: 首页 > news >正文

一篇入门之-评分卡变量分箱(卡方分箱、决策树分箱、KS分箱等)实操例子

一、评分卡分箱-有哪些分箱方法

评分卡的分箱,是指将变量进行离散化。评分卡的分箱方法一般有:等频分箱、等距分箱、卡方分箱、决策树分箱、KS分箱等等。它们都属于自动分箱方法,其中,卡方分箱是实际中最常用的分箱方法。

1.1.等频分箱

等频分箱是将样本分为k个箱,每个箱子中的数据点数量相等,它助于消除数据的偏差,使得每个区间内的数据分布更加均匀,如下所示:
等频分箱

1.2.等距分箱

在等距分箱中,数据根据数值范围被划分为若干个箱子,每个箱子的区间长度相等。这意味着每个箱子中的数据范围是相同的,如下所示:
等距分箱

1.3.卡方分箱

卡方分箱是基于卡方值进行分箱的一种方法,卡方分箱先初始化m个分箱,卡方分箱用卡方值判断哪两个分箱的类别分布最没区分度,就合并哪两个分箱。直到分箱数只剩n个。如下所示:
卡方分箱

1.4.最大KS分箱

最大KS分箱是基于KS值来进行分箱的一种方法,它先把所有样本初始化为一个分箱,然后根据KS点对分箱不断切割,直到数据分为n个分箱。 如下,KS分箱就是根据最大KS值所在处,将分箱不断一分为二,直到达到目标分箱个数:
最大KS分箱

1.5.决策树分箱

决策树分箱是指用变量x与y构建决策树,使用决策树最后的叶子节点作为分箱结果, 如下,使用x、y构建一颗CART决策树,最终的叶子节点就是分箱的结果:
决策树分箱


二、评分卡分箱-实现方法

在python中对变量分箱,可以使用bbbrisk来实现。
如果没有bbbrisk,则需要先用pip进行安装,如下:

pip install bbbrisk

安装完后,就可以调用bbbrisk的相关分箱函数进行分箱了。

2.1.连续变量的分箱方法

如果变量是连续变量,可以使用br.bins.merge.chi2、ks、tree等函数进行分箱。
代码示例如下:

import bbbrisk as br
data = br.datasets.load_bloan()                                 # 加载数据
x = data['rev']                                                 # rev变量
y = data['is_bad']                                              # 样本标签# 卡方分箱
bin_set  = br.bins.merge.chi2(x,y,bin_num=5,init_bin_num=10)    # 进行卡方分箱,bin_num是目标箱数,init_bin_num是初始箱数
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                   # 统计分箱结果
print('\n* 卡方分箱结果:\n',bin_stat)                          # 显示分箱结果# KS分箱
bin_set  = br.bins.merge.ks(x,y,bin_num=5,min_sample=None)      # 进行KS分箱,bin_num是目标箱数,min_sample是最小样本数
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                   # 统计分箱结果
print('\n* KS分箱结果:\n',bin_stat)                            # 显示分箱结果# 决策树分箱
bin_set  = br.bins.merge.tree(x,y,max_depth=3,min_sample=None)  # 进行决策树分箱,max_depth是树深度,min_sample是叶子最小样本数
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                   # 统计分箱结果
print('\n* 决策树分箱结果:\n',bin_stat)                        # 显示分箱结果

代码中的rev变量,就是我们需要进行分箱的变量,而is_bad则是样本的标签(好样本为0,坏样本为1)。代码运行后的结果如下:
连续变量的分箱结果

2.2.枚举变量的分箱方法

如果变量是枚举变量(例如城市、婚姻状态这类型的变量),可以使用br.bins.merge.chi2Enum、ksEnum、treeEnum等函数进行分箱。代码示例如下:

import bbbrisk as br
data = br.datasets.load_bloan()                                     # 加载数据
x = data['city']                                                    # city变量
y = data['is_bad']                                                  # 样本标签# 卡方分箱
bin_set  = br.bins.merge.chi2Enum(x,y,bin_num=5,init_bin_num=10)    # 进行卡方分箱,bin_num是目标箱数,init_bin_num是初始箱数
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                       # 统计分箱结果
print('\n* 卡方分箱结果:\n',bin_stat)                              # 显示分箱结果# KS分箱
bin_set  = br.bins.merge.ksEnum(x,y,bin_num=5,min_sample=None)      # 进行KS分箱,bin_num是目标箱数,min_sample是最小样本数
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                       # 统计分箱结果
print('\n* KS分箱结果:\n',bin_stat)                                # 显示分箱结果# 决策树分箱
bin_set  = br.bins.merge.treeEnum(x,y,max_depth=3,min_sample=None)  # 进行决策树分箱,max_depth是树深度,min_sample是最小样本数
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                       # 统计分箱结果
print('\n* 决策树分箱结果:\n',bin_stat)                            # 显示分箱结果

代码运行结果如下:
枚举变量分箱的结果


三、评分卡分箱结果怎么看

代码里运行的结果不够美观,一般需要将它复制到EXCEL里,添加颜色,再给各位领导看。
rev变量分箱结果
可以看到,加了颜色就好看多了,特别是最后一列的坏客户占比,使用色条标示,就显得专业多了,领导看了都觉得花个几万八千请我真是赚大发了。

3.1. 分箱结果解读-badrate

好了,分箱结果怎么看呢,一般不先看第一列,而是看最后一列bad_rate,它代表分组的坏客户占比,即坏样本个数/总个数。
先看Badrate趋势明不明显,上面的例子,Badrate看起来就很有区分度,非常好。

3.2. 分箱结果解读-IV值

看完了badrate,就到iv值了,抛开IV是什么不谈,IV的意义如下:
IV的意义
例如上面的例子, iv值1.052,一看就知道这个变量强到爆了,赶紧将它入模!

3.3. 分箱结果解读-业务逻辑

最后,还需要审查一下业务逻辑是否合理,仔细看下每个分箱(第2列)与对应的badrate是不是符合业务逻辑,如果业务逻辑不合理,那赶紧检查问题,如果业务逻辑合理,那就过关啦!


好了,以上就是评分卡如何变量分箱了。无惊无险,又到终点!收工!下班!

相关文章:

1.《评分卡-完整建模代码》
2.《一篇入门-IV值是什么》
3. 《bbbrisk-完整说明文档》

相关文章:

  • CSS预处理器
  • 如何快速轻松地恢复未保存的 Word 文档:简短指南
  • 【2025 最新前沿 MCP 教程 04】通信渠道:理解 MCP 传输机制
  • AEB法规升级后的市场预测与分析:技术迭代、政策驱动与产业变革
  • MySQL 常用语句教程
  • RAG技术解析:以Text2SQL为例看检索增强生成的全流程应用
  • C++学习笔记(四十)——STL之归约算法
  • Python Pandas实现ABC_manage_channel逻辑
  • JAVAEE初阶01
  • 【C语言】柔性数组
  • SEO新手快速上手核心步骤
  • 解释型语言和编译型语言
  • 部署yolo到k230教程
  • DataStreamAPI实践原理——计算模型
  • 类的高级特性与语法细节
  • 线程池(五):线程池使用场景问题
  • Qt软件开发-摄像头检测使用软件V1.1
  • Redis和MQ的区别
  • SMT贴片加工费控制与优化实践指南
  • 基于大模型的急性肠套叠全流程预测与诊疗方案研究报告
  • 民航局:中方航空公司一季度运输国际旅客同比大增34%
  • 理想汽车副总裁刘杰:不要被竞争牵着鼻子走,也不迷信护城河
  • 万能险新规落地:保险期限不得低于五年,明确万能险销售“负面清单”
  • 中央政治局会议举行,传递三重确定性
  • 官方披露:临汾昔日“明星官员”宿青平已于去年落马
  • 财政部、证监会:加强对会计师事务所从事证券服务业务的全流程监管