笔面试准备(3)——特征工程相关小结

特征工程简介

**特征工程(Feature Engineering)**是指将原始数据转变成模型的训练数据的过程,从而更好地提取数据特征,使得机器学习模型的学习能力更好。其本质上是对原始数据的再加工,其目的是产生进入模型的特征。

特征工程分为数据预处理(Data Preprocessing)、特征构造(Feature Construction)、特征抽取(Feature Extraction)和特征选择(Feature Selection) 等几个步骤,每个步骤间没有明显的顺序之分,往往需要根据需求反复执行,甚至也没有严格区分的概念边界,例如特征构造可能会与数据预处理使用同样的数据变换技术等。
笔面试准备(3)——特征工程相关小结

特征构造

特征构建是指从原始数据中人工的找出一些具有物理意义的特征。需要花时间去观察原始数据,思考问题的潜在形式和数据结构,对数据敏感性和机器学习实战经验能帮助特征构建。除此之外,属性分割结合是特征构建时常使用的方法。对于有些场景的数据的属性比较难以处理,可以采用属性合并构建新的特征,从而为模型训练提供好的特征。另外还有特征降维—主成分分析

特征处理

特征处理是特征工程最关键的步骤之一,包括对原始数据的去重、查看是否缺失等基础问题。另外处理之前需要对数据的进行充分认识,需要对数据进行数据探索性分析(EDA),观察数据类型、数据的离散程度、有无偏度、分布情况、离群值检测等等,认识之后,在对数据进行进一步处理——

异常值处理

主要是离群值数据缺失性冗余性分析

离群点是指那些模型预测效果不佳的观察点;可能产生较大的正残差;也可能产生较大的负残差。离群点检测可以采用箱线图进行观察,在数据不符合高斯分布的情形下推荐使用——箱形图为我们提供了识别异常值的一个标准:异常值被定义为小于Q1-1.5IQR或大于Q3+1.5IQR的值 。但是也存在一些局限——

  • 不能提供关于数据分布偏态和尾重程度的精确度量
  • 对于批量比较大的数据批,反应的形状信息更加模糊
  • 用中位数代表总体评价水平有一定的局限性
    笔面试准备(3)——特征工程相关小结

数据标准化

数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。可以分为三大类:直线型方法(如极值法、标准差法)折线型方法(如三折线法)曲线型方法(如半正态性分布)。标准化前后结果对比:

笔面试准备(3)——特征工程相关小结
笔面试准备(3)——特征工程相关小结

上述两个图可以发现,经过标准化后的数据大致呈现高斯分布。

常用的方式有:最小最大化处理、Z-Score处理、二值化、L2正则化、Onehot encoding

最小最大化处理(Min-Max Normalization)

X=Xminmaxmin X = \frac{X-min}{max-min}

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

Z-Score标准化

X=XXstd(X) X = \frac{X-\overline{X}}{std(X)}

原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1。

二值化

二值化用于将数值特征向量转换为布尔类型向量。

  1. 二值化之后的数据点都是0或者1,所以叫做二值化。
  2. 计算方法是,将所有大于threshold的数据都改为1,小于等于threshold的都设为0。
  3. 经常用于出现某种特征(比如设为1),或者没有出现某种特征(设为0)的应用场合
独热编码(One-Hot Encoding)

通常,需要处理的数值都是稀疏地,散乱地分布在空间中,但我们并不需要存储这些大数值,这时就需要使用独热编码,独热编码实际上是一种收紧特征向量的工具。

  1. 独热编码可以缩小特征向量的维度。将稀疏的,散乱的数据集(比如代码块中的data,shape=(4,4))收缩为11维致密矩阵(如输出结果,shape=(1,11))。
  2. 编码方式为:根据原始数据集data构建编码器encoder,用编码器来对新数据进行编码。比如,第0列有三个不同值(0,1,2),故而有三个维度,即0=100,1=010,2=001;同理,第1列有两个不同值(2,3),故而只有两个维度,即2=10,3=01;同理,第2列有四个不同值(1,5,2,4),故而有四个维度,即1=1000,2=0100,4=0010,5=0001同理,第3列有两个不同值(3,12),故而只有两个维度,即3=10,12=01。所以在面对新数据[[2,3,5,3]]时,第0列的2就对应于001,第二列的3对应于01,第三列的5对应于0001,第四列的3对应于10,连接起来后就是输出的这个(1,11)矩阵,即为读了编码后的致密矩阵。
  3. 如果面对的新数据不存在上面的编码器中,那么存储的是00。比如[[2,3,5,4]]时,4不存在于第3列(只有两个离散值3和12),则输出为00,连接起来后是[[0. 0. 1. 0. 1. 0. 0. 0. 1. 0. 0.]],注意倒数第二个数字变成了0。

