本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
本文粗略介绍什么是自动分箱、常使用的方法有哪些,
以及各个自动分箱方法的基本思想,
最后泛谈一下自动分箱的一些相关问题
什么是自动分箱
在机器学习中,
有时往往需要将连续的数值变量,分成指定个离散变量,
自动分箱一般就是指 将连续变量自动离散化
简单的自动分箱方法
简单的自动分箱方法一般有等频、等距分箱
实际使用的自动分箱算法
等频、等距分箱过于原始,效果往往并不够优秀,
一般实际使用的自动分箱为以下三种:
决策树分箱
最大KS分箱
卡方分箱
下面介绍决策树分箱、最大KS分箱、卡方分箱这几种自动分箱算法的思想
决策树分箱
决策树分箱是用变量与y构建决策树,
使用决策树最后的叶子节点作为分箱结果。
如下,使用x与y构建决策树,
最后得到三个分箱:
【<=5.45 】、(5.45,6.15】、【>6.15】
最大KS分箱
最大KS分箱只用于二分类,
它先把所有样本初始化为一个分箱,
然后根据KS点对分箱不断切割,
直到数据分为n个分箱
如下,KS分箱就是根据最大KS值所在处,
将分箱不断一分为二,直到达到目标分箱个数
卡方分箱
卡方分箱则是先初始化m个分箱,
然后不断合并分箱,直到分箱数只剩n个,
那么,每次哪两个分箱?
卡方分箱用卡方值判断哪两个分箱的类别分布最没区分度,
就合并哪两个分箱。
如下,卡方分箱先初始化多个分箱,
然后根据卡方值不断进行合并,
最终合并成目标分箱数目
枚举变量如何自动分箱
自动分箱指的是针对连续变量,
那枚举变量怎么自动分箱呢?
例如有100个城市,我想合并成10个分箱,
该怎么解决?
只要将枚举变量转换成连续变量就可以了,
例如用每个城市的woe替代城市名称,
再应用以上连续变量的分箱方法就可以了
关于代码实现
目前(2022-10)python并没有官方的自动分箱包,
一般需要自己写代码实现。
因为没有官方包,都是自己写的代码,
所以即使用同样的自动分箱算法,
不同的人实现后出来的结果也可能会不一致,
主要是算法的实现细节上大家有所出入。
End