特征工程概述


Feature engineering is the process of using domain knowledge of the data to create features that
make machine learning algorithms work.

工业界广泛流传这么一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。顾名思义,特征工程本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。

1.特征处理

1.1 特征与标注数据清洗

1.1.1数据采样

对于二分类问题:选取正例,负例,负类设置为0, 正类设置为1.

对于多分类问题:选取多分类,编码到[0,classnum).

类别不平衡问题:样本层面可以采用oversampling/undersampling. 算法层面可以采用代价敏感方法/样本设置权重

1.1.2 样本过滤

基于统计的异常点检测算法
例如极差,四分位数间距,均差,标准差等,这种方法适合于挖掘单变量的数值型数据。

基于距离的异常点检测算法

主要通过距离方法来检测异常点,将数据集中与大多数点之间距离大于某个阈值的点视为异常点,主要使用的距离度量方法有绝对距离(曼哈顿距离)、欧氏距离和马氏距离等方法。

基于密度的异常点检测算法

考察当前点周围密度,可以发现局部异常点。

1.2 无量纲化

为了平衡取值范围不一致的特征,需要对特征进行无量纲化。常用的无量纲化操作有标准化和归一化。

标准化:标准化需要计算特征的均值和标准差,然后使用如下公式计算放缩后的特征值:

x=xX⃗ S

区间缩放法:区间缩放法的思路有多种,常见的一种为利用两个最值进行缩放,公式表达为:
x=xMinMaxMin

1.3离散化与哑编码

1.3.1 离散化

在上面介绍过连续值的取值空间可能是无穷的,为了便于表示和在模型中处理,需要对连续值特征进行离散化处理。常用的离散化方法包括等值划分和等量划分。例如某个特征的取值范围为[0,10],我们可以将其划分为10段, [0,1),[1,2),,[9,10)

  1. 离散特征的增加和减少都很容易,易于模型的快速迭代;
  2. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
  3. 离散化后的特征对异常数据有很强的鲁棒性模型也会更稳定;
  4. 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性 提 升表达能力;
  5. 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险

1.3.2 哑编码

哑编码主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。

例子:

对于国籍特征假设有三个选项,{中国,美国,加拿大} One-hot encoding 之后,中国变成了[1,0,0],美国变成了[0,1,0],加拿大变成了[0,0,1]

好处:

  1. 使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对 应欧式空间的某个点。
  2. 在回归,分类,聚类等机器等学习算法中,特征之间距离的计算或相似度的计算是 非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算 余弦相似性,基于的就是欧式空间。
  3. 将离散型特征使用one-hot编码,确实会让特征之间的距离计算更加合理
  4. 对离散型特征进行one-hot编码可以加快计算速度。

1.4 缺失值处理

有些特征可能因为无法采样或者没有观测值而缺失.例如距离特征,用户可能禁止获取地理位置或者获取地理位置失败,此时需要对这些特征做特殊的处理,赋予一个缺省值。缺省值如何赋予,也有很多种方法。例如单独表示,众数,平均值等。

1.5 特征生成以及特征学习

特征生成

根据已有特征生成新特征,增加特征的非线性。常见的数据变换有基于多项式的、基于指数函数的、基于对数函数的。

例如4个特征,度为2的多项式转换公式如下:

特征学习

特征学习可以分为监督特征学习和无监督特征学习:

监督特征学习包括监督神经网络、多层感知机;

无监督特征学习包括无监督PCA、LDA、AutoEncoder、MF和各种形式的聚类算法。


2.特征选择

2.1 概述

在机器学习或者统计学中,又称为变量选择、属性选择或者变量子集选择,是在模型构建中,选择相关特征并构成特征子集的过程。

目的

  • 简化模型,增加模型的可解释性
  • 缩短训练时间
  • 避免维度灾难
  • 改善模型通用性、降低过拟合

2.2一般过程

[1]Dash, Manoranjan, and Huan Liu. “Feature selection forclassification.” Intelligent data analysis 1.1-4 (1997): 131-156.

[2]Tang, Jiliang, Salem Alelyani, and Huan Liu. “Feature selection forclassification: A review.” Data Classification: Algorithms andApplications (2014): 37.

2.3搜索方法

Screen Shot 2017-12-07 at 9.39.37 AM

2.4评价标准


Filter:

  • 执行时间短(+):一般不会在数据集上进行迭代计算,且是分类器无关的,相比于训练分类器要快。
  • 一般性(+):评价数据中属性的本身的性质,而不是属性与特定分类器的关联关系(适合程度),所以得到的结果更具有一般性,而且对于很多分类器都能表现“良好”。
  • 选择大规模子集(-):倾向于选择全部最优的特征子集,导致决定停止的条件决定权交给了用户,具有较强的主观性

Wrapper:

  • 准确性(+):由于特征子集是针对特定的分类器调准,能获得较好的识别率。
  • 泛化能力(+):有很多机制可以防止过拟合,例如在分类器中可以使用交叉验证等技术。
  • 执行速度(-):对于每个候选的特征子集,必须重新训练一个分类器甚至多个分类器(交叉验证),所以对于计算密集型非常不适合。
  • 一般性(-):由于此种方法对分类器敏感,而不同的分类器具有不同原理的评价函数(损失函数),只能说最终选择特征子集是对当前分类器“最好”的。

2.4.1 过滤法


2.4.2 封装法

  1. 基于目标函数
  2. 完全搜索[穷举]
  3. 启发式搜索[贪心]
  4. 随机搜索[策略+好运气]

2.4.3 嵌入法

在模型既定的条件下,寻找最优特征子集

  1. 正则化项( L1、L2 )
  2. LASSO回归
  3. 岭回归(RidgeRegression)
  4. 决策树
  5. ID3、C4.5、CART
  6. 深度学习

3.特征降维

3.1 概述

目的:最大限度地降低数据的维度的前提下能够同时保证保留目标的重要的信息

3.2 主成分分析/PCA



3.3 线性判别分析/LDA





3.4局部线性嵌入/LLE





3.5拉普拉斯特征映射/LE




3.6 随机邻域嵌入/SNE


3.7 t-分布邻域嵌入/T-SNE



参考文献:徐坤,汇报

猜你喜欢

转载自blog.csdn.net/github_36326955/article/details/78738016