先来讲讲什么是分箱算法,根据字面意思就是把数据按照不同的规则分到不同的箱子里。其实分箱是特征工程的一种,可以理解为一种连续数据变为离散数据的建模方式。
举个直观的例子,比如有一组连续数据,比如为25,14,68,43,63。假设数据的分箱逻辑是大于50为0,小于50为1,那么最终数据会变成1,1,0,1,0,数据就离散化了。当然分箱有很多方式,大致作用就是把连续数据按照一定的规则离散化。
分箱算法的好处等同于数据离散化的好处,大致有下面几点:
可以减少过拟合的风险,因为分箱相当于对于数据去粗粒度描述
增加稀疏数据的概率,减少计算量,因为0的数据变多了
减少噪声数据的影响,比如一组数据按照0~100均匀分布,当数据中突然出现一个10000的数据,如果不做分箱的化会对Logistic Regression这种模型的训练造成很大影响
方便特征衍生,因为数据离散化后就可以把特征直接相互做内积提升特征维度
离散化后可以提升模型的鲁棒性,比如我们有一组数据是年龄,比如A30岁、B50岁,到了第二年A变成31岁,B变成51岁,所有数据都变了理论上要更新模型。但是如果数据分箱了之后,比如分箱逻辑是小于40岁为0,大于40岁为1,则第一年和第二年数据没有变化,模型也不用变
分箱有n种方法,我这里举两个最简单的例子等频分箱和等距分享。假设数据集,要分成3份:
50,42,63,4,104,87
等距分箱:先把数据排序,变成4,42,50,63,87,104。然后求区间w=(104-4)/3=33.3333,大致每隔33就是一个箱。于是4是第一个。42,50,63是第二个。87,104是第三个箱。最终数据就变成1,1,1,0,2,2
等频分箱:保证每个箱子里的数据个数相同,也是先排序,变成4,42,50,63,87,104。4,42是第一个箱。50,63是第二个。87,104是第三个。最终数据变成:1,0,1,0,2,2
数据分箱之后怎么验证分箱的效果呢,这种基于每个特征的数据归类验证问题一般都可以借助信息熵的方式。常规的方法有WOE和IV。
WOE(Weight of evidence),看下公式:
#good(i)表示每组中标签为good的数量,#good(T)为good的总数量。我们计算WOE的目的其实是通过WOE去计算IV,从而达到预测的目的。后面IV计算中,会通过相减后相乘的方式把负号给抵消掉。所以不管谁做分子,谁做分母,最终的IV预测结果是不变。
IV可用来表示一个变量的预测能力。
IV | 预测能力 |
---|---|
<0.03 | 无预测能力 |
0.03~0.09 | 低 |
0.1~0.29 | 中 |
0.3~0.49 | 高 |
>=0.5 | 极高 |