机器学习:盘点最常见的7种数据预处理方法和原理

举报
Mr.Winter 发表于 2022/03/23 12:00:02 2022/03/23
【摘要】 机器学习:盘点最常见的7种数据预处理方法和原理

image.png


1 数据规范化

量纲,指将一个物理导出量用若干基本量的乘方之积表示出来的表达式。数据的比较需要关注两点——绝对数值量纲,而特征间因为量纲的存在导致无法直接通过绝对数值比较大小,也就无法判断特征间的重要性。例如若某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置而弱化了其他特征,甚至导致模型无法收敛。

无量纲化Nondimensionalization)的数据预处理方式可以让特征间拥有相同权重——从绝对数值比较转换为相对数值比较,不再受量纲影响,从而提高模型精度、稳定性,加快收敛速度。无量纲化的主要方式是规范化(Standardization),即将不同数值变化范围的分布映射到相同的固定范围。特别地,当映射到0-1区间时称为归一化(Normalization)

1.1 最值归一化

核心是通过样本特征最值,将特征数值线性映射到0-1区间,且不破坏分布情况,转化函数如下:

X s c a l e = X X min X max X min X_{scale}=\frac{X-X_{\min}}{X_{\max}-X_{\min}}

其特点是:

  • 算法过程简单直观;
  • 新数据加入可能导致最值变化,需要重新定义;
  • 奇异值(Outlier)非常敏感,因为其直接影响最值。故最值归一化只适用于数据在一个范围内分布而不会出现Outlier的情况,如人的身高数据、考试成绩数据等

在这里插入图片描述

图源网络 侵删

1.2 Z-Score规范化

核心是将所有数据映射到均值为0,方差为1的分布中(但并不限制在 区间内),转化函数如下:

X s c a l e = X μ σ X_{scale}=\frac{X-\mu}{\sigma}

其特点是:

  • 很好地契合本身就服从正态分布的数据;
  • 即使原数据集中有Outlier,规范化的数据集依然满足均值为0,不会形成有偏数据;
  • 对Outlier敏感度较低,但在计算方差和均值的时候Outliers仍会影响计算。所以在出现Outliers的情况下可能会出现转换后,数据的不同维度分布完全不同的情况。

2 类别平衡化

类别不平衡(class-imbalance)分类任务中不同类别的训练样本数目差别很大的情况,例如训练集中有998个反例,但正例只有2个。类别不平衡下训练处的学习器往往没有价值,因为其只需始终判断为大样本数的类别就能取得很小的训练误差。

解决类别不平衡问题的策略主要有:

2.1 阈值移动

亦称再平衡(rebalance)再缩放(rescaling)策略。设训练集中有 m + m^+ 个正例和 m m^- 个反例,学习器输出预测正例的概率为 y y 。假设训练集是真实样本空间的采样,则对于任意测试样本,令

y 1 y = y 1 y × m m + {\frac{y'}{1-y'}=\frac{y}{1-y}\times \frac{m^-}{m^+}}

通过比较 y y' 与0.5的大小来判定正、反例。

2.2 欠采样法(undersampling)

核心原理是去除样本数较多类别中的部分样例达到类别平衡。欠采样法因丢失样例而减小了时间开销,但要注意防止欠拟合。欠采样的代表性算法是EasyEnsemble

2.3 过采样法(oversampling)

核心原理是增加样本数较少类别中的部分样例达到类别平衡。过采样法因增加样例而增大了时间开销,但要注意防止过拟合。过采样法的代表性算法是SMOTE

3 连续值离散化

连续属性离散化(Discretization of Continuous Attributes)是指将连续数据分段为一系列离散化区间,每个区间对应一个属性值。连续属性离散化的主要原因如下:

  • 算法要求,例如分类决策树等基于分类属性的算法;
  • 提高特征在知识层面的表达能力,例如年龄5岁和65岁两个特征,对于连续型需要进行数值层面的大小比较,但若将其映射为“幼年”和“老年”则更直观;
  • 离散化数据对异常离群值有更强的鲁棒性,能提高模型稳定性。

连续属性离散化的主要方法阐述如下。

  • 无监督离散方法
  • 等距离散化,即将连续属性划分为若干有限区间,每个区间长度相等。
  • 等频离散化,即将连续属性划分为若干有限区间,每个区间样本数相同。
  • 有监督离散方法
  • 信息增益法,是一种二分法(bi-partition),核心是以离散前后信息增益最大的点为二分位点。

4 缺失值处理

