特征离散化(二) 之 Chi2分箱

本文详细介绍了特征离散化中的Chi2分箱方法,作为ChiMerge分箱的优化,它通过不一致性检验减少对显著性水平的依赖。内容包括Chi2分箱的两个阶段、不一致性衡量的计算以及显著性水平的衰减,并提供了相关代码实现。
摘要由CSDN通过智能技术生成

特征离散化(二) 之 Chi2分箱

话接上回,基于ChiMerge的卡方分箱可大致分为四个部分:1. 排序(连续型根据值大小排序,离散型根据给定的标准(如正例样本占比)排序);2. 自底向上计算相邻两项的卡方值(这一部分的计算尤其需要注意);3. 合并卡方值最小的两项;4. 重复步骤2&3直至满足给定的停止条件。如果有不清楚的地方,可以参见上篇博客
ChiMerge分箱有一个致命的问题是:迭代结束的卡方阈值 δ \delta δ取决于显著性水平(sigLevel),该值由用户指定。对于不同的场景,该如何确定一个合适的sigLevel呢?基于此,Chi2分箱横空出世。

1. 卡方分箱 之 Chi2

Chi2分箱与ChiMerge分箱都是基于卡方值的自底向上分箱方法。Chi2分箱是对ChiMerge分箱的一种优化,不同于ChiMerge,通过引入不一致性检验(原文对应consistency check),Chi2的分箱效果不严重依赖于用户指定的卡方阈值。其伪码如下:
chi2分箱伪码
从伪码可知,Chi2分箱可分为两个阶段:第一个阶段,相当于在ChiMerge分箱(图中红色框框)的外层增加了一层循环。逐步降低显著性水平(sigLevel),直至数据的不一致性度量小于指定阈值 δ \delta δ,从而提高卡方阈值。第二个阶段,在第一阶段确定的sigLevel基础上,进行更细致的划分。
注意*:这里的讨论都只考虑针对单个变量的分箱。

这里面有三个关键的地方论文里讲的不是很清楚:

  1. 不一致性(Inconsistency Rate)如何计算。modified_chi2.pdf
  2. 卡方值计算(坑最深的地方)。这个上篇博客已经介绍了,此处不再赘述。
  3. 显著性水平(Significance Level)如何衰减。

下面我们将具体讨论这三个问题。

2. 不一致性衡量

根据论文中的解释,不一致性的度量标准如下:
在这里插入图片描述
相应的代码如下:

def calc_inconsistency_rate(count, group):
    """
    计算分组的不一致性,参考论文《Feature Selection via Discretizations》
    :param count: DataFrame 待分箱变量的分布统计
    :param group: list 分组信息
    :return: float 该分组的不一致性
    """
    inconsistency_rate = 0.0
    for intv in group:
        count_intv = count
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值