数值化:分类->数值
Ordinal Encoding
序号编码:使用一位序号编码类别
One-hot Encoding
独热编码:采用N位状态位对N个可能取值进行编码
- 在经典统计中,为避免完全多重共线性,状态位/哑变量会比取值数量少 1
优点
- 能处理非数值属性
- 一定程度上扩充了特征
- 编码后向量时稀疏向量:可以使用向量的稀疏存储节省空间
- 能够处理缺失值:高维映射方法中增加维度表示缺失
缺点
Binary Encoding
二进制编码:先用序号编码给每个类别赋予类别 ID,然后将类别 ID 对应二进制编码作为结果
- 本质上利用二进制类别 ID 进行哈希映射,得到 0/1 特征向量
- 特征维度小于独热编码,更节省存储空间
Weight of Evidence Encoding
WOE 编码:以分类变量各取值的 WOE 值作为编码值
- $\%B_i, \%G_i$:分类变量取第 $i$ 值时,预测变量为 B 类、G 类占所有 B 类、G 类比例
- $#B_i, #B_T$:分类变量取第 $i$ 值时,预测变量为 B 类占所有 B 类样本比例
- $#G_i, #G_T$:分类变量取第 $i$ 值时,预测变量为 G 类占所有 G 类样本比例
优势
分类化/离散化:数值->分类
- 分类型变量本质上无法建模,因为取值从含义上无法进行数值计算
- 将数值型映射为分类型,往往只是中间步骤,最终会将分类型取值映射回数值型
离散化综述
模型使用离散特征、连续特征,是“海量离散特征+简单模型”、“少量连续特征+复杂模型”的权衡
- 海量离散特征+简单模型:难点在于特征工程,成功经验可以推广,可以多人并行研究
- 少量连续特征+复杂模型:难点在于模型调优,不需要复杂的特征工程
一般的,连续特征对预测结果影响不会突变,合理的离散化不应造成大量信息丢失
- 且若特征存在突变,模型将难以拟合(线性模型尤其)
- 反而更应该离散化为多个分类特征,方便引入非线性
事实上,根据Cover定理,离散化增加特征维度类似于投影至高维,更可能得到较优模型(也更容易过拟合)
- 极限角度,对所有特征、取值均离散化,则可以得到完全可分模型(除特征完全一样分类不同)
描述角度
supervised vs. unsupervised:是否使用分类信息指导离散化过程
- 无监督
- 如:等距、等频划分
- 无法较好的处理异常值、不均匀分布
- 有监督
- 利用分类信息寻找合适切分点、间隔
- 根据使用分类信息的方式有许多种
dynamic vs. static:离散化、分类是否同时进行
global vs. local:在特征空间的局部还是全局进行离散化
spliting vs. merging/top-down vs. bottom-up:自顶向下划分还是自底向上合并
direct vs. incremental:直接根据超参数确定分箱数量还是逐步改善直到中止准则
典型过程
- sort:排序
- evaluate:评估分割点
- split or merge:划分、合并
- stop:停止离散化
评价
- Simplicity:可用切分点数量衡量简单性
- Consistency:可以通过最小不一致数量衡量一致性
- 不一致:样本具有相同的特征取值,但分类不同
- 分箱最小不一致数量则为,箱内样本数量减最大类别数量
- Accuracy:可通过分类器进行交叉验证的准确率衡量
优势
方便工业应用、实现
- 离散特征的增加、减少容易,方便模型迭代
- 特征离散化处理缺失值、异常值更方便,可直接将其映射为某取值
- 数值化后可指定取值类型,如:one-hot编码为为稀疏向量
方便引入历史经验
- 可以自由调整离散化结果,结合机器学习和历史经验得到最终的离散化结果
模型更稳健
- 模型不再拟合特征具体值,而是拟合某个概念,能够对抗数据扰动,更稳健
- 对异常数据鲁棒性更好,降低模型过拟合风险
- 某些场合需要拟合参数值更少,降低模型复杂度
(引入)非线性提升模型表达能力
- 利用经验、其他信息将数值特征分段,相当于引入非线性,提升线性模型表达能力
- 方便引入交叉特征,提升模型表达能力
适合场景
离散化特征更适合 LR 等线性模型
- 如下离散化优势:方便引入非线性等
- 模型中所有特征都会被考虑,考虑细节、个体(包括 $L_1$ 范数也是被考虑后剔除)
GBDT 等树、抽样模型则不适合
- 特征离散化后,由于抽样误差的存在,可能存在某些离散特征对样本预测能力非常强,非线性模型容易给这些特征更大权重,造成过拟合
- 如:刚好抽取的 1000 个样本中某离散特征取值为 1 者全为正样本
- 树模型每次使用一个特征划分节点,特征数量较多不利于模型训练
- 若单个离散化特征预测能力不强,由于树深度限制,只有少量特征被作为划分依据,模型可能不收敛、表达能力更差
- 若单个离散化特征预测能力强,连续特征也应该也有较好效果
无监督
- 无监督分箱仅仅考虑特征自身数据结构,没有考虑特征与目标之间的关系
等频/等距/经验分箱
分箱逻辑
- 等频分箱:排序后按数量等分
- 避免离散化后特征仍然为长尾分布、大量特征集中在少量组内
- 对数据区分能力弱
- 等距分箱:取值范围等分
- 经验分箱
分箱数量、边界超参需要人工指定
- 根据业务领域经验指定
- 根据模型指定:根据具体任务训练分箱之后的数据集,通过超参数搜索确定最优分桶数量、边界
分箱经验、准则
- 若组距过大,组内属性取值差距过大
- 逻辑上分类不能够代表组内全部样本,组内取值影响可能完全不同
- 若组距过小,组内样本过少
- 随机性太强,不具备统计意义上说服力
- 特征影响跳变过多
聚类分箱
有监督
Binning:1R 分箱
- 分箱逻辑、步骤
- 将样本排序,从当前位置开始
- 初始化:以允许的最少样本作为一箱,将箱内最多类别作为箱标签
- 扩展:若下个样本类别与箱标签相同,则划至箱内
- 重复以上,得到多个分箱
- 将相邻具有相同标签的箱合并,得到最终分箱结果
Splitting
- 基于信息熵的 split,具体划分依据如下
- ID3:信息增益
- C4.5:信息增益比
- D2:
- Minimum Description Length Principle:描述长度
Merge分箱
- 基于依赖相关的 merge,具体划分依据如下
- Chimerge:使用卡方值衡量两个相邻区间是否具有类似分布,若具有类似分布则将其合并
具体算法
- 输入:目标分箱数量 $N$
- 初始化
- 将变量升序排列
- 为减少计算量,若初始分箱数量大于阈值 $N_{max}$,则利用等频分箱进行粗分箱
- 缺失值单独作为一个分箱
- 合并区间
- 计算每对相邻区间的卡方值
- 将卡方值最小区间合并
- 重复以上直至分箱数量不大于 $N$
- 分箱后处理
- 合并纯度为 1(只含有某类样本)的分箱
- 删除某类样本占比超过 95% 的分箱
- 若缺失值分箱各类样本占比同非缺失值分箱,则合并