ML-特征工程

date
Jun 18, 2022
slug
ML-特征工程
status
Published
tags
ML
summary
type
Post

一、特征工程

对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上来讲,特征工程是一个表示和展现数据的过程。在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。
以下主要针对结构化数据和非结构化数据进行特征选择。

1. 特征归一化

使用特征归一化,消除数据特征之间的量纲影响,使得各项指标处于同一数量级,不同量纲之间具有可比性。
主要针对数值类型特征进行归一化,可以将特征统一到一个大致相同的数值区间。主要使用:
  • 线性函数归一化
    • 它对原始数据进行线性变换,使结果映射到[0, 1]的范围,实现对原始数据的等比缩放。
  • 零均值归一化
    • 将原始数据映射到均值为0、标准差为1的分布上。
假设有两种数值型特征,的取值范围为 [0, 10],的取值范围为[0, 3],于是可以构造一个目标函数符合下图(a)中的等值图。
notion image
在学习速率相同的情况下,的更新速度会大于,需要较多的迭代才能找到最优解。如果将归一化到相同的数值区间后,优化目标的等值图会变成上图(b)中的圆形,的更新速度变得更为一致,容易更快地通过梯度下降找到最优解。

2. 类别型特征

类别型特征(Categorical Feature)主要是指性别(男、女)、血型(A、B、AB、O)等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。
  • 序号编码
    • 通常用于处理类别间具有大小关系的数据,如成绩可分为A、B、C、D四个等级。序号编码将分数分为四个等级,对等级进行编码,编码后保留了大小关系,同时降低了数据维度。
  • 独热编码
    • 通常用于处理类别间不具有大小关系的特征,特征向量只在某一维取值为1,其他地方为0。对于类别取值较多的情况就会使维度过大,可以使用特征选择来降低维度。
      高维度可能会带来两点间距离很难衡量、过拟合问题,并且可能只有部分维度对分类、预测有帮助。
  • 二进制编码
    • 主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。二进制编码本质上是利用二进制对ID进行哈希映射,最终得到 0/1 特征向量,且维数少于 One-Hot Encoding,节省了存储空间。
  • 虚拟编码
    • 虚拟编码在进行表示时只使用 k-1 个自由度,除去了额外的自由度,没有被使用的那个特征通过一个全零向量表示,它称为参照类。
      使用虚拟编码的模型结果比使用 One-Hot Encoding 的模型结果更具解释性。虚拟编码的缺点是不太容易处理缺失数据,因为全零向量已经映射为参照类。
  • 效果编码
    • 效果编码与虚拟编码非常相似,区别在于参照类是用全部由 -1 组成的向量表示的。其优点是全由-1组成的向量是个密集向量,计算和存储的成本都比较高。
  • 特征散列化
    • 散列函数是一种确定性函数,他可以将一个可能无界的整数映射到一个有限的整数范围 [1,m]中,因为输入域可能大于输出范围,所以可能有多个值被映射为同样的输出,这称为碰撞。
    • 均匀散列函数可以确保将大致相同数量的数值映射到 m 个分箱中。
    • 如果模型中涉及特征向量和系数的内积运算,那么就可以使用特征散列化。
    • 特征散列化的一个缺点是散列后的特征失去了可解释性,只是初始特征的某种聚合。

3. 组合特征

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。
一般的特征组合可以理解为两个离散特征和特征交叉合并,如特征A有m个类别,特征B有n个类别,则特征A和特征B的组合就是将特征A、B中的各个类别两两组合,其维度为m*n。
如果简单地两两组合,依然容易存在参数过多、过拟合等问题,而且并不是所有的特征组合都是有意义的。

参考:《百面机器学习》、Feature Engine

© Baiye 2022 - 2025