
二分类模型中,如何应对分类自变量取值过多
这是个信息无限充裕的年代,是个数据爆炸的年代,也是数据过载的年代。大数据之大,不仅在于体量巨大,更在于结构和内容的复杂,因此如何处理好数据一直是我们工作少为人知、却也无法忽视的重点。本期,我们就以二分类模型中自变量取值过载为例,给大家讲讲应对之道~
在二分类建模过程中,难免会遇到分类自变量取值过多的情况,比如用来表示观测值地域属性的自变量,在我国即使选用省级层面的信息,最多也可达31种取值。处理分类自变量时,最常用的方法是将其拆分为若干取值为“0”和”1”的二分变量,这样就会导致模型的维度过多,自由度降低,不仅对建模样本提出了更高的要求,还增加了模型参数估计的难度和模型的训练时间。因此,今天我们基于自己的经验,在这里谈谈对这个问题的处理思路。
一、利用聚类算法进行类别合并
既然这个问题是分类变量取值过多导致的,那么,最直接的解决思路显然就是对类别进行合并。当然,合并不能是主观随意的,而应该是基于定量分析之后的结果。为了便于叙述,不妨假设某个分类型自变量X有A1,A2,…,An等取值,我们可以计算出每个类别中实际的Y=1比例。具体计算过程如下表所示:
然后就可以利用聚类分析来进行类别的合并了。第一种思路是采用系统聚类法,将A1,A2,…,An看做聚类的对象,各个类别的Y=1比例作为指标进行聚类,即有n个聚类对象,1个聚类指标。聚类结束之后,将聚为一类的类别进行合并。当然,究竟聚为几类最合适,还可以采用一些指标来辅助确定,比如SAS软件中的R-square、半偏态R-square以及伪F统计量等,都可以用来辅助确定类的个数。
第二种思路就是采用有序样品的聚类,长期关注我们公众号的小伙伴可能还记得,我们在前期的文章中曾经利用这个方法来进行数据离散化,这里我们利用这个方法进行类别的合并,处理起来也比较简单,将各个类别按照Y=1比例从小到大的顺序进行排列,再利用Fisher算法将Y=1比例相近的类别进行合并。这样做最大的好处是我们可以根据信息损失,得到最优的类别个数和相应的最优合并方法。
二、利用决策树进行类别合并
利用决策树进行类别合并时,首先需要选择一个衡量分类变量之间相关性或影响程度的指标,我们可以使用在前期的文章中曾经介绍过IV信息量或一致性比率。这种类别合并的基本步骤可以表示为:
1、将各个类别按照Y=1比例从小到大的顺序进行排列,并将所有类别视为一个组;
2、利用IV信息量(或者一致性比率),找出最优的二元分割方法,使得被选中的分组方案是所有分组方案中预测能力最强的,这样将所有类别分成了两组,不妨假设为组1和组2;
3、将组1按照上一步同样的步骤分为组11和组12,组2分为组21和组22。再利用IV信息量比较组1和组2的最优分组的预测能力大小,取预测能力最强的组进行分裂,这样将所有类别分成了三组,不妨假设为组1、组2和组3。
然后,按照第3步的做法不断分裂下去,直到分裂形成的组数达到预先设定的个数为止。如果因变量是二分变量,可以使用IV信息量或一致性比率;如果因变量的取值个数大于2,那么就可以使用一致性比率来进行预测力的判断。《SAS编程与数据挖掘商业案例》一书种提供了一份观测值为32264的数据集,其中因变量是二分变量,有一个分类自变量LOCATION有19种可能的取值,我们利用这里介绍的算法对变量LOCATION进行合并,将合并后的类别个数设定为5,下图是分裂的具体过程:
其中原始的19个变量记为B1,B2,…,B19,经过4次分裂,19个取值最后被分为5个组,圆圈里面的表示的就是这5个组里面包括的原始变量名称,每个方框下面对应的数字表示该步分裂所对应的顺序。由于采用的是自上而下的分裂算法,很显然,分裂后保留的组数越多,算法所耗费的时间也就越长。
三、WOE编码
WOE就是所谓的证据权重(weight of evidence),该方法计算出分类变量每一个类别的WOE值,这样就可以用这个WOE值组成的新变量来替代原来的分类变量。由于新变量是数值型变量,因此该方法实际是将分类变量转化为数值变量,不用再生成虚拟变量,避免了由此产生的维度过多的问题。我们用下面的表格来表示WOE值的计算过程:
注:LN表示自然对数函数。
从上表可以看出,WOE值实际上是该类别中Y=1与Y=0比例之比的自然对数。需要注意的是,该表的Y=1比例与上一张表的Y=1比例计算方式是不一样的,上一张表的Y=1比例是该类别中Y=1观测个数与该类别所有观测个数之比,而这一张表示该类别Y=1观测个数与样本中所有Y=1观测个数之比。WOE编码法在利用logistic模型建立信用评分卡时应用较多。
四、小结
比较而言,前两种类别合并的方法,虽然减少了类别个数,但是仍然需要生成若干二分变量;当使用一致性比率进行预测力判断时,第二种方法也适用于多分类模型;第三种方法将分类变量直接转化为数值型变量,模型简洁,易于操作。但是如果出现类别中Y=1或者Y=0个数为零的情况,将导致WOE值无法计算。因此,也可以将两种方法结合起来,先进行简单的类别合并,避免Y=1或者Y=0个数为零的情况,然后再进行WOE编码。
总之,数据的世界是日益复杂的,大数据尤其如此。在面对繁复的海量数据时,我们需要很多方法和经验,将数据转化成更简洁有效的信息;希望大家能从本文中得到一点启发。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
PyTorch 核心机制:损失函数与反向传播如何驱动模型进化 在深度学习的世界里,模型从 “一无所知” 到 “精准预测” 的蜕变,离 ...
2025-07-252025 年 CDA 数据分析师考纲焕新,引领行业人才新标准 在数字化浪潮奔涌向前的当下,数据已成为驱动各行业发展的核心要素。作为 ...
2025-07-25从数据到决策:CDA 数据分析师如何重塑职场竞争力与行业价值 在数字经济席卷全球的今天,数据已从 “辅助工具” 升级为 “核心资 ...
2025-07-25用 Power BI 制作地图热力图:基于经纬度数据的实践指南 在数据可视化领域,地图热力图凭借直观呈现地理数据分布密度的优势,成 ...
2025-07-24解析 insert into select 是否会锁表:原理、场景与应对策略 在数据库操作中,insert into select 是一种常用的批量数据插入语句 ...
2025-07-24CDA 数据分析师的工作范围解析 在数字化时代的浪潮下,数据已成为企业发展的核心资产之一。CDA(Certified Data Analyst)数据分 ...
2025-07-24从 CDA LEVEL II 考试题型看 Python 数据分析要点 在数据科学领域蓬勃发展的当下,CDA(Certified Data Analyst)认证成为众多从 ...
2025-07-23用 Python 开启数据分析之旅:从基础到实践的完整指南 在数据驱动决策的时代,数据分析已成为各行业不可或缺的核心能力。而 Pyt ...
2025-07-23鸢尾花判别分析:机器学习中的经典实践案例 在机器学习的世界里,有一个经典的数据集如同引路明灯,为无数初学者打开了模式识别 ...
2025-07-23解析 response.text 与 response.content 的核心区别 在网络数据请求与处理的场景中,开发者经常需要从服务器返回的响应中提取数 ...
2025-07-22解析神经网络中 Softmax 函数的核心作用 在神经网络的发展历程中,激活函数扮演着至关重要的角色,它们为网络赋予了非线性能力, ...
2025-07-22CDA数据分析师证书考取全攻略 一、了解 CDA 数据分析师认证 CDA 数据分析师认证是一套科学化、专业化、国际化的人才考核标准, ...
2025-07-22左偏态分布转正态分布:方法、原理与实践 左偏态分布转正态分布:方法、原理与实践 在统计分析、数据建模和科学研究中,正态分 ...
2025-07-22你是不是也经常刷到别人涨粉百万、带货千万,心里痒痒的,想着“我也试试”,结果三个月过去,粉丝不到1000,播放量惨不忍睹? ...
2025-07-21我是陈辉,一个创业十多年的企业主,前半段人生和“文字”紧紧绑在一起。从广告公司文案到品牌策划,再到自己开策划机构,我靠 ...
2025-07-21CDA 数据分析师的职业生涯规划:从入门到卓越的成长之路 在数字经济蓬勃发展的当下,数据已成为企业核心竞争力的重要来源,而 CD ...
2025-07-21MySQL执行计划中rows的计算逻辑:从原理到实践 MySQL 执行计划中 rows 的计算逻辑:从原理到实践 在 MySQL 数据库的查询优化中 ...
2025-07-21在AI渗透率超85%的2025年,企业生存之战就是数据之战,CDA认证已成为决定企业存续的生死线!据麦肯锡全球研究院数据显示,AI驱 ...
2025-07-2035岁焦虑像一把高悬的利刃,裁员潮、晋升无望、技能过时……当职场中年危机与数字化浪潮正面交锋,你是否发现: 简历投了10 ...
2025-07-20CDA 数据分析师报考条件详解与准备指南 在数据驱动决策的时代浪潮下,CDA 数据分析师认证愈发受到瞩目,成为众多有志投身数 ...
2025-07-18