背景
LR模型中,更偏向于对离散化特征进行训练,对于连续值特征,更多的情况下是将连续值特征离散化,再加入模型进行训练,原因如下:
- 计算快,因为离散值向量会造就稀疏特征,最终导致稀疏向量的乘法运算,运算速度优于连续值的稠密向量乘法
- 迭代快(?待理解),离散特征的增减相对容易,易于模型的迭代升级
- 鲁棒性好,对异常值的敏感度没有直接用连续值来得严重,若是在一个划分区域内异常,离散化之后相当于没影响
- 更稳定,连续特征在变化时,对应的离散特征变化小甚至没有
- 增加了非线性,主要体现在两方面 1. 一个特征51,你离散化之后,变为0001,那么在lr模型中,每一位都有单独的权重,0001就可能有不同的权重,增加了非线性,2. 离散化后可以进行特征交叉,增加了非线性(?)
- 简化模型,与其让模型学习所有样本的连续值特征,不如让模型学习离散化后的有限的离散特征,降低了过拟合的风险(?)
方法
无监督型 (没有一个评估指标说这个分类方法的好坏)
等宽划分:指定n,按照等间隔的方法把连续特征map进间隔中
问题 - 对异常值敏感,某些异常值会导致划分区域发生变化,而使得间隔变大,分布不均。比如正常数据30到60,你原本只需要在30-60之间进行5份分隔,现在有个异常值300, 你若是在30-300之间5份分隔,那么后面的间隔基本没样本,不合理。
解决 - 根据样本选择合适的阀值,排除阀值外的异常值-
等频划分:将样本分成n等份,每份数据个数一致。
image.png
age_bin_1是等频; age_bin_2是等间
直观法:经验
有监督型
(卡方检验,信息增益)
1R(?)
卡方检验
-- 超级像图像领域的segmentation
分裂:找一个值T,分成两个区间,看两个区间下,这个目标值的分布是否有明显差异,有差异且高于一个阀值,就分裂。这个T点可以是差异最明显的点。然后一直这样知道划分到不满足阀值的时候。
合并:挨着看临近的点,如果差异不大就合并,合并到临近点的差异足够明显,不能够合并
(受图像的segmentation启发,其实可以先分裂再合并)信息增益
就是类似决策树的信息增益的特征选择一样,在分裂点看分裂前后的信息增益,最后找到最大的点划分。
合并就是当增益小于某个阀值就合并。