分箱(binning)

一.定义

分箱就是将连续变量离散化

二.好处

  1. 储存空间小
  2. 将所有变量变换到相似的尺度上
  3. 对异常数据有很强的鲁棒性
  4. 引入了非线性
  5. 使模型会更稳定,降低了模型过拟合的风险,提升模型表达能力,加大拟合

三.方法

关于变量分箱主要分为两大类:有监督型无监督型

A. 无监督:

(1) 等宽 (2) 等频 (3) 聚类

#coding:utf-8
from sklearn.cluster import KMeans
import numpy as np
import pandas as pd

pd.cut(np.array([.2, 1.4, 2.5, 6.2, 9.7, 2.1]),3, labels=["good", "medium", "bad"])#等宽
pd.qcut(range(5), 3, labels=["good", "medium", "bad"])#等频

#聚类
k=4
data = np.array([1]*10+[2]*5+[100]*4+[3000]*100)
kmodel = KMeans(n_clusters = k) 
kmodel.fit(data.reshape(-1,1))
c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0)
w = c.rolling(2).mean().iloc[1:] 
w = [data.min()-1] + list(w[0]) + [data.max()+1] 
data_kmean = pd.cut(data, w, labels = range(k))

B.有监督

因变量为离散:

一.卡方分箱法(ChiMerge):

卡方值:类分布的相似性低卡方值表明它们具有相似的类分布。

算法:

二.Best-KS分箱

KS值:KS值越大,表示该变量越能将正,负客户的区分程度越大。

KS的计算方式:

  1. 计算每个评分区间的好坏账户数。
  2. 计算各每个评分区间的累计好账户数占总好账户数比率(good%)和累计坏账户数占总坏账户数比率(bad%)。
  3. 计算每个评分区间累计坏账户比与累计好账户占比差的绝对值(累计good%-累计bad%),然后对这些绝对值取最大值记得到KS值。

算法:

  1. 将特征值值进行从小到大的排序。
  2. 计算出KS最大的那个值,即为切点,记为D。然后把数据切分成两部分。
  3. 重复步骤2,进行递归,D左右的数据进一步切割。直到KS的箱体数达到我们的预设阈值即可。

Best-KS分箱的特点:

  1. 连续型变量:分箱后的KS值<=分箱前的KS值
  2. 分箱过程中,决定分箱后的KS值是某一个切点,而不是多个切点的共同作用。这个切点的位置是原始KS值最大的位置。
     

因变量为连续:

单变量决策树算法

 

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值