分类变量
的水平一定要压缩
模型中分类变量一般需要处理成0-1形式的哑变量。
如果变量水平本身较多,那么哑变量的水平个数也会相应变多,这种情况下去构建模型肯定不行,需要将分类变量的水平进行压缩处理。
分类变量
水平压缩的方法
一般情况,分类变量水平压缩有下面两种方法,这一篇先说说我对哑变量编码法的理解:
- 哑变量编码法;
- 基于目标变量的WOE转换法;
我眼中的
哑变量编码法
建模时,如果入模变量有N个等级,为了避免多重共线性,不可以设置N个哑变量,一般需设置N-1个0-1形式的哑变量。变量等级过多会为后续的建模工作带来麻烦,但如果坚持想通过构建哑变量的方式来构建模型,则只能通过人为的方法去合并变量的水平数量,即进行变量压缩处理。
例如某个分类变量共有19个水平,那么可以通过变量压缩,将水平合并为5个,再针对这5个水平设置4个哑变量,这样事情就变得非常的简单了,通常,我会用决策树去实现这个过程。
SAS构建逻辑回归模型时会使用CLASS语句去告诉软件该变量为分类变量,同时,SAS也会自动生成对应的N-1个哑变量,而回归模型则需手动设置生成哑变量,这个环节与回归模型相比,逻辑回归模型更加简单便捷。
变量压缩
的原则
变量压缩遵循的基本原则为:将缺乏变异性的 数据分类 压缩处理掉。
以绩效等级为例,Y为0-1形式的二值型数据,如果数据处于第二个绩效等级,则Y=0的概率为100%,即这个绩效等级的方差为0,这意味着变量的随机性已经退化到仅剩一个数值,Y因缺乏变异而导致无法计算,即第二个绩效等级的分类水平明显会导致过度拟合。
这种情况下,通常需要将第二个绩效等级水平与其他水平进行合并处理。
我这样进行
水平合并
关于变量水平的合并,我会有两种合并思路:
- 将频次少的水平简单合并为一类,这种方式看上去简单粗暴,但其实经度降低并不大,变量水平依然不少;
- Y=1的概率越高,表明其越容易过度拟合,最优的情况为比例全在0.5左右,越靠近0.5说明变异性越好,可以依据每个水平Y=1的占比,将值接近1的观测划分为一类,这种方式可以通过快速聚类来实现。
变量水平的合并需要进行多次尝试,宗旨是力求变异性最大化,也就是P*(1-P)最大。合并的过程需要手动完成,需要将每一个分类变量拿出来后,逐一进行列联表分析,然后人工的去挑出没有变异的值后,再手动进行合并。