前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文弄懂卡方分箱的原理和应用

一文弄懂卡方分箱的原理和应用

作者头像
阿黎逸阳
发布于 2024-06-06 12:03:52
发布于 2024-06-06 12:03:52
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

风控建模中的分箱方法通常包含有监督分箱和无监督分箱。

其中有监督分箱主要包括:卡方分箱和决策树分箱。无监督分箱主要包括:等距分箱、等频分箱和聚类分箱等。

卡方分箱(ChiMerge)是一种基于统计学原理的特征离散化方法。

其原理在于通过合并具有相似类分布的相邻区间,来减少变量的取值情况并降低变量的复杂度。

具体来说,卡方分箱依赖于卡方检验,即具有最小卡方值的相邻区间会被合并在一起,直到满足确定的停止准则。

卡方分箱的原理和实现比较简单,本文接下来将进行详细阐述。

一、卡方分布

为了更好地理解卡方分箱,我们先来看下卡方分布。

卡方分布(Chi-square Distribution)是概率论与统计学中常用的一种概率分布,也是统计推断里应用最广泛的概率分布之一。

卡方分布的定义基于标准正态分布,其数学定义如下:

若k个独立的随机变量Z1、Z2、……、Zk满足标准正态分布N(0,1),则这k个随机变量的平方和:

为服从自由度为k的卡方分布,记作:

二、卡方检验

卡方检验是以卡方分布为基础的一种假设检验方法。主要用于比较观察值和期望值之间是否存在差异。

这种方法特别适用于分类数据,如性别、教育水平等。

其基本思想是根据样本数据推断总体的分布与期望分布是否有显著差异,或者推断两个分类变量是否相关或者独立。

一般可以设原假设为:观察频数和期望频数没有差异,或者两个变量相互独立不相关,即该因素不会影响到目标变量。

实际应用中,我们先假设原假设成立,计算出卡方值,卡方值的计算公式为:

其中,A为实际频数,E为期望频数。

该假设计算出卡方值,它表示观察值与理论值之间的偏离程度。根据卡方分布及自由度可以确定在原假设成立的情况下获得当前统计量及更极端情况的概率P。

不同自由度下卡方值对应的P值见下表:

其中n列对应自由度,红框中对应P值,不同自由度和P值对应的是卡方值。可以发现相同自由度下,卡方值越大,P值越小。

反过来,如果P值越小,则卡方值越大,说明观察值与理论值偏离程度太大,应当拒绝原假设。

卡方分箱的基本思想在于,对于精确的离散化,相对类频率在一个区间内应当完全一致。

因此,如果两个相邻的区间具有非常类似的类分布,则这两个区间可以合并,否则,它们应当保持分开。

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

三、计算卡方值的案例

为了大家对卡方值计算有一个更清晰的理解,本节介绍一个计算卡方值的案例。

假设我们有一组数据,记录了某种病的患者使用了A和B两种不同方案的治疗结果,想弄清这两种疗法是否有明显差异。

具体治疗数据如下:

先设立原假设:A、B两种疗法没有区别。

根据上文介绍的卡方值计算公式:

其中,A为实际频数,E为期望频数。

计算出每个格子的期望频数:

其中A疗法有效类别的期望频数为:43*53/87=26.2,其余计算类似。

接着套卡方值计算公式可得:

总计两个方案,我们选择了其中一个方案,另一个方案也就确定了,所以自由度为1。

查表可得自由度为1,p=0.05的卡方值为3.841。之前也提到相同自由度下,卡方值越大,P值越小。

此例卡方值10.01>3.841,因此p<0.05,说明落在拒绝阈中,也就是原假设不成立,即两种治疗方案有区别。

四、卡方分箱实现步骤

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
接着介绍卡方分箱的实现步骤:step1:按照属性值的大小进行排序(对于非连续特征,需先做数值转换,如转换成对应响应率、坏样本率等,然后排序),然后每个属性值单独作为一组。step2:对每一对相邻的组,计算卡方值。step3:根据计算的卡方值,对其中最小的一对相邻组进行合并。step4:不断重复step2~step3,直到计算出的卡方值都不低于事先设定的阈值,或者分组数达到一定的条件,比如分为5组。

五、卡方分箱实现代码

