2.3 特征工程
特征工程就是一个从原始数据提取特征的过程,目标是使这些特征能表征数据的本质特点,使基于这些特征建立的模型在未知数据上的性能,可以达到最优、最大限度地减少“垃圾进,垃圾出”。特征提取得越有效,意味着构建的模型性能越出色。
特征工程主要包括特征构建(Feature Construction)、特征选择(Feature Selection)、特征提取(Feature Extraction)。
2.3.1 特征构建
特征构建指的是从原始数据中构建新的特征,在实际应用中需要手工构建。首先研究真实的数据样本,思考问题的形式和数据结构以及如何更好地应用到预测模型中。
特征构建考验的是分析人员的特征洞察能力和分析能力,以及能否从原始数据中找出一些有意义的显著特征。特征构建针对时间型、数值型、文本型等不同种类的输入数据,结合数据的特点,通过分解或切分的方法基于原来的特征创建新特征,从而提高数据的预测能力。
特征生成前的原始数据可以分单列变量、多列变量、多行样本(时间序列)等三种情况,对这三类数据进行特征生成时可以遵循以下方法。
1. 单列变量
单列变量方法指基于单列变量生成,即对单个变量进行转换、衍生,单列变量按照类型可以分为字符型、数值型、时间(日期)型,按照变量的样本内容格式可以分为离散型和连续型,其中字符型一般是离散的,而数值型和日期型变量则是连续的。
(1)针对离散型变量可以再细分,不同类型的变量在进行特征构建时的常规方法如下。
① 类别型:如产品型号、所在地区等,当类别较少时可以变换为哑变量(Dummy Variable),当种类较多时可以对变量的值进行归类,向上钻取,例如将省份划为区域,然后再进行哑变量转换。
② 顺序型:如用户等级,离散型变量可以将其转化为连续变量,例如将用户等级中的初级、中级、高级转化为0、1、2就可以构建成连续变量。
③ 等距型/等比型:如温度,有一定的顺序且间隔相等,也可以将其转化为连续变量。
(2)针对连续型变量,可以将其转化为离散变量,也可转为另外形式的连续变量,转化方法如下。
① 分布变换,常见的有对数(log)或指数(exp)变换、平方根和平方变换、立方根和立方变换等。
② 量纲统一,常用标准化,如Z分数(一个数与平均数的差再除以标准差),转化到[0,1]区间或[-1,1]区间。
向离散变量转化时,按得到的值的个数可以分为两类。
① 二值化(Binary),即最终得到的值是0或者1。例如考试成绩阈值60分,大于60分为“及格”,记为1;小于60分为“不及格”,记为0。
② 分箱(Binning),分箱操作可以分为等距离分箱、等数量分箱、按分布分箱。
2. 多列变量
多列变量组合成一列变量,包括组合运算和降维,即由多列变量衍生出一列变量,可以分为“显式”运算和“隐式”运算。前者是指变换过程是可解释的,例如,变量A表示设备30天工作时间,变量B表示设备在30天内的报警次数,衍生变量C表示平均每周的报警次数。“隐式”运算是指得到的新变量和原来的变量的关系难以用一个函数表达出来,例如,特征降维中常用的主成分分析(PCA)或线性判别分析(LDA)等。
3. 多行变量
多行是将一个样本的多行时间序列数据统计后得到一行数据,即在时间尺度上压缩,时间序列的数据可以提取三类特征。
(1)整体特征,整体的统计情况。例如,单个设备近一个月的耗电量等。
(2)局部特征,即在整体的时间区间内按其他分类变量或者按不同时间颗粒度计算得到的数据。例如,该用户近一年内购买不同品类的交易金额,或者该用户按季度下单情况。
(3)趋势特征,衡量事物发展趋势的特征。例如,设备本季度和上季度的环比故障情况。
2.3.2 特征选择
特征选择的目的主要是降维,从特征集合中挑选一组最具统计意义的特征子集来代表整体样本的特点。特征选择的方法是用一些评价指标单独地计算出各个特征与目标变量之间的关系。常见的有Pearson相关系数、基尼指标(Gini-index)、信息增益(Information Gain)等,下面以Pearson相关系数为例,它的计算方式如下:
其中,x属于χ,χ表示一个特征的多个观测值,y表示这个特征观测值对应的类别列表,分别是x、y的平均值。Pearson相关系数的取值在0~1,如果使用这个评价指标来计算所有特征和类别标号的相关性,得到这些相关性之后,将它们从高到低进行排列,然后选择其中一个子集作为特征子集,接着用这些特征进行训练,并对效果进行验证。
特征选择的过程是通过搜索候选的特征子集,对其进行评价,最简单的办法是穷举所有特征子集,找到错误率最低的子集,但是此方法在特征数较多时效率非常低。按照评价标准的不同,特征选择可分为过滤方法(Filter method)、封装器方法(Wrapper method)和嵌入方法(Embeded method)。
过滤方法主要基于特征间的相关性作为标准实现特征选择,即特征与目标类别相关性要尽可能大,因为一般来说相关性越大,分类的准确率越高。这一算法的优点是从数据集本身学习,与具体算法无关,所以更高效,也具有较高的稳健性。其中相关性度量方法有距离、信息增益、关联性、一致性等。封装方法通过尝试用不同的特征子集对样本集进行分类,将分类的精度作为衡量特征子集好坏的标准,经过比较选出最好的特征子集。这一方法属于贪心算法,常用的有逐步回归、向前选择和向后选择等。这一算法的复杂度很高,每次验证都要重新训练和验证,当特征数量较多时,算法的计算时间会较长。嵌入方法是模型在运行过程中自主选择或忽略某些特征,即特征的选择是嵌入在算法中。其中最典型的是决策树分类算法,例如在使用决策树进行分类时,应用随机森林实现特征筛选和过滤。
2.3.3 特征提取
特征提取是将原始数据转换为具有统计意义和机器可识别的特征。例如机器学习无法直接处理自然语言中的文本,这时就需要将文字转换为数值特征(如向量化)。或者在图像处理领域,将像素特征提取为轮廓信息也属于特征提取的应用。所以说特征提取关注的是特征的转换方式,即尽可能符合机器学习算法的要求。除此之外,还可以通过对现有特征进行加工的方法实现特征的创建,即特征提取可能是原特征的某种混合。
特征提取和特征选择都有可能使特征数量减少,但是特征选择是原特征的子集,而特征提取则不一定。另外,特征提取技术往往与具体领域相关性比较大,一旦跨领域,很多技术需要重新开发。