特征工程中数据预处理方法总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特征工程中数据预处理方法总结相关的知识,希望对你有一定的参考价值。
参考技术A 特征工程“巧妇难为无米之炊”,在机器学习中,数据和特征便是“米”,而模型和算法则是“巧妇”。没有充足的数据和合适的特征,再强大的模型也无法拟合出满意的结果。因此,对于机器学习的问题,常说的一句话是数据和特征决定了结果的上限,而模型和算法则是在优化过程中逐步接近这个上限。所以,特征的处理在整个机器学习过程中占有举足轻重的地位,对特征的处理过程被称为特征工程。特征工程是对原始数据进行一系列的工程处理,将其提炼为特征,作为输入工算法和模型使用。
特征工程又包含了Data PreProcessing(数据预处理)、Feature Extraction(特征提取)、Feature Selection(特征选择)和Feature construction(特征构造)等子问题,而数据预处理又包括了数据清洗和特征预处理等子问题。本文用作总结数据预处理的一系列方法。
1、无量纲化
(1)什么是无量纲化
为了消除数据特征之间的量纲影响,我们需要对特征进行归一化和标准化处理,使得不同指标之间具有可比性。例如:分析一个人的身高和体重对健康的影响,如果使用米和千克作为单位,那么身高和体重会处于不同的数值范围内,体重的数值在量上要远大于身高,而如果不对其做处理直接用的情况下分析结果显然会更依赖于数值差别较大的体重特征。因此,为了得到更为准确的结果,就需要对特征进行归一化和标准化处理,使各项指标处于同一数量级,以便进行分析。
(2)无量纲化方法
无量纲化通常也被称为归一化或标准化,是因为归一化和标准化是无量纲化的两个主要方法
1)归一化
归一化是对原始数据进行线性变换, 使结果映射到[0, 1]的范围, 实现对原始数据的等比缩放。 最常用对的是Min-Max Scaling归一化方法(也叫极差变换法),公式如下 :
其中X为原始数据, Xmax、Xmin分别为数据最大值和最小值。最值归一化的使用范围是特征的分布具有明显边界的,受outlier的影响比较大。
除此之外,常用的归一化方法有原始值比最大值。
2)标准化
标准化会将原始数据映射到均值为0、 标准差为1的分布上。常用的方法是零均值标准化(Z-Score Normalization)。 具体来说, 假设原始特征的均值为μ、 标准差为σ, 那么归一化公式定义为 :
零均值标准化适用于数据中没有明显的边界,有可能存在极端数据值的情况。
3)不同的无量纲方法的适用范围
无量纲化避免了不同量纲的选取对距离计算产生的巨大影响。但是,归一化和标准化适用于不同的场景,在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,标准化方法表现更好。在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。
(3)无量纲化的作用和适用模型
1)作用
无量纲化的作用除了可以使分析结果不明显倾向于差异化较大的特征外,另一个重要作用是在随机梯度下降算法中,如果对特征进行了无量纲化处理,会在相同的学习率的情况下减少差异较大的特征的迭代次数,更快找到最优解。例如,假设有两种数值型特征,x1x1的取值范围为 [0, 10],x2x2的取值范围为[0, 3]。则在未归一化和归一化数据的梯度下降过程分别如下图:
由图可以看出,在学习速率相同的情况下,x1相比与x2需要较多的迭代才能找到最优解。但是,如果将 x1 和 x2都映射到到相同的数值区间后, 优化目标的等值图会变成圆形。x1和 x2 的更新速度变得更为一致, 容易更快地通过梯度下降找到最优解。
2)适用算法
机器学习中,并不是所有的模型都需要对特征进行无量纲化处理。比如概率模型并不需要,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率。但是,像线性回归、逻辑回归和支持向量机以及神经网络模型等则就需要提前进行特征的无量纲化。从另一个角度来看,通过梯度下降法求解的模型通常需要无量纲化。否则,像决策树在求解过程中,主要依据特征值的信息增益比等信息,而这些信息跟特征是否经过归一化等无量纲化处理是无关的,因此决策数不要求对特征进行无量纲化处理。
2、类别型特征编码
类别型特征的值表现为类别变量,类别型变量,也被称为定性变量(categorical variable)。比如性别、省份、学历、产品等级等。这类变量的取值通常是用文字而非数字来表示。在机器学习中,除了决策树族的算法能直接接受类别型特征作为输入,对于支持向量机,逻辑回归等模型来说,必须对其做一定的处理,转换成可靠的数值特征才能正确运行。类别型特征的处理方法有:
(1)序列编码(ordinal encoding)
一般处理类别间具有大小关系的数据,例如期末成绩的 [A, B, C, D] 四挡可以直接转化为 [0, 1, 2, 3]。在转化后,依然保持类别之间的顺序关系。
(2)独热编码(one-hot encoding)
序列编码潜在的定义了类别之间的距离具有相同的含义。以成绩为例,两个人之间,得分A与B的成绩差,和B与C的成绩差,在进行预测时,是完全等价的,由于 [A, B, C, D] 直观上与成绩正相关,使用序列编码不会带来太大的损失。然而在处理像血型这样的类别特征时,如果将 [A, B, AB, O] 直接编码成 [1, 2, 3, 4],显然A与B和B与AB之间的距离,并不具有相同的含义,甚至是完全抽象的无法理解的意义,此时,序列编码就不适用了。因此,便出现了独热编码,独热编码将类别特征用一组比特位来表示,每一位代表一个可能的类别,如果该变量不能一次称为多个类别,那么该组中只有一位可以是1。
对于类别取值较多的情况下适用独热编码需要注意以下问题:
1)适用稀疏向量来节省空间。在独热编码下,特征向量只有某一维取值为1,其他位置取值均为0。因此,可以利用向量的稀疏表示有效节省空间,并且目前大部分的算法均接受稀疏向量形式的输入。
2)配合特征选择来降低维度。高维度特征会带来几方面的问题,一是在K近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增加而增高,容易引起过拟合问题;三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。
(3)哑变量(dummy encoding)
哑变量是独热编码的一种形式,onehot编码的问题是它允许k个自由度,其中变量本身只需要k-1。虚拟编码通过仅适用表示中的k-1个特征来消除额外的自由度。
3、数值型特征离散化
离散化是数值型特征非常重要的一个处理,其实就是要将数值型数据转化成类别型数据。连续值的取值空间可能是无穷的,为了便于表示和在模型中处理,需要对连续值特征进行离散化处理。
(1)无监督方法
1)自定义离散化,根据业务经验或者常识等自行设定划分的区间,然后将原始数据归类到各个区间中。
2)等距化方法,按照相同宽度将数据分成几等份,其缺点是受到异常值的影响比较大。
3)等频化方法,将数据分成几等份,每等份数据里面的个数是一样的。
4)聚类离散化
5)二值化方法,设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0。
(2)有监督方法
1)卡方法,自底向上的(即基于合并的)数据离散化方法。它依赖于卡方检验:具有最小卡方值的相邻区间合并在一起,直到满足确定的停止准则。其基本思想是,对于精确的离散化,相对类频率在一个区间内应当完全一致。因此,如果两个相邻的区间具有非常类似的类分布,则这两个区间可以合并;否则,它们应当保持分开。而低卡方值表明它们具有相似的类分布。
2)最小熵法,需要使总熵值达到最小,也就是使分箱能够最大限度地区分因变量的各类别。数据集的熵越低,说明数据之间的差异越小,最小熵划分就是为了使每箱中的数据具有最好的相似性。给定箱的个数,如果考虑所有可能的分箱情况,最小熵方法得到的箱应该是具有最小熵的分箱。
4、缺失值处理方法
(1)直接删除
如果在数据集中,只有几条数据的某几列中存在缺失值,那么可以直接把这几条数据删除。
(2)均值插补
数据的属性分为定距型和非定距型。如果缺失值是定距型的,就以该属性存在值的平均值来插补缺失的值;如果缺失值是非定距型的,就根据统计学中的众数原理,用该属性的众数(即出现频率最高的值)来补齐缺失的值。
(3)利用同类均值插补
同均值插补的方法都属于单值插补,不同的是,它用层次聚类模型预测缺失变量的类型,再以该类型的均值插补。
(4)极大似然估计
在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计(Little and Rubin)。
(5)多重插补
多重插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。
特征工程
不会做特征工程的 AI 研究员不是好数据科学家!上篇 - 连续数据的处理方法
不会做特征工程的 AI 研究员不是好数据科学家!下篇 - 离散数据的处理方法
特征交叉
hash
embedding
特征归一化
特征选择
http://blog.csdn.net/shenxiaoming77/article/category/5906159
以上是关于特征工程中数据预处理方法总结的主要内容,如果未能解决你的问题,请参考以下文章
工程机械核心部件寿命预测前三名方案总结与2022年最新方案分享(万文详解)