最后介绍卡方分箱的实现代码,由于toad包中变量分箱自带卡方分箱,我们直接调用即可。 1 读取数据 首先导入挑选完入模变量后的建模数据,包括12个自变量,1个因变量。具体代码如下: import os import pandas as pd os.chdir(r'E:\date') train_f = pd.read_csv('train_date_f.csv', encoding='gbk') test_f = pd.read_csv('test_date_f.csv', encoding='gbk') train_f = train_f.drop(columns='Unnamed: 0') test_f = test_f.drop(columns='Unnamed: 0') train_f.head(10) 得到结果:可以发现此时的自变量还是原始数据。 2 变量分箱在做变量的WOE变换之前需要先做变量分箱,分箱的好坏直接影响WOE的结果,以及变换后的单调性。toad支持等频分箱、等距分箱、卡方分箱、决策树分箱、最优分箱等。 并且,toad的分箱功能支持数值型数据和离散型数据。 toad首先判断变量类型,如果为数值型就按数值型分箱处理,如果为非数值型,那么会判断变量唯一值的个数,如果大于10个或者超过变量总数的50%,那么也按照数值型处理。 具体代码如下: import toad c = toad.transform.Combiner() #初始化 c.fit(train_f, y = 'target', method = 'chi', min_samples = 0.05) #使用特征筛选后的数据进行训练,使用稳定的卡方分箱,规定每箱至少有5%数据,空值我已经转换成-999999 c.export() 参数详解: train_f:包含自变量和因变量的数据。 y:因变量列名。 method:分箱方法,包括chi(卡方), dt(决策树), kmean(k均值), quantile(等频), step(等距),默认chi。 min_samples: 每箱至少包含样本量,可以是数字或者占比。 c.export:查看分箱节点。 c.fit中还有两个参数,可根据需要进行设置,补充如下: n_bins: 箱数,若无法分出这么多箱,则会分出最多的箱数。 empty_separate: 是否将空值单独分箱,默认是False,即将空值自动归到最佳箱。 得到结果:

