特征工程知识点整理概述(一)

特征归一化

为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。

数值类型特征常用归一化方法

最常用的方法主要有以下两种:

(1)线性函数归一化 (Min-Max Scaling)

它对原始数据进行线性变换,使结果映射到$[0,1]$的范围,实现对原始数据的等比缩放。归一化公式如下:

其中$X$为原始数据,$X{max}、X{min}$分别为数据最大值和最小值。

(2)零均值归一化(Z-Score Normalization)

它将原始数据映射到均值为0、标准差为1的分布上。具体来说,假设原始特征的均值为$\mu$、标准差为$\alpha$的分布上,那么归一化公式定义为:

数据归一化不是万能的。在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但对于决策树模型则并不适用。

类别型特征处理办法

类别型特征原始输入通常是字符串形式,除了决策树等少数模型能够直接处理字符串形式,对于逻辑回归、支持向量机等模型来说,类别型的特征必须经过处理转换成数值型特征才能正确工作。

常用的类别型特征处理方法如下:

序号编码

序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为低、中、高三档,并且“高>中>低”的排序关系。序号编码会按照大小关系对类别型特征赋予一个数值ID。

独热编码

独热编码通常用于处理类别间不具有大小关系的特征。对于类别取值较多的情况下使用独热编码需要注意以下问题。

  1. 使用稀疏向量来节省空间。在独热编码下,特征向量只有某一维取值为1,其他位置均取值为0。因此可以利用向量的稀疏表示有效地节省空间,并且目前大部分的算法均接受稀疏向量形式的输入。
  2. 配合特征选择来降低维度。高维度特征会带来几方面的问题。一是在K近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题;三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。

二进制编码

二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。

其他编码方式还有很多,比如Helmert Constrast、Sum Contrast、Polynomial Contrast、Backward Difference Contrast等。

组合特征

组合特征定义

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。

以逻辑回归为例,假设数据的向量特征为$X = (x_1,x_2,…,x_k)$,则有

其中$$表示$xi$和$x_j$的组合特征,$w{ij}$的维度等于$|x_i|\cdot|x_j|$,$|x_i|$和$|x_j|$分别代表第$i$个特征和第$j$个特征不同取值的个数。

对于推荐算法,若用户数量为$m$,物品数量为$n$,那么需要学习参数的规模为$m*n$。在互联网环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习$m*n$规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用k维的低维向量表示$(k<<m,k<<n)$

这里$w{ij}=x{i}^{‘} \cdot x{j}^{‘}$,$x{i}^{‘}$和$x_{j}^{‘}$分别表示$x_i$和$x_j$ 对应的低维向量。那么在推荐问题中,需要学习的参数的规模变为$m*k+n*k$,这其实等价于矩阵分解。这就是利用降维方法来减少两个高维特征组合后需要学习的参数。

怎样有效地找到组合特征

实际问题中并不是所有的特征组合都是有意义的。这里介绍一种基于决策树的特征组合寻找方法。于是,每一条从根节点到叶节点的路径都可以看成一种特征组合的方式。假设我们有4种特征组合方式,如果样本满足1,2特征组合方式,则其特征表示可以表示为$(1,1,0,0)$。

对于利用原始数据有效的构造决策树,我们可以采用基于boosting的GBDT梯度提升决策树,该方法的思想是每次都在之前构造的决策树的残差上构建下一棵决策树。

参考资料

  • 《百面机器学习》