特征工程简介

特征工程简介

在机器学习中,从原始信息中生成和选择特征被称为特征工程(Feature Engineering)或者特征抽取(Feature Extraction)。

为什么做特征选择

  1. 提升效果
    让分类更准确、泛化效果更好。因为特征的增多会大大增加分类算法求解的搜索空间;有效避免过拟合。
  2. 改善性能
    节省存储和计算开销。在数据处理和模型的训练过程中一般有很多参数可以调节,如数据时间窗口长度、特征离散化方法、正则化系数等,让从数据产生到得到最终模型的时间更短,速度的提升意味着可以尝试更多的参数,更优的参数会带来效果的改善,快速迭代是持续提升效果所需的关键技术能力之一。
  3. 更好的模型解释性
    可解释性不仅让我们对模型效果的稳定性有更多的把握,一个可读懂的模型所提供的知识也能为我们的业务运营等工作提供指引和决策支持。

特征的处理

特征的分类

从特征的 取值类型 看可以分为几类:

  1. 浮点数特征
  2. 离散值特征
  3. 二值特征
    二值特征是我们使用最多的一类特征。离散值特征和浮点数特征都可以转化为二值特征,这种转化可以看做是对空间的变换和升维,让原本线性不可分的空间变换为通过线性超平面可分的空间。
    ###特征的预处理
  • 缺失值的处理
    设置为均值、设置为众数、设置为unknown或者舍弃该特征
  • 异常值得检测和处理
    通过特征取值的分布情况可以较简单的识别异常取值、取分为点做上下限截断以及对特征值做分桶后做值平滑是简单易操作的异常值处理方法
  • 比例缩放
    直接使用浮点数特征,如果不同特征取值范围差异很大可能会造成严重的过拟合,所以需要把不同特征取值都映射到相同的范围内。最常用的两种方法
    1. min-max: x − x m i n x m a x − x m i n \frac{x-x_{min}}{x_{max}-x_{min}} xmaxxminxxmin x m i n x_{min} xmin是这个特征中最小值, x m a x x_{max} xmax是这个特征的最大值;
    2. z-score: x − μ σ \frac{x-\mu}{\sigma} σxμ μ \mu μ是这个特征的均值, σ \sigma σ是这个特征的方差。可以看出上面两种标准化方法都容易收到极大或者极小的特征值影响。取自然对数做比例缩放
  • 离散化
    直接对浮点数特征做离散化。互联网数据中的特征取值分布很多符合离散化方法,因为很多分布符合幂律分布。一般通过equal-frequency分桶得到的特征比用equal-interval分桶得到的特征有更好的区分性。此外还有基于信息熵和假设检验的方法
  • 截断
    如果取值过多放入模型可能达不到预期的效果需要截断,一般首先会根据取值的权重排序,截断方法有
    1. 简单的取权重最大的前N个
    2. 从权重最大的开始往下取
    3. 当前后两个取值的权重比值超过一定阈值时终止
    4. 前面三种组合使用
  • 二值化
    通过one hot encoding可以把N个取值的离散化特征变化为N个二值特征

特征和特征间的运算

  • 补集
  • 笛卡尔集
  • 交集
  • 减运算
    更为复杂的可以使用多层sigmoid函数网络加工原始特征

特征选择的常用方法

Filter

Filter这类方法选定一个指标来评估特征,根据指标值来对特征排序,去掉达不到足够分数的特征。这类方法只考虑特征X和目标Y之间的关联,相对另两类特征选择方法wrapper和embedded计算开销小。指标的选择至关重要。
统计的角度

  • 相关系数
    皮尔森相关系数最为常用。样本量不同或者取值范围不同的特征之间的相关系数不一定可以作比较。皮尔森系数只能衡量线性相关性,随机变量X和Y不相关不等于二者独立,只表示线性分类器不能单独利用这两个特征将样本区分。
  • 假设检验
    将特征X和目标Y之间做独立假设,选择检验方法计算统计量,作出统计推断。

信息论角度

  • 互信息
    M I ( X , Y ) = H ( Y ) + H ( X ) − H ( Y , X ) = − ∑ i , j P ( y j , X i ) l o g 2 P ( y j , X i ) P ( y j ) P ( x i ) MI(X,Y)=H(Y)+H(X)-H(Y,X)=-\sum_{i,j}P(y_j,X_i)log_2\frac{P(y_j,X_i)}{P(y_j)P(x_i)} MI(X,Y)=H(Y)+H(X)H(Y,X)=i,jP(yj,Xi)log2P(yj)P(xi)P(yj,Xi),函数 H ( ⋅ ) H(\cdot) H()表示信息负熵,函数 P ( ⋅ ) P(\cdot) P()表示概率
  • 信息增益
    I G ( Y , X ) = H ( Y ) − H ( Y ∣ X ) IG(Y,X)=H(Y)-H(Y|X) IG(Y,X)=H(Y)H(YX)
  • 最小描述长度

Wrapper

wrapper和filter不同,不仅考虑特征X和目标Y之间的关联性,还从添加这个特征后模型最终的表现来评估特征的好坏。wrapper需要选定一种评估模型效果的指标,如AUC、MAE、MSE。加入我们有N个特征,出去空集外这N个特征可以组成 2 N − 1 2^N-1 2N1个集合,为了减少算法开销,考虑前向特征选择和后向特征选择这样的贪心策略。

离线评估救过是重要的参考指标,实际应用还是通过A/B测试实验来判断特征的效果,线上线下评估的一致性和影响因素是另一个值得研究的问题

Embedded

filter和wrapper方法和算法本身的实现无关,可以与各种算法结合使用,而embedded特征选择与算法本身紧密结合。在模型训练过程中完成特征的选择,例如决策树算法每次都优先选择分类能力最强的特征;逻辑回归的优化目标函数在对数似然的基础上加上对权重L1或L2等惩罚项会让信号弱的特征权重减小至0

一些优化算法天然就适合在每步判断一个维度特征的好坏,所以可以在学习器设计时融合特征选择功能。

小结

过滤式简单快速,可以知道特征的预处理和特征初选;嵌入式是学习器本身具备的能力

来源特征选择-简介

你可能感兴趣的:(总结归纳,特征工程)