侦测成本过高、隐私保护、无效数据、信息遗漏等情况都会造成实际应用时数据集属性缺失,因此缺失值处理不可避免。

缺失值处理的主要方式阐述如下。

  • 插值填充,即用已有数据的分布来推测缺失值。例如均值填充(主要针对连续型属性)、众数填充(主要针对离散型属性)、回归填充(基于已有属性值建立回归方程估计缺失值)等。
  • 相似填充,即用和缺失属性样本相似的若干样本推测缺失值。例如热卡填充(Hot Deck Imputation),基于某种相似度度量选择数据集中与之最相似的样本属性代替缺失值;聚类填充,基于聚类分析选择数据集中与之最相似的样本子集进行插值填充。
  • C4.5方法,直接使用缺失属性样本,用加权方式衡量样本对结果的影响,主要用于决策树算法。决策树算法可参考 Python 机器学习实战(一):手撕决策树的原理、构造、剪枝、可视化

5 哑言编码

哑言编码(Dummy Encode)面向离散型特征,是将一组定性离散特征的特征值以0-1方式向量化、定量化的编码方式。

哑言编码的优势在于:

  • 稀疏化数据,稀疏向量运算速度快,且优化方式多;
  • 提高模型表达能力,哑言编码相当于为模型引入非线性环节,提高模型容量;
  • 无量纲化与定量化,将不同类型特征都量化为0-1向量进行形式化表达,便于推理和演算。

哑言编码的缺点在于:由于不同特征的哑言编码相互堆叠,最终形成的特征向量会导致特征空间产生维数灾难(The Curse of Dimensionality),因此一般可用PCA降维配合哑言编码。

具体地,哑言编码有两种形式,如图1.2.8所示采用 N N 位状态寄存器来对 N N 个状态进行编码,每个状态都有独立的寄存器位,并且在任意时候只有一位有效的编码方式称为独热编码(One-Hot Encode),若减少一个自由度则是一般的哑言编码。

在这里插入图片描述
在这里插入图片描述

图源网络 侵删

6 正则化

正则化(Regularization)是在模型经验风险(empirical risk)最小化的基础上引入结构风险(structural risk)最小化的策略,正则化为引入领域先验知识、训练意图提供途径,也是常用避免过拟合的惩罚函数方法。正则化的一般表达式如下:

min λ f Ω ( f ) + i = 1 m ( f ( x i ) , y i ) \underset{f}{\min \lambda}\Omega \left( f \right) +\sum_{i=1}^m{\ell \left( f\left( \boldsymbol{x}_i \right) ,y_i \right)}

其中 Ω ( f ) \Omega \left( f \right) 为正则化项,用于描述模型 的某些性质以降低结构风险; i = 1 m ( f ( x i ) , y i ) \sum\nolimits_{i=1}^m{\ell \left( f\left( \boldsymbol{x}_i \right) ,y_i \right)} 为经验风险项,用于描述模型与训练数据的契合程度;常数 λ \lambda 表示对结构风险和经验风险的偏好。总结常用的正则化方式:

6.1 L1正则

由于 L 1 L^1 范数正则下,最优解多出现于正则项的棱边棱角处产生稀疏性,故 范数正则也称稀疏规则算子(Lasso Regularization),可引入对稀疏参数的偏好,有利于突出重点特征以进行特征选择。事实上, L 0 L^0 范数也可实现特征选择和稀疏化,但其相对 L 1 L^1 范数而言不易于求解优化,因此实际应用中更倾向于使用 L 1 L^1 范数。

6.2 L2正则

L 2 L^2 范数正则也称为权重衰减(Weight Decay),其偏好于保留更多特征,且这些特征更均匀(趋于0)。在回归分析中, L 1 L^1 范数正则化的代价函数称为岭回归(Ridge Regression)

在这里插入图片描述
如图所示,仅考虑两个特征。若 λ 0 \lambda→0 即正则约束小,则正则项圆锥高减小,正则解趋近于最小二乘解;若增大 λ \lambda 即正则约束大,则正则项圆锥高增加,正则解偏离最小二乘解,解的位置越来越靠近 轴,参数越来越小。

7 数据降维

主要介绍PCA降维

如图所示,数据点大部分都分布在 x 2 x_2 方向上,在 x 1 x_1 方向上的取值近似相同,那么对于某些问题就可以直接去除 x 1 x_1 坐标,而只保留 x 2 x_2 坐标值即可。

在这里插入图片描述

图源网络 侵删

