在数据分析的实践中,存在着这样一个共识:数据和特征决定了机器学习的上限,而应用模型和算法只是在逼近这个上限而已。特征的提取工作将直接影响对原始数据利用的效率,因而对最终的分析结果、模型表现也有着至关重要的影响。特征工程在数据挖掘、机器学习、深度学习中具有广泛的应用,通常作为数据分析、建模的前置环节,用来为特定的分析模型提供输入特征(见图)。特征工程的主要目标在于尽可能从原始数据中提取对后续分析建模有价值的特征,从而最大化对原始数据的挖掘利用,提高模型效果。
特征工程通常广义地指在原始数据上进行特征加工的多种活动,其概念内涵广泛,包括:①数据预处理。例如对数值型数据的标准化、归一化,对离散数据标签的编码,对缺失数据的清洗、插补等。②特征构建。基于原始数据构造出特征,通过新特征对数据信息进行抽象、提炼。特征构建是特征工程中的重要组成部分,通过构造特征,将有助于提高对原始数据挖掘信息的效率,并通过特征得到可解释性强的分析指标,拓展分析的广度和深度。在数据建模中,特征构建的好坏往往对模型效果有着直接影响。③特征筛选。当输入特征过多时,可能出现特征的冗余。一方面,冗余的特征将带来不必要的计算开销,降低计算效率。另一方面,冗余特征之间可能存在较为严重的线性相关,可能对后续模型计算产生负面干扰。因此可利用特征筛选,保留对数据代表性较强,并且相互之间相关性较低的一组特征。④降维。对特征过多的情况,另一种处理思路为降维,即将高维特征通过低维向量进行替代表示。降维方法产生的低维向量并非原始高维特征向量的子集,因此与特征筛选不同。主成分分析法是一种常用的降维方法,可通过若干个主成分对原始的多个特征进行表示,并且主成分之间相关性较低,有利于后续建模分析。