特征工程

本笔记参考二水马的rebirth。

1. 特征选择

1.1 特征来源

  1. 业务已整理好的数据,需要找出适合问题的特征
  2. 高级特征,需要从业务特征中去寻找⾼级数据特征

1.2 选择合适的特征

第⼀步是找到该领域懂业务的专家,让他们给⼀些建议,这些特征就是我们的特征的第⼀候选集。

在尝试降维之前,有必要用特征工程的方法选择出较重要的特征结合,这些方法不会用到领域知识,而仅是统计学的方法。

特征选择方法一般分为三类:

  • 过滤法选择特征

    1. 方差筛选:方差越大的特征,则认为是比较有用;若方差较小,如小于1,则该特征对算法作用没那么大。若某特征方差为0,则其所有样本的特征取值相同,应当舍弃该特征。实际应用中,应指定方差阈值,当方差小于该阈值特征则筛选掉。
    2. 相关系数:主要⽤于输出连续值的监督学习算法中。我们分别计算所有训练集中各个特征与输出值之间的相关系数,设定⼀个阈值,选择相关系数较⼤的部分特征。
    3. 假设检验:如卡方检验。卡方检验可以检验某个特征分布和输出值分布之间的相关性。除此之外,还可以用F检验和t检验。
    4. 互信息:从信息熵角度分析各个特征和输出值之间的关系评分。互信息值越大,说明该特征和输出值之间的相关性越⼤,越需要保留。
  • 包装法选择特征

    思想是选择⼀个⽬标函数来⼀步步的筛选特征。最常⽤的包装法是递归消除特征法(recursive feature elimination, 以下简称RFE)。递归消除特征法使⽤⼀个机器学习模型来进⾏多轮训练,每轮训练后,消除若干权值系数的对应的特征,再基于新的特征集进⾏下⼀轮训练。

    经典方法:SVM-RFE方法。以⽀持向量机来做RFE 的机器学习模型选择特征,假设有n 个特征。

    1. 它在第⼀轮训练的时候,会选择所有的特征来训练,得到分类的超平⾯$wx+b$;
    2. 选择出$w$中分量的平⽅值$w_i^2$最小的那个序号$i$对应的特征,将其排除;
    3. 对剩下的$n-1$个特征和输出值,重新训练SVM,直到剩下的特征数满足需求。
  • 嵌入法选择特征

    1. 使⽤全部特征,使⽤L1 正则化和L2 正则化来选择特征。正则化惩罚项越⼤,那么模型的系数就会越⼩。
    2. 当正则化惩罚项⼤到⼀定的程度的时候,部分特征系数会变成0,当正则化惩罚项继续增⼤到⼀定程度时,所有的特征系数都会趋于0。⼀部分特征系数会更容易先变成0,这部分系数就是可以筛掉的。即选择特征系数较⼤的特征。
    3. ⽤的L1 正则化和L2 正则化来选择特征的基学习器是逻辑回归,此外也可以使⽤决策树或者GBDT。
    4. 可以得到特征系数coef或者得到特征重要度(feature importances)的算法才可以作为嵌入法的基学习器。

1.3 寻找高级特征(交叉特征)

⽐如有车的路程特征和时间间隔特征,我们就可以得到车的平均速度这个⼆级特征。根据车的速度特征,我们就可以得到车的加速度这个三级特征,根据车的加速度特征,我们就可以得到车的加加
速度这个四级特征。也就是说,⾼级特征可以⼀直寻找下去。

  1. 特征加和:计算累积
  2. 特征之差:计算增量
  3. 特征乘积:价格与销量得到营业额
  4. 特征除商:销售额除以商品数量得到均价

1.4 特征选择小结

特征选择是特征⼯程的第⼀步,它关系到机器学习算法的上限。因此原则是尽量不错过⼀个可能有⽤的特征,但是也不滥⽤太多的特征

2. 特征表达

2.1 缺失值处理

连续值:均值填充、中位数填充

离散值:选择所有有该特征值的样本中出现最频繁的类别值,填充缺失值。

2.2 特殊特征处理

  1. 日期时间
    • 时间差值法:计算出所有样本的时间到某⼀个未来时间(或过去时间)之间的数值差距,转换成连续值
    • 细分特征:年、⽉、⽇、周、时,将⼀个时间特征转化为若⼲个离散特征,这种⽅法在分析具有明显时间趋势的问题⽐较好⽤。
    • 权重法:即根据时间的新旧得到⼀个权重值。⽐如对于商品,三个⽉前购买的设置⼀个较低的权重,最近三天购买的设置⼀个中等的权重,在三个⽉内但是三天前的设置⼀个较⼤的权重。还有其他的设置权重的⽅法,这个要根据要解决的问题来灵活确定。
  2. 地理位置
    • 细分特征:城市、区县、街道
    • 经纬度:如果需要判断用户分布区域,一般处理成连续值比较好,这时可以将地址处理成经度和纬度的连续特征。

2.3 离散特征的连续化处理

  1. one-hot向量
  2. embedding

2.4 离散特征的离散化处理

  1. one-hot向量
  2. dummy coding
  3. 根据背景知识划分:⽐如,商品的销量对应的特征,原始特征是季节春夏秋冬。可以将其转化为淡季和旺季这样的⼆值特征,⽅便建模。

2.5 连续特征的离散化处理

  1. 等频分桶
  2. 等值分桶
  3. GBDT+LR

3. 数据归一化

3.1 为什么需要数据归一化

  1. 归⼀化后加快了梯度下降求最优解的速度
  2. 归⼀化有可能提⾼精度

3.2 常见数据归一化方法

  1. 线性归一化:

    缺点:一旦测试集有特征小于min或大于max的数据,则会导致max和min发生变化,需要重新计算。

  2. 标准化:z-score标准化。

  1. 非线性归一化:取指数、对数、正切、等频分桶、等值分桶

  2. L1/L2范数标准化:如果只是为了统⼀量纲,那么可以通过L2 范数整体标准化。

  3. 中心化:PCA 降维时候的预处理,均值变为零,⽅差不变

3.3 PCA(主成分分析)

两种推导:

  1. 样本点到这个超平面的距离足够近
  2. 样本点在这个超平面的投影能尽可能地分开

PCA算法流程:

image.png

问题:能否用PCA 代替隐含层的降维操作

假设我们有⼀个如下图所⽰的隐藏层。隐藏层在这个⽹络中起到了⼀定的降维作⽤。假如现在我们⽤另⼀种维度下降的⽅法,⽐如说主成分分析法(PCA) 来替代这个隐藏层。那么,这两者的输出效果是⼀样的吗?

image.png

答:不一样。因为PCA 提取的是数据分布⽅差⽐较⼤的⽅向,隐藏层可以提取有预测能⼒的特征。