首页 > TensorFlow教程 > 机器学习 阅读数:15

特征工程的主要内容

特征工程的目的是把原始的数据转换为模型可用的数据,主要包括三个子问题:特征构造、特征提取和特征选择。
  • 特征构造一般是在原有特征的基础上做“组合”操作,例如,对原有特征进行四则运算,从而得到新的特征;
  • 特征提取指使用映射或变换的方法将维数较高的原始特征转换为维数较低的新的特征;
  • 特征选择即从原始的特征中挑选出一些具有代表性、使模型效果更好的特征。

其中,特征提取和特征选择最为常用。

特征提取

特征提取又叫作“降维”,目前线性特征的常用提取方法有主成分分析(Principle Component Analysis,PCA)、线性判别分析(Linear Discriminant Analysis,LDA)和独立成分分析(Independent Component Analysis,ICA)。

1) 主成分分析

主成分分析是一种经典的无监督降维方法,主要思想是用“减少噪声”和“去冗余”来降维。具体来说:
  • “减少噪声”指在将维数较高的原始特征转换为维数较低的新特征的过程中保留维度间相关性尽可能小的特征维度,这一操作实际上是借助协方差矩阵实现的;
  • “去冗余”指把“减少噪声”操作之后保留下来的维度进行进一步筛选,去掉含有“特征值”较小的维度,使得留下来的特征维度含有的“特征值”尽可能大,特征值越大,方差就会越大,进而所包含的信息量就会越大。

主成分分析完全无参数限制,也就是说,结果只与数据有关,而用户是无法进行干预的。这是它的优点,同时也是缺点。针对这一特点,Kernel-PCA 被提出,使得用户可以根据先验知识预先对数据进行非线性转换,因而成为当下流行的方法之一。

2) 线性判别分析

线性判别分析是一种经典的有监督降维算法,主要思想是借助协方差矩阵、广义瑞利熵等实现数据类别间距离的最大化和类别内距离的最小化。二分类线性判别分析中,二维特征是通过一系列矩阵运算实现从二维平面到一条直线的投影的,同时借助协方差矩阵、广义瑞利熵等实现类间数据的最大化与类内数据的最小化。

从二分类推广到多分类,是通过在二分类的基础上增加“全局散度矩阵”来实现最终目标优化函数设定的,从而实现类间距离的最大化和类内距离的最小化。显然,由于它是针对各个类别做的降维,所以数据经过线性判别分析降维后,最多只能降到原来的类别数减 1 的维度。

因此,线性判别分析除实现降维外,还可以实现分类。另外,对比主成分分析可以看出,线性判别分析在降维过程中着重考虑分类性能,而主成分分析着重考虑特征维度之间的差异性与方差的大小,即信息量的大小。

3) 独立成分分析

独立成分分析的主要思想是在降维的过程中保留相互独立的特征维度。这比主成分分析更进一步,在保证特征维度之间不相关的同时保证相互独立。不相关只是保证了特征维度之间没有线性关系,而并不能保证它们之间是独立的。

独立成分分析正因为以保证特征维度之间的相互独立为目标,往往会有比主成分分析更好的降维效果,目前已经被广泛应用于数据挖掘、图像处理等多个领域。

特征选择

不同的特征对模型的影响程度不同,我们要选择出对模型影响大的特征,移除不太相关的特征,这个过程就是特征选择。特征选择的最终目的是通过减少冗余特征来减少过拟合、提高模型准确度、减少训练时间。特征选择是对原始特征取特征子集的操作,而特征提取则是对原始特征进行映射或者变换操作,以得到低维的新特征。

特征选择在特征工程中十分重要,往往可以在很大程度上决定模型训练结果的好坏。常用的特征选择方法包括过滤式(Filter)、包裹式(Wrapper)及嵌入式(Embedding)。

1) 过滤式

过滤式特征选择一般通过统计度量的方法来评估每个特征和结果的相关性,以对特征进行筛选,留下相关性较强的特征。其核心思想是:先对数据集进行特征选择,再进行模型的训练。过滤式特征选择是独立于算法的。

正因此,过滤式特征选择拥有较高的通用性,可适用于大规模数据集;也正因此,过滤式特征选择在分类准确率上的表现欠佳。常用的过滤式特征选择方法有 Pearson 相关系数法、方差选择法、假设检验、互信息法等,这些方法通常是单变量的。

2) 包裹式

包裹式特征选择通常把最终机器学习模型的表现作为特征选择的重要依据,一步步筛选特征。这一一步步筛选特征的过程可以被看作目标特征组合的搜索过程,而这一搜索过程可应用最佳优先搜索、随机爬山算法等。

目前比较常用的一种包裹式特征选择法是递归特征消除法,其原理是使用一个基模型(如随机森林、逻辑回归等)进行多轮训练,每轮训练结束后,消除若干权值系数较低的特征,再基于新的特征集进行新的一轮训练。

由于包裹式特征选择是根据最终的模型表现来选择特征的,所以它通常比过滤式特征选择有更好的模型训练表现。但是,由于训练过程时间久,系统的开销也更大,一般来说,包裹式特征选择不太适用于大规模数据集。

3) 嵌入式

嵌入式特征选择同样根据机器学习的算法、模型来分析特征的重要性,从而选择比较重要的 N 个特征。与包裹式特征选择最大的不同是,嵌入式特征选择将特征选择过程与模型的训练过程结合为一体,这样就可以更高效且快速地找到最佳的特征集合。

简而言之,嵌入式特征选择将全部的数据一起输入模型中进行训练和评测,而包裹式特征选择一般一步步地筛选和减少特征进而得到所需要的特征维度。常用的嵌入式特征选择方法有基于正则化项(如 Lasso)和基于树模型的特征选择(如 GBDT)。