从论文分析,告诉你什么叫 “卡方分箱”?

简介: 前些日子,星球里讨论风控建模面试中的一些问题,其中就提到了 “卡方分箱”。大家对卡方分箱都有或多或少的疑问,应星球朋友要求,最近整理了一下我对卡方分箱的理解,也借此分享给公众号的朋友们。

什么是分箱?


说到分箱,可能很多朋友都非常熟悉,它是数据科学中常用到的一个技巧,意思就是将连续型的数据分成几个数据段,即离散化。很好理解,举个例子,比如将原本连续的年龄特征离散化,结果可变为0-18,18-30, 30-50,>50等4个范围的特征值,而非连续的无穷的特征值。简单理解,这个过程其实就是:连续 —>不连续


为什么要分箱?


分箱的好处还是很多的,尤其是使用逻辑回归的评分卡建模中,分箱woe也是一种标配。总的来说,分箱有这么几个用处:


  • 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
  • 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
  • 单变量离散化后,每个变量有单独的权重,可以为逻辑回归模型引入了非线性,能够提升模型表达能力,加大拟合;
  • 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。
  • 可以将缺失作为独立的一类带入模型。



什么是卡方检验?


卡方检验是统计学中经常用到的一种假设检验。用我的理解总结起来,卡方检验就是对分类数据的频数进行分析的一种方法,它的应用主要表现在两个方面:拟合优度检验和独立性检验(列联分析)。


拟合优度


拟合优度是对一个分类变量的检验,即根据总体分布状况,计算出分类变量中各类别的期望频数,与分布的观察频数进行对比,判断期望频数与观察频数是否有显著差异,从而达到对分类变量进行分析的目的。比如,泰坦尼克号中我们观察幸存者是否与性别有关,可以理解为一个X是否与Y有必然联系。


独立性检验


独立性检验是两个特征变量之间的计算,它可以用来分析两个分类变量是否独立,或者是否有关联。比如某原料质量和产地是否依赖关系,可以理解为一个X与另一个X是否独立。


卡方检验步骤


卡方检验的步骤其实就是一般假设检验的过程。下面列出独立性检验的大致步骤,如下:


  • 提出假设,比如假设两个变量之间独立
  • 根据分类的观察频数计算期望频数
  • 根据卡方公式,计算实际频数与期望频数的卡方值
  • 根据自由度和事先确定的显著性水平,查找卡方分布表计算卡法值,并与上一步卡方值比较
  • 得出结果判断是否拒绝原假设



什么是卡方分箱?


分箱的方法有很多,卡方分箱属于其中一种,属于有监督系列的。卡方分箱正是一种基于卡方检验的分箱方法,更具地说是基于上面提到的第二种应用,独立性检验,来实现核心分箱功能的。


网上关于卡方分箱的理解也有一些,但是我们直接从算法提出者的论文来理解一下。下面这部分截取是算法的核心部分。


微信图片_20220218163128.jpg

卡方分箱算法简单来说,有两个部分组成:1)初始化步骤;2)合并。


初始化步骤


  • 根据连续变量值大小进行排序
  • 构建最初的离散化,即把每一个单独的值视为一个箱体。这样做的目的就是想从每个单独的个体开始逐渐合并。


合并


上面已经将初始化的内容构建完毕,这一步就是不断地合并了,自底向上的合并,直到满足停止条件。那么它是如何合并的呢?


论文中提到的具体操作是这样的:


  • 计算所有相邻分箱的卡方值:也就是说如果有1,2,3,4个分箱,那么就需要绑定相邻的两个分箱,共三组:12,23,34。然后分别计算三个绑定组的卡方值。
  • 从计算的卡方值中找出最小的一个,并把这两个分箱合并:比如,23是卡方值最小的一个,那么就将2和3合并,本轮计算中分箱就变为了1,23,4。


背后的基本思想是:如果两个相邻的区间具有非常类似的类分布,那么这两个区间可以合并。否则,它们应该分开。低卡方值表明它们具有相似的类分布。


停止条件


上面的步骤只是每一轮需要计算的内容,如果我们不设置停止条件,算法就会一直运行。当然,我们一般会设置一些停止条件:


  • 卡方停止的阈值
  • 分箱数目的限制


意思就是说,只要当所有分箱对的卡方值都大于阈值,并且分箱数目小于最大分箱数时,计算就会继续,直到不满足。这两个值根据我们的经验来定义,作为函数参数设置,一般推荐使用0.9,0.95,0.99的置信度,分箱数一般可以设置为5。



卡方分箱公式理解


有的朋友问我了,说上面内容可以理解,但是公式看不懂。公式是什么样的呢?根据论文中可以看到,它长这个样的:

微信图片_20220218163149.jpg

  • m=2:表示相邻的两个分箱数目
  • k:表示目标变量的类别数,比如目标是网贷违约的好和坏,那么k=2。k也可以是多类,大于2。
  • Aij:实际频数,即第i个分箱的j类频数
  • Eij:期望频数


其中,期望频数的公式如下,可根据P(AB)=P(A)P(B)推导出来:

微信图片_20220218163205.jpg

  • Ri&Cj:分别是实际频数整列和整行的加和


举个例子说明一下这个公式是如何用的,对于相邻两个分箱的卡方值计算:

微信图片_20220218163209.jpg

实际频数和期望频数都有了,带入卡方公式求解,过程如下:

微信图片_20220218163240.jpg

如果计算结果是所有卡方值中最小的,说明:这组中两个分箱具有最相似的类分布,因此把它们合并。


以上就是结合论文对卡方分箱原理的一个解读。对于卡方分箱的实现有一些特殊情况需要注意,比如初始分箱中每个分箱中的数量,以及是否有全是同一类别的分箱出现等等。不过,如果掌握了上面的核心原理和计算部分,这些特殊情况都可迎刃而解。

相关文章
|
6月前
|
机器学习/深度学习 数据可视化
R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据
R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据
|
6月前
|
机器学习/深度学习
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟-1
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟
|
6月前
|
算法 数据可视化
R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例
R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例
R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例
|
6月前
|
机器学习/深度学习 数据可视化
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
|
6月前
|
存储 机器学习/深度学习 算法
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
|
6月前
|
算法 Python
R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列
R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列
|
6月前
|
机器学习/深度学习 人工智能 算法
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟-2
数据分享|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟
|
6月前
|
机器学习/深度学习 计算机视觉
数据分享|R语言GLM广义线性模型:逻辑回归、泊松回归拟合小鼠临床试验数据(剂量和反应)示例和自测题
数据分享|R语言GLM广义线性模型:逻辑回归、泊松回归拟合小鼠临床试验数据(剂量和反应)示例和自测题
|
6月前
|
机器学习/深度学习 数据可视化
R语言广义线性模型GLM、多项式回归和广义可加模型GAM预测泰坦尼克号幸存者
R语言广义线性模型GLM、多项式回归和广义可加模型GAM预测泰坦尼克号幸存者
|
6月前
|
机器学习/深度学习
【视频】R语言LDA线性判别、QDA二次判别分析分类葡萄酒品质数据|数据分享(下)
【视频】R语言LDA线性判别、QDA二次判别分析分类葡萄酒品质数据|数据分享