特征离散化方法

离散化是数据预处理的关键步骤,它增强了模型的稳定性和表达能力,通过等宽、等频、聚类等方式实现。离散化能减少异常值影响,便于特征交叉和模型迭代,并适合某些算法如决策树。卡方分箱、最小熵法、bestKS和MDLP等有监督和无监督方法用于确定最佳分箱策略。
摘要由CSDN通过智能技术生成

一、为什么要离散化?

  1. 离散特征的增加和减少都很容易,易于模型的快速迭代;
  2. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
  3. 离散化后对异常数据有很强的鲁棒性,减少异常值的干扰;
  4. 单变量离散化为N个后,每个变量有单独的权重,相当于引入的非线性,能提高模型的表达能力,加大拟合,比如,用区间表示收入和年龄,这种分段的能力为模型带来类似『折线』的能力,也就是所谓的非线性;
  5. 离散化后可以进行特征交叉,由加法的变量变成乘法的变量,即特征交叉,类似于决策树,进一步引入非线性,提升表达能力;
  6. 特征离散化后,模型会更稳定,不会因为数值变动轻易改变所处的区间。
  7. 离散化以后,在超高维的特征空间中,很多问题就变为线性可分问题,从而可以极大地提高分类器的能力,简化了逻辑回归模型的作用,降低了拟合的风险。
  8. 一系列算法(比如决策树)只能应用于离散型数据,使得离散化处理成为必要,而离散化又使很多算法的应用范围扩展了。
  9. 连续特征离散化的基本假设,是默认连续特征不同区间的取值对结果的贡献是不一样的,可以将变量的可取值变少(更便于分析)。
  10. 将所有变量变换到相似的尺度上。

对于LR这类的模型来说,假设基本如下:
1、对于连续特征x来说,在任何一个取值的邻域附近,这个特征对预测目标y的影响也在一个足够小的邻域内变化。比如人年龄对点击率的影响,x0=30岁假设会产生一定的影响,那么x=31或者29岁,这个影响和x0=30岁的影响差距不会太大。
2、x对y的影响,这个函数虽然局部比较平坦,但是不太规律,如果你知道这个影响是个严格的直线(或者说近似于一个参数不太多的函数),显然也没必要去做离散化。
离散化的思想:当y=0/1 ,x 是个连续值,在数轴上切若干段,每一段观察训练样本里y为1的比例,以这个比例作为该段上y=f(x)的值。

模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。

二、离散化的方法
连续变量的划分,可以通过人为先验知识划分,也可以通过训练单特征的决策树桩,根据Information Gain/Gini系数等来有监督的划分。

连续变量分箱有主要分为两大类:有监督型和无监督型分箱
无监督分箱包括:
1). 等宽分箱:按照相同宽度将数据分成几等份。缺点是受到异常值的影响比较大。 pandas.cut方法可以进行等宽划分。
2). 等频分箱:将数据分成几等份,每个等份包含大致相等的实例数量,pandas.qcut方法可以进行等频划分。
3). 聚类分箱:k均值聚类法将观测值聚为k类

有监督型分箱包括:卡方分箱、最小熵法分箱、bestKS分箱、1R方法、MDLP分箱
1、卡方分箱
卡方分箱属于自底向上的合并的方法,首先将数值特征的每个不同值看做一个区间对每对相邻区间计算卡方统计量,设定一个阈值,如果小于阈值就合并,递归进行直到找不到卡方统计小于阈值的时候停止。
这样做的理由是:如果两个相邻的区间具有非常类似的类分布,则这两个区间可以合并;否则,它们应当保持分开。此处衡量分布相似性的指标就是卡方值。卡方值越低(P值较大),表明它们具有相似的类分布,卡方值较大(P值较小),说明两个数之间有差异较大。
卡方的分箱的步骤:
1)、排序
2)、合并阶段

(1) 计算每一对相邻的组,计算卡方值。

(2) 对其中最小卡方值的一对组合成为一组。

(3) 不断重复(1)、(2),直到计算出的卡方值都不低于设定的阈值,或者分组达到一定的条件(如最小分组数5,最大分组数8)。

2、最小熵值法分箱

最小熵值分箱采用的是典型的自顶向下分箱方法,将待分箱的特征全部放到一个箱子里,然后根据最小熵值最特征进行分裂,和决策树的叶节点划分一样,只不过决策树中是先根据信息增益选择待特征,在对选中的特征进行分裂,这里是只对特征进行分裂。
最小熵值分箱的基本思想:
计算每个分箱内因变量各个类别占分箱总用户数的比例,计算熵值-pij*logpij,然后各类别熵值进行求和,如果该分箱内各类别比例相等,则该熵值和达到最大值,如果该分箱内因变量只有一个类别,则该分箱的熵值和达到最小值。通过计算各个分箱的熵值和并进行求和,得到该特征的总熵值。需要使总熵值达到最小,也就是使分箱能够最大限度的区分因变量的各个类别。
最小熵值法分箱步骤:
1)、统计并排序(跟卡方分箱一样)

2)、依次将待分箱变量的每个取值作为划分点,分别计算两个子集的熵并求和。

3)、选择求和之后的熵的最小值,作为划分点。

4)、对划分后的两个子集重复2、3步骤;

3、bestKS分箱
bestKS分箱也是自顶向下的分箱方法,采用KS值来分箱。
KS值描述的是数据中好坏样本累计占比之间的差距 。KS值越大,表示该变量的可区分度越高,越能将正,负样本区分开来。
KS值计算:
1). 计算每个特征区间的好样本和坏样本数;
2). 计算每个特征区间的累计好样本数占总好样本数的比率和累计坏样本数占坏样本数比率。
3). 计算比率差的绝对值,最大值就是KS值。

4、Mdlp分箱
基于熵(或者叫基于信息增益)的离散化分箱方法最好的就是MDLP(Minimal Description Length Principle最短描述长度原则)方法。基本思想是:如果离散后的输入变量对输出变量取值的解释能力显著高于离散之前,那么这样的离散是有意义的。所它是利用信息增益最大化的方法寻找连续变量的最优切点,当分割点确定后,将变量分为两份数据集,再在这两部分数据集中用同样的方法循环切分,直到信息增益的值小于停止标准为止。
MDLP算法的具体步骤为:
1). 找到最优的切分点。选择切分点的标准就是信息增益最大;
2). 分别计算不切分变量情况下的最小描述长度和按照最优点切分以后的最小描述长度;
3). 比较两者最小描述长度的大小,如果前者的最小描述长度值大于后者,那么变量就应该需要切分,否则就放弃切分变量;
4). 切分后的每一段又可以重复上述的步骤并最终得到所有的切分点。

参考https://www.zhihu.com/question/31989952/answer/54184582

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值