可以发现我们只要把method设置为chi,即选用了卡方分箱进行变量分箱。 同时r360_score变量的分割点是490,DXM_score变量的分割点分别是388、 417和 437。 至此,卡方分箱的原理和实现就分享完了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从论文分析,告诉你什么叫 “卡方分箱”?
前些日子,星球里讨论风控建模面试中的一些问题,其中就提到了 “卡方分箱”。大家对卡方分箱都有或多或少的疑问,应星球朋友要求,最近整理了一下我对卡方分箱的理解,也借此分享给公众号的朋友们。
Python数据科学
2019/04/26
8.4K0
从论文分析,告诉你什么叫 “卡方分箱”?
Machine Learning-特征工程之卡方分箱(Python)
初次接触变量分箱是在做评分卡模型的时候,SAS软件里有一段宏可以直接进行连续变量的最优分箱,但如果搬到Python的话,又如何实现同样或者说类似的操作呢,今天就在这里简单介绍一个办法——卡方分箱算法。
Sam Gor
2019/08/22
6K0
评分卡应用 - 利用Toad进行有监督分箱(卡方分箱/决策树分箱)
toad是针对工业届建模而开发的工具包,针对风险评分卡的建模有针对性的功能。toad持续更新优化中,本教程针对toad的各类主要功能进行介绍, 包括:
悟乙己
2021/12/07
3.9K0
评分卡应用 - 利用Toad进行有监督分箱(卡方分箱/决策树分箱)
【干货】风控建模中把原始变量转成WOE实现
很多刚开始建模的同学,对原始变量转WOE都是一知半解,弄不清楚为什么要转WOE,也不清楚要怎么把变量转成WOE。
阿黎逸阳
2023/09/20
1.6K0
【干货】风控建模中把原始变量转成WOE实现
​特征工程系列:特征预处理(上)
关于作者:JunLiang,一个热爱挖掘的数据从业者,勤学好问、动手达人,期待与大家一起交流探讨机器学习相关内容~
木东居士
2019/08/08
1K0
​特征工程系列:特征预处理(上)
风控建模中的自动分箱的方法有哪些
之前有位读者朋友说有空介绍一下自动分箱的方法,这个确实在我们实际建模过程前是需要解决的一个问题,简单来说就是把连续变量通过分箱的方式转换为类别变量。关于这个话题,我也借着这个主题来系统的梳理总结一下几点:为什么要分箱?不分箱可以入模型吗?自动分箱的常用方法有哪些?评估分箱效果好坏的方法有哪些? 如果篇幅允许,就顺便把实现的Python代码也分享下,如果太长了就另外起一篇文章来讲。因此,本篇文章主要从下面几个模块来展开说说。
Sam Gor
2022/02/25
3K0
风控建模中的自动分箱的方法有哪些
​特征工程系列:特征预处理(上)
关于作者:JunLiang,一个热爱挖掘的数据从业者,勤学好问、动手达人,期待与大家一起交流探讨机器学习相关内容~
石晓文
2019/08/29
1.4K0
​特征工程系列:特征预处理(上)
卡方分布分析与应用
该文介绍了卡方分布分析与应用,包括卡方检验、独立性检验和拟合优度检验等。首先介绍了卡方分布的基本形式和性质,然后详细阐述了卡方检验的统计原理和计算方法。接着讨论了独立性检验和拟合优度检验的应用,包括四格表、RxC列联表和2、拟合性检验等。最后,介绍了一个使用Python实现的卡方检验代码示例。
锦小年
2018/01/02
2.9K0
卡方分布分析与应用
皮尔逊χ²检验(Pearson's Chi-squared Test)
皮尔逊χ²检验(Pearson's Chi-squared Test),也称为卡方检验,是由英国统计学家卡尔·皮尔逊(Karl Pearson)在19世纪末提出的。它是统计学中最常用的一种非参数检验方法,最初设计用于评估观察频数与期望频数之间是否存在显著差异,常用于推断分类变量间的独立性或拟合优度检验。
jack.yang
2025/04/05
3260
皮尔逊χ²检验(Pearson's Chi-squared Test)
【机器学习 | 假设检验系列】假设检验系列—卡方检验(详细案例,数学公式原理推导),最常被忽视得假设检验确定不来看看?
【机器学习 | 假设检验系列】假设检验系列—卡方检验(详细案例,数学公式原理推导),最常被忽视得假设检验确定不来看看? 作者: 计算机魔术师 版本: 1.0 ( 2023.8.27 )
计算机魔术师
2023/12/18
2.3K0
【机器学习 | 假设检验系列】假设检验系列—卡方检验(详细案例,数学公式原理推导),最常被忽视得假设检验确定不来看看?
卡方分布、方差分析
首先我们先把现代数学中的数理统计中的卡方分布已经烂大街的定义先放下来,我先回到卡方检验的诞生的之地。
全栈程序员站长
2022/07/23
1.7K0
卡方分布、方差分析
卡方分布
卡方分布(英语:chi-square distribution, χ²-distribution,或写作χ²分布)是概率论与统计学中常用的一种概率分布。k个独立的标准正态分布变量的平方和服从自由度为k的卡方分布。卡方分布是一种特殊的伽玛分布,是统计推断中应用最为广泛的概率分布之一,例如假设检验和置信区间的计算。
为为为什么
2023/11/02
6180
卡方分布
机器学习(十六)特征工程之数据分箱
数据分箱(也称为离散分箱或分段)是一种数据预处理技术,用于减少次要观察误差的影响,是一种将多个连续值分组为较少数量的“分箱”的方法。
致Great
2019/01/28
13.3K0
机器学习(十六)特征工程之数据分箱
卡方分布与卡方检验
卡方分布 卡方分布(chi-square distribution, -distribution)是概率统计里常用的一种概率分布,也是统计推断里应用最广泛的概率分布之一,在假设检验与置信区间的计算中经
zenRRan
2018/04/10
3.3K0
卡方分布与卡方检验
3种连续变量分箱方法的代码分享
大家好呀!在上一篇我们介绍了3种业界常用的自动最优分箱方法。 1)基于CART算法的连续变量最优分箱 2)基于卡方检验的连续变量最优分箱 3)基于最优KS的连续变量最优分箱 今天这篇文章就来分享一下这3种方法的Python实现。
Sam Gor
2022/02/25
1.6K0
3种连续变量分箱方法的代码分享
【评分卡实现】应用Python中的toad.ScoreCard函数实现评分卡
之前的文章已经阐述了逻辑回归和sigmod函数的由来、逻辑回归(logistics regression)原理-让你彻底读懂逻辑回归、评分卡原理及Python实现。
阿黎逸阳
2023/10/08
3.6K0
【评分卡实现】应用Python中的toad.ScoreCard函数实现评分卡
【ML】一文详尽系列之模型评估指标
在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针对不同机器学习问题如回归、分类、排序,其评估指标也会不同。
yuquanle
2019/12/02
9170
感染新冠病毒(COVID-19)看血型?
该论文名为《Relationship between the ABO Blood Group and the COVID-19 Susceptibility》,论述了武汉金银潭医院、南方科技大学、上海交大、武汉中南医院等8家单位的最新研究成果——A、B、AB和O型这几种不同血型与新冠肺炎易感性存在的关联。
叶锦鲤
2020/03/26
1.1K0
感染新冠病毒(COVID-19)看血型?
卡方检验
卡方检验是一种统计方法,用于确定观察到的数据与期望的数据之间是否存在显著差异。它通常用于分析两个或多个分类变量之间的关联性。
为为为什么
2023/11/04
7330
SPSS卡方检验结果解读详解
卡方检验(Chi-Square Test)是由Pearson提出的一种统计方法,在一定的置信水平和自由度下,通过比较卡方统计量和卡方分布函数概率值,判断实际概率与期望概率是否吻合,通过比较理论概率和实际概率的吻合程度,可检验两个分类变量的相关性。用户可利用SPSS软件方便的完成卡方检验,在SPSS软件中,默认H0成立,即观察频数和实际频数无差别,即两组变量相互不产生影响,两组变量不相关,如果检验P值很高,则假设检验通过;如果检验P值很低,则检验不通过,观察频数和实际频数有差别,两组变量相关。SPSS数据检验具有很强的科学性和完备性,因此给出的报告也较复杂,下面就来进行SPSS卡方检验结果解读。
全栈程序员站长
2022/08/27
4.2K0
SPSS卡方检验结果解读详解
相关推荐
从论文分析,告诉你什么叫 “卡方分箱”?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验