但是有些情况下不能直接这样处理,例如图中数据在 x 1 x_1 x 2 x_2 方向上分布较均匀,任意去除一个维度可能对结果都会有很大影响。此时需要通过PCA原理,找出某个使数据分布最分散——方差最大的维度,即图中的红色坐表系以便达到降维的目的。

从上面的实例中可以归纳出PCA算法的优化目标:

  • 选择的特征维度间相关性要尽可能小——降低计算维度,减少计算成本;
  • 保留的特征维度要尽量反映数据的本质——该维度方差最大;

这两个优化目标可以用协方差矩阵统一起来:

C = [ C o v ( α 1 , α 1 ) C o v ( α 1 , α 2 ) C o v ( α 1 , α n ) C o v ( α 2 , α 1 ) C o v ( α 2 , α 2 ) C o v ( α 2 , α n ) C o v ( α n , α 1 ) C o v ( α n , α 2 ) C o v ( α n , α n ) ] 降维后理想的协方差矩阵 [ δ 1 δ 2 δ n ] C=\left[ \begin{matrix} Cov\left( \boldsymbol{\alpha }_1, \boldsymbol{\alpha }_1 \right)& Cov\left( \boldsymbol{\alpha }_1, \boldsymbol{\alpha }_2 \right)& \cdots& Cov\left( \boldsymbol{\alpha }_1, \boldsymbol{\alpha }_n \right)\\ Cov\left( \boldsymbol{\alpha }_2, \boldsymbol{\alpha }_1 \right)& Cov\left( \boldsymbol{\alpha }_2, \boldsymbol{\alpha }_2 \right)& \cdots& Cov\left( \boldsymbol{\alpha }_2, \boldsymbol{\alpha }_n \right)\\ \vdots& \vdots& \ddots& \vdots\\ Cov\left( \boldsymbol{\alpha }_n, \boldsymbol{\alpha }_1 \right)& Cov\left( \boldsymbol{\alpha }_n, \boldsymbol{\alpha }_2 \right)& \cdots& Cov\left( \boldsymbol{\alpha }_n, \boldsymbol{\alpha }_n \right)\\\end{matrix} \right] \xrightarrow{\text{降维后理想的协方差矩阵}}\left[ \begin{matrix} \delta _1& & & \\ & \delta _2& & \\ & & \ddots& \\ & & & \delta _n\\\end{matrix} \right]

基于此,设 X m × n X_{m\times n} 为样本中心化矩阵, P r × m P_{r\times m} 为PCA降维矩阵, Y r × n = P X Y_{r\times n}=PX 为降维后的样本矩阵, C X C_X C Y C_Y 分别为原样本和降维后样本的协方差矩阵。因为这里考虑不同特征间的相关性,所以将矩阵统一写为行向量组的形式: Y r × n = [ β 1 β 2 β r ] T Y_{r\times n}=\left[ \begin{matrix} \boldsymbol{\beta }_1& \boldsymbol{\beta }_2& \cdots& \boldsymbol{\beta }_r\\\end{matrix} \right] ^T ,则:

max t r ( C Y ) s . t . P T P = I \max tr\left( C_Y \right) \,\, s.t. P^TP=I

前者体现优化目标(a),后者体现优化目标(b)。

下面简单推导PCA降维矩阵的条件。

max t r ( C Y ) = max t r [ 1 n 1 P X ( P X ) T ] = max t r [ P C X P T ] \max tr\left( C_Y \right) =\max tr\left[ \frac{1}{n-1}PX\left( PX \right) ^T \right] \\=\max tr\left[ PC_XP^T \right]

由拉格朗日乘数法,设 f ( P ) = t r ( P C X P T ) + λ ( P T P I ) f\left( P \right) =tr\left( PC_XP^T \right) +\lambda \left( P^TP-I \right)

则:

f ( P ) P = t r ( P C X P T ) P + λ ( P T P ) P = P C X T + λ P \frac{\partial f\left( P \right)}{\partial P}=\frac{\partial tr\left( PC_XP^T \right)}{\partial P}+\lambda \frac{\partial \left( P^TP \right)}{\partial P}\\=PC_{X}^{T}+\lambda P

令导数为0,则

C X P T = λ P T C_XP^T=-\lambda P^T

降维矩阵 P P 是以原始样本协方差矩阵 C X C_X 的前 r r 个特征向量为行向量组的正交矩阵


🔥 更多精彩专栏

🏠 欢迎加入社区和更多志同道合的朋友交流AI 技术社

👇配套代码 · 优质体验 · 系统知识 请关注👇


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。