评分卡

【介绍】一篇入门之-变量分箱(等频等距)

作者 : 老饼 发表日期 : 2023-07-30 22:16:43 更新日期 : 2024-12-20 03:15:56
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



变量分箱指的是对连续变量进行分组,它可以使变量离散化,增强模型泛化能力与方便分析

本文介绍常见的变量自动分箱方法,例如等频分箱、等距分箱、决策树分箱、卡方分箱与KS分箱等等

通过本文,可以了解变量分箱是什么,常用的变量自动分箱算法有哪些,以及它们的原理与效果






    01. 什么是变量自动分箱  




本节介绍变量自动分箱是什么,以及有哪些常用的自动分箱方法





    什么是自动分箱    


在机器学习中,变量分箱是指将连续的数值变量进行分组,使它成为离散变量
 什么是变量分箱
而自动分箱,则是指通过算法或规则,将连续变量自动地分组,即自动离散化
按规则进行自动分箱是比较基本的分箱方法,常用的自动分箱规则有: 
 1. 等频分箱                         
2. 等距分箱                        

除了等频、等距分箱外,还有自动分箱的算法,常用的自动分箱算如下: 
 1. 决策树分箱                     
2. KS分箱                          
3. 卡方分箱                       

 自动分箱可以使变量自动离散化,在一些模型的“建模自动化”中成为必不可少的环节
 自动规则分箱(等频等距)一般软件中( 例如python)都会有自带的函数或包,
而算法分箱(决策树分箱、KS分箱、卡方分箱)则一般没有官方的包,需要自己写代码实现






    02. 等频等距-规则分箱     





本节介绍等频与等距两种常用的自动分箱规则,以及它们的代码实现





      等频分箱       


什么是等频分箱
 等频分箱是指按相等频数进行分箱,即分组后每组的样本一样多,如下所示:
 等距分箱
 例如共50个样本,,频数设为10
则每10个样本为一箱,分箱结果为:
  
 什么是等距分箱
 等距分箱是指按固定距离进行分箱,每组的组距一致,如下所示:
 等频分箱
即设定好组距后,根据组距,最后分出多少个箱就多少个箱
例如范围在, 组距为1,则按分为10个箱






     等频等距分箱-代码实现    


在python中可以利用pandas来实现等频、等距分箱
 具体代码如下:
import pandas as pd
from sklearn.datasets import load_iris
# 实现等频、等距分箱

iris = load_iris()                                  # 加载iris数据
x    = iris.data[:,0]                               # 取第0个变量作为分箱变量

# 实现等频分箱
freq_bins = pd.qcut(x , q=5)                        # 对x进行等频分箱
print("\n等频-分箱结果:", freq_bins.categories)    # 分箱结果
print("\n等频-样本箱号:", freq_bins.codes)         # 分箱后样本的箱号

# 实现等距分箱                                     
bins = pd.cut(x , bins=5)                           # 对x进行等距分箱
print("\n等距-分箱结果:", bins.categories)         # 分箱结果
print("\n等距-样本箱号:", bins.codes)              # 分箱后样本的箱号
代码运行结果如下:
 
等频等距分箱代码运行结果 
在python中使用pandas的qcut、cut就可以等频、等距分箱
如图所示,等频分箱后每个组内的样本是一样多的,而等距分箱后的每个箱的组距一样








    03. 自动分箱算法    





本节介绍决策树分箱、最大KS分箱、卡方分箱等自动分箱算法是什么





      决策树分箱      


决策树分箱是指用变量x与y构建决策树,使用决策树最后的叶子节点作为分箱结果
 如下,使用x、y构建决策树,叶子节点就是分箱的结果
 决策树分箱
 最后得到三个分箱:【<=5.45 】、(5.45,6.15】、【>6.15】
备注:详细算法流程与代码实现可参考《
一篇入门之-决策树分箱





      最大KS分箱      


最大KS分箱是基于KS值来进行分箱的一种方法,它只用于二分类
它先把所有样本初始化为一个分箱,然后根据KS点对分箱不断切割,直到数据分为n个分箱
 如下,KS分箱就是根据最大KS值所在处,将分箱不断一分为二,直到达到目标分箱个数
KS分箱  
备注:详细算法流程与代码实现可参考《KS分箱





      卡方分箱      


卡方分箱是基于卡方值进行分箱的一种方法
卡方分箱先初始化m个分箱,然后不断合并分箱,直到分箱数只剩n个
那么,每次合并哪两个分箱?
卡方分箱用卡方值判断哪两个分箱的类别分布最没区分度,就合并哪两个分箱。
 如下,卡方分箱先初始化多个分箱,然后根据卡方值不断进行合并,直到只乘目标分箱个数
 卡方分箱 
备注:详细算法流程与代码实现可参考《一篇入门之-卡方分箱







好了,以上就是等频等距分箱,以及其它自动分箱算法的介绍了~








 End 




联系老饼