常用特征分箱算法

特征分箱是构建信用评分过程中最重要的一个环节。特征分箱是对连续变量离散化的一种简称,对于连续型变量,需要对其连续值进行拆分,并进行后续的分箱调整工作;

对于离散型变量,通常要根据每个离散值计算其坏样本占比或者好坏比,通过坏样本占比或好坏比对离散信息进行编码,将离散值转换为连续型变量,再进行后续的分箱操作。

特征分箱算法即是在特征分箱过程中采用的方法,对于同一特征而言,不同的分箱算法所得到的分箱结果差异较大,这也直接影响最终的特征预测能力以及模型效果。

常用的特征分箱算法

特征分箱算法有很多种,不同的建模师在不同的业务场景下,根据现有的数据基础,所选择的特征分箱算法均可能不同。

1) 经验分箱法

传统上,建模工程师在进行分箱操作时通常会结合自身的业务经验,根据业务上积累的数据经验对分箱进行主观划分。

比如年龄这一字段,业务上的数据感觉可能会告诉建模工程师,当客户年龄在18岁以上30岁以下时,风险水平较为相似,应当划分到同一个分箱中去;而当客户年龄在30岁以上45岁以下时,客户收入水平在整个生命周期中处于较高的水平,风险水平相对较低;而当客户年龄在45岁以上时,收入水平下降,风险水平相对有所提高。

建模工程师根据经验可能会将年龄字段划分为3个分箱,分别是[18,30]、[30,45]、[45,65]三个区间,再分别计算这三个分箱对应的好坏比及WOE值。

这种根据业务经验对特征进行分箱的方法,当建模人员业务经验较为丰富时,通常分箱及建模会有较好的效果。但在建模人员经验较为不足时,分箱结果的主观性较强。

这种方法会受到很多主观因素的干扰,分箱结果也不能很好的反映特征变量在数据意义上的真实表现。

2) 统计分箱法

除了根据业务经验分箱外,业界还有一种使用无监督统计方法进行分箱的做法,常见有的等频分箱法、等距分箱法和聚类分箱法。

等频分箱法是指在将需要分箱的特征按从小到大或从大到小进行排序后,按照等频的统计原则对变量进行分箱。

比如同样假设年龄这个字段,取值区间在18-65岁,样本总量10000人,假设取每2500人一个分箱,可能得到[18,28]、[29,40]、[41,53]、[54,65]共计4个分箱,每个分箱2500个样本。这样得到的分箱即根据等频分箱法取得。

等频分箱法中的分箱个数通常也是根据业务经验得到,或者根据某些特征条件限制取得。

等频分箱法的优点在于样本分布均匀,每个分箱中样本量较为充足,所体现的样本好坏规律较为稳定。但等频分箱法可能出现不同分箱中坏样本占比或好坏比趋势非单调或者不完全符合业务经验的情形,这是等频分箱法的不足之处。

等距分箱法是指在将需要分箱的特征按从小到大或从大到小进行排序后,按照等距的统计原则对变量进行分箱。

比如假设年龄这一字段,取值区间同样在18-65岁,样本总量还是10000人,假设每12岁间隔为一个分箱,可以得到[18,30]、[31,43]、[44,56]、[57,65]共计4个分箱。除最后一箱外,其余每箱间距均为12岁,这样得到的分箱即根据等距分箱法取得。

与等频分箱法一样,等距分箱法的分箱个数,也是根据业务经验或主观选取。等距分箱法的最大优点是直观易理解,每箱距离一致,从数学上看形式较为美观。

但由于借款真实客户的分布可能各种各样,因此等距分箱法不同分箱中的样本个数可能差异较大,有可能导致部分分箱中样本量较少,以至于分箱坏样本占比或好坏比出现极端值的情形,导致分箱不具有代表性。

聚类分箱法是一种新型的统计分箱法,这种方法的特异之处在于它利用了相对较为高深的聚类分析方法,通过聚类分析,将特征的取值聚到不同的类中,并将聚得的每个类作为一个分箱。这样得到的每一个分箱的样本取值较为相似,不同分箱的样本取值差异较大。

聚类分箱法的优点是使得分箱之间的区分度能够显著提高,同一分箱较为相似,不同分箱又能保持一定差异,符合特征分箱对分箱差异性的要求。

然而,聚类分析中的类个数依然取决于建模人员的主观判断,并没有一个明确可量化的衡量标准。另外,由于是对单一特征进行聚类,计算欧氏距离指标所依据的信息量有限,经常可能会导致分箱结果与业务经济含义不符,难以理解的情况出现。

如果你喜欢、想要看更多的干货类型的文章,可以把公众号设为星标🌟,顺便转发分享~

FAL长期对外征稿,邀请各大风控人士加入我们,在风控圈分享你的经验与知识👉征稿,快到碗里来,有稿费那种!
在这里插入图片描述

线性分箱(Linear Binning)是一种在统计学和数据处理中常用的离散化方法,用于将连续型数据划分到若干个“箱子”(bin)中。线性分箱的核心思想是将数据均匀地划分到等宽的区间中,每个区间的宽度是相同的。 线性分箱算法步骤如下: 1. **确定分箱的数量**(bins)或每个箱子的宽度。 2. **计算最小值和最大值**,以确定数据的范围。 3. **将数据范围划分为等宽的区间**。 4. **将每个数据点分配到对应的区间中**。 ### 示例代码:线性分箱实现 ```python import numpy as np def linear_binning(data, num_bins): # 获取数据的最小值和最大值 min_val = np.min(data) max_val = np.max(data) # 计算每个箱子的宽度 bin_width = (max_val - min_val) / num_bins # 初始化箱子 bins = [0] * num_bins # 遍历数据点,将其分配到对应的箱子中 for value in data: # 计算该值属于哪个箱子(注意处理等于max_val的情况) bin_index = min(int((value - min_val) / bin_width), num_bins - 1) bins[bin_index] += 1 return bins # 示例数据 data = [1.2, 2.5, 3.7, 4.8, 5.0, 6.3, 7.4, 8.6, 9.9, 10.0] # 使用线性分箱算法将数据分为5个箱子 num_bins = 5 result = linear_binning(data, num_bins) print("Binned counts:", result) ``` ### 输出示例: ``` Binned counts: [2, 2, 2, 2, 2] ``` ### 解释: 1. 我们首先计算数据的最小值 `min_val` 和最大值 `max_val`。 2. 然后根据指定的箱子数量 `num_bins`,计算每个箱子的宽度 `bin_width`。 3. 对于每一个数据点,我们计算它属于哪个箱子的索引,并将该箱子的计数加1。 4. 最终返回的是每个箱子中包含的数据点数量。 线性分箱在直方图绘制、特征离散化、数据压缩等领域有广泛应用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值