在机器学习中,数据预处理主要是一些数据的ETL——数据的抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)工作,而特征工程主要是这几个方面:特征抽象、特征重要性评估、特征衍生和特征降维。

一、特征抽象

特征抽象是指将源数据抽象成算法可以理解的数据;目前的机器学习算法主要是对一些数据进行矩阵运算或者概率运算来得到结论,也就是说算法的入参通常来讲应该是一组可以表达数据某类特性的数字。

抽象的过程没有现成的公式或者是工具,往往要根据用户的主观判断来实现;特征抽象需要具备两方面能力,一方面是需要进行大量的相关工作来积累经验,另一方面需要对特征抽象的数据的业务场景足够了解。

可以从如下看似不可能量化的数据中抽象出特征:

(1)时间戳:该数据是数据挖掘过程中最常见的数据种类;通常采集到的数据往往来自于系统日志,这些日志最鲜明的特点就是带有时间戳字段。

(2)二值类问题:如果字段都是二值型的,就可以通过两个数值来表示,通常可以表示成0和1。

(3)多值有序类问题:多值类的字段数据分成两种,一种是有序的,一种是无序的;有序数据是指数据可以按照程度来分层。

(4)多值无序类问题(信息阉割):多值无序类的特征抽象是最难做的,有时候只能被迫对数据的信息熵(信息熵是数据信息的一种量化表示,用来表示信息量的大小)进行一定程度的阉割或者采用One-hot编码的方法。

(5)多值无序类问题(One-hot编码):通过One-hot编码方式来把文本无序的字符串数据转换成数值;One-hot编码方式的优点是保存了所有信息的信息量。

(6)文本类型:半结构化数据是指数据已经存储到了矩阵结构的数据库中,但是实际的值是字符类型的;对于一段文本的抽象有很多方式,可以把文本先分词,然后可以按照词语出现的位置来提取特征,也可以按照每个词的词性来提取特征;如果是由多个文本组成的集合,还可以根据TF-IDF值来提取特征;最简单的特征还是词的长度。

(7)图像或语音数据:这是非结构化数据;对图像和语音的特征抽取的思路大体是首先将图像或者语音转化成矩阵结构。

 

二、特征重要性评估

如果能对特征的权重有一个正确的评判和排序,就可以通过特征重要性排序来指导一些降维处理,同时也可以挖掘 一下业务场景中哪些属性是比较重要的,这个信息对接下来的模型训练效果调优很有帮助。

特征评判的方法有很多,一种是利用回归模型的参数来评判,另一种是根据信息熵。

1.回归模型系数判断法

一些线性模型的训练结果是一个数学公式,类似于如下这样的式子:y=a1x1+a2x2+a3x3+... 

其中,a1,a2,a3就是我们模型最终得到的系数,这些系数是通过最优化的一些数学手段迭代计算得到的。

逻辑回归算法的特点是可以通过模型的系数推出每个特征的重要性,这一点在实际的应用中有很大的意义,通过这些特征系数可以判断每个特征对结果的影响。

2.信息熵判断法

信息熵的具体计算方法:在信源中考虑的不是某 一单个符号发生的不确定性,而是要考虑这个信源所有可能发生情况的平均不确定性;若信源符号有n种可能U1,U2,U3,U4…,每种可能对应的概率分别为P1,P2,P3,P4…,且各种符号的出现彼此独立,信源的平均不确定性应当为单个符号不确定性−logPi的统计平均值E,即 H(U)=E[−logPi]=−∑PilogPi。

信息增益(Information Gain):在信息增益中,衡量标准是看特征能够为分类系统带来多少信息,带来的信息越多,则该特征越重要;对一个特征而言,系统有它和没它时的信息量将发生变化,而前后信息量的差直接是这个特征给系统带来的信息量。

 

三、特征衍生

特征衍生是指利用现有的特征进行某种组合,生成新的具有含义的特征;特征衍生是特征工程中很重要的一环,因为通常我们所采集到数据的特征维度不会很大,而且直接采集到的特征并不会完全体现出这份数据的全部信息,需要通过已有的数据组合来发现新的意义,新生成的特征对目标列的影响大小可以通过特征重要性评估方法来获得。

业务视角是指通过数据挖掘工程师对数据的理解和业务场景的认识的层面来进行特征衍生。

机器学习算法的特点是通过高维的特征数据来挖掘其中的最优模型,所以需要进行一定的特征衍生,增加相应特征量,从而挖掘更有价值的特征来提高算法的结果准确性。

购物频率=用户总购买量/(用户最后购买时间 - 用户第一次购物时间),点击购买率=用户购物行为为0的次数/用户购物行为为1的次数。

商品的特点主要可以通过3方面来刻画,分别是产品的产品热度、季节因素和产品的消耗频率;产品的热度可以看作产品的受欢迎程度,这个指标可以通过两种方式来获得,一种是计算这个商品的总被购买量,另一种就是首先算一下全部产品的总购买量然后求平均值,通过总购买量和平均值的对比进行打标。

特征衍生印证了这样的观点:数据挖掘的工作永远不是单纯依靠数学公式来解决问题,一定要结合实际的行业经验来做。

 

四、特征降维

1.基本概念

如果输入的数据源是一个多字段的矩阵,特征降维就是挖掘出其中的关键字段,从而减少输入矩阵的维度;特征降维技术被广泛用到解决高维度数据问题的场景下,特别是针对图像识别或者是文本分析领域。

特征降维的主要目的:

第一,确保变量间的相互独立性:减少特征值之间的关联。

第二,减少计算量。

第三,去燥:特征降维可以把对结果没有意义或者说意义非常小的字段去除,减少不必要的干扰。

数据挖掘领域中常用的降维方法包括以下几种:

第一,主成分分析(Principal Component Analysis,PCA)是最常用的一种线性降维方法;它通过线性映射投影的方法,把高维的数据映射到了低维的空间中。

第二,线性判别式分析(Linear Discriminant Analysis,LDA)的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性;通过线性判别式分析处理后的数据,同类间距会非常小,不同类的间距会非常大。

第三,局部线性嵌入(Locally Linear Embedding,LLE)是一种非线性降维算法,特点是降维之后可以继续保持数据的流形结构;通过LLE降维算法之后,原来高维度上相近的数据点在低维上依旧距离相近。

2.主成分分析

它的基本思路是旋转坐标轴到方差最大的方向;它主要是通过转换坐标系的方法,把源数据的最大方差方向变为新坐标系的一个坐标轴,另一个轴选择与新坐标轴垂直的直线,一直重复这样的操作,就可以减小数据的维度。

通过PCA数学公式进行特征降维的步骤:

第一步,求协方差矩阵;协方差是表示不同维度数据间关联的一种统计学算法,它表示维度之间的信息。

第二步,提取特征值和特征向量;特征值越大,说明矩阵在对应的特征向量上的方差越大,信息量越多。