特征选择

**特征选择是剔除不相关或者冗余的特征,减少有效特征的个数,减少模型训练的时间,提高模型的精确度。**特征提取通过特征转换实现降维,特征选择则是依靠统计学方法或者于机器学习模型本身的特征选择(排序)功能实现降维。特征选择是个重复迭代的过程,有时可能自己认为特征选择做的很好,但实际中模型训练并不太好,所以每次特征选择都要使用模型去验证,最终目的是为了获得能训练出好的模型的数据,提升模型的性能。

进行特征选择的主要目的:

  1. 降维
  2. 降低学习任务的难度
  3. 提升模型的效率
Filter

过滤式是指先进行特征选择,然后去训练学习器,所以特征选择的过程与学习器无关。相当于先对于特征进行过滤操作,然后用特征子集来训练分类器。主要包括方差选择法、相关系数法、卡方检验、互信息法

方差筛选

计算每一个特征的方差值,默认情况是删除所有方差为0的特征,很显然,特征为零的数据意味着数据变化为零,这对结果预测的帮助非常小。同样可以通过设定一个阈值,来筛选特征。

方差筛选:建议作为数值特征的筛选方法

相关系数法

相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差。消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度。

分类:

  • 0.8-1.0 极强相关;
  • 0.6-0.8 强相关;
  • 0.4-0.6 中等程度相关;
  • 0.2-0.4 弱相关;
  • 0.0-0.2 极弱相关或无相关
  1. **优点:**可以通过数字对变量的关系进行度量,并且带有方向性,1表示正相关,-1表示负相关,可以对变量关系的强弱进行度量,越靠近0相关性越弱。
  2. **缺点:**无法利用这种关系对数据进行预测,简单的说就是没有对变量间的关系进行提炼和固化,形成模型。要利用变量间的关系进行预测,需要使用到下一种相关分析方法,回归分析。
  3. **使用场景:**当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:
    • 两个变量之间是线性关系,都是连续数据
    • 两个变量的总体是正态分布,或接近正态的单峰分布
    • 两个变量的观测值是成对的,每对观测值之间相互独立
卡方检验

卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:

笔面试准备(3)——特征工程相关小结

这属于统计检验的一种,具体详情可见如何科学地评估和评判深度学习模型?,也可以用于模型的检验。

卡方检验:建议作为分类问题的分类变量的筛选方法

互信息法

经典的互信息也是评价定性自变量对定性因变量的相关性的,为了处理定量数据,最大信息系数法被提出,互信息计算公式如下:

笔面试准备(3)——特征工程相关小结

互信息法:建议作为分类问题的分类变量的筛选方法

Warpper

包裹式是指直接把最后要使用的分类器作为特征选择的评价函数,对于特定的分类器选择最优的特征子集。常见的方法有递归特征消除法(用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练)。

Embedded

嵌入式是指把特征选择的过程与分类器学习的过程融合一起,在学习的过程中进行特征选择。最常见的使用L1正则化和L2正则化进行特征选择。主要包括基于惩罚项的特征选择法基于树模型的特征选择法。此外也可以使用决策树或者GBDT

常见笔面试题考察

  1. 常用的特征筛选方法有哪些?

    笔面试准备(3)——特征工程相关小结

  2. 类别变量如何构造特征?

    答:类别编码的两个基本方法是独热编码(onehot encoding)和标签编码(label encoding)。

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

    ​ 1)序号编码 。例如成绩,分为低、中、高。转换成数值就是1、2、3

    ​ 2)one-hot编码。比如类别型特征是指性别(男、女)、血型(A、B、AB)等只在有限选择内取值的特征。

    ​ 3)二进制编码 其中,对于one-hot encoding,类别取值较多的情况下,

    ​ ①使用稀疏向量来节省空间

    ​ ②配合特征选择来降低维度

  3. 连续值变量如何构造特征?

    答:连续性变量处理特征有Binarization(二值化)、数据倾斜处理(出现偏度,常见取对数)、特征多项式交互(捕获特征之间的相关性)。

    • 线性函数归一化:

    • 零均值归一化:

      • 优点:随机梯度下降中权重的更新速度变快
      • 缺点:不适用于决策树
  4. 哪些模型需要对特征进行归一化?

    答:概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。

  5. 什么是组合特征?如何处理高维组合特征?

    答:

    • 将一阶离散特征两两组合,就可以构成二阶组合特征。

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

    ​ 若用户的数量为m、物品的数量为n,那么需要学习的参数的规模为m*n。在互联网环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习m*n规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用k维的低维向量表示(k<<m, k<<n)。这样就可以是的模型的参数量变为(m*k + n*k)。 类似于矩阵分解