《百面机器学习》笔记-特征工程相关面试题

1. 什么是特征工程

对数据进行一系列处理构成特征输入给模型

例如,我们想让机器识别这个图片是不是苹果,可以选择 形状,颜色分布,边 来作为feature:

特征越好,模型的性能越好,而且可以不用很复杂的数学模型也能达到不错的效果

特征工程的目的

  • 去掉数据中的杂质

  • 构造更高级的高效的特征来描述数据。

怎么做特征工程?

特征工程一般包括三个子模块:特征构建->特征提取->特征选择

  • 特征构建:根据原始数据构建新的特征,需要找出一些具有物理意义的特征。

  • 特征提取:自动地构建新的特征,将原始特征转换为一组具有明显物理意义或者统计意义或核的特征。例如 Gabor、几何特征、纹理等。

常用的方法有:

PCA (Principal component analysis,主成分分析)
ICA (Independent component analysis,独立成分分析)
LDA (Linear Discriminant Analysis,线性判别分析)

  • 特征选择:从特征集合中挑选一组最具统计意义的特征子集,把无关的特征删掉,从而达到降维的效果

常用的方法:

filter 方法:Pearson相关系数,Gini-index(基尼指数),IG(信息增益)等

wrapper :有逐步回归(Stepwise regression 递归特征消除法)、向前选择(Forward selection)和向后选择(Backward selection)等

Embeded :Regularization(基于L1,L2惩罚项的特征选择法),或者使用决策树思想,Random Forest和Gradient boosting等


2. 两种常用的数据类型

  • 结构化数据

即每一行数据表示一个样本,每列都有清晰的定义

有数值型、类别型两种基本类型

  • 非结构化数据

主要包括文本、图像、音频、视频数据

无法用一个简单的数值表示,每条数据的大小各不相同


3. 为什么需要对数值类型的特征做归一化?

什么是特征归一化?

将所有的特征都统一到一个大致相同的数值区间内。

如何进行归一化?

  • Min-Max Scaling

    结果映射到[0, 1]之间

    公式:

  • Z-Score Normalization

    将原始数据映射到均值为 0、标准差为 1 的分布上

    公式:

为什么要进行归一化?

例如,身高特征会在 1.6~1.8m 范围,体重特征会在 50~100kg 的范围,体重特征会对问题有更大的影响

理论上看

因为特征的数值范围不同的话,会影响梯度下降的速率

如果将目标函数的等值图画出来,数值范围大的特征,那个方向会需要更多次的迭代才能找到最优解。

如果将每个特征的范围转化成一致的,那么等值图的图形会是一个圆形,梯度下降在各个方向的速率是一样的,可以更快地找到最优解。

什么时候需要进行归一化?

  • 通常在需要用到梯度下降法的时候。

    包括线性回归、逻辑回归、支持向量机、神经网络等模型。

  • 决策树模型就不适用

    例如 C4.5 ,主要根据信息增益比来分裂,归一化不会改变样本在特征 x 上的信息增益


4. 类别型特征

什么是类别型特征?

例如:性别(男、女)、血型(A、B、AB、O)

通常是字符串形式,需要转化成数值型,传递给模型

如何处理类别型特征?

  • 序号编码(Ordinal Encoding)

    例如学习成绩有高中低三档,也就是不同类别之间关系。

    这时可以用321来表示,保留了大小关系。

  • 独热编码(One-hot Encoding)

    例如血型,它的类别没有大小关系。A 型血表示为(1, 0, 0, 0),B 型血表示为(0, 1, 0, 0)……

  • 二进制编码(Binary Encoding)

    第一步,先用序号编码给每个类别编码

    第二步,将类别 ID 转化为相应的二进制

    例如,B 型血的 ID 为 2,二进制表示为 010

    优点:这种方法得到的结果维数少于独热编码

推荐阅读更多精彩内容