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

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

目录

1 数据规范化

1.1 最值归一化

1.2 Z-Score规范化

2 类别平衡化

2.1 阈值移动

2.2 欠采样法(undersampling)

2.3 过采样法(oversampling)

3 连续值离散化

4 缺失值处理

5 哑言编码

6 正则化

6.1 L1正则

6.2 L2正则

7 数据降维

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}}

X

scale


=

X

max


−X

min


X−X

min




其特点是:


算法过程简单直观;

新数据加入可能导致最值变化,需要重新定义;

对奇异值(Outlier)非常敏感,因为其直接影响最值。故最值归一化只适用于数据在一个范围内分布而不会出现Outlier的情况,如人的身高数据、考试成绩数据等


image.png

1.2 Z-Score规范化

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

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

X

scale


=

σ

X−μ



其特点是:


很好地契合本身就服从正态分布的数据;

即使原数据集中有Outlier,规范化的数据集依然满足均值为0,不会形成有偏数据;

对Outlier敏感度较低,但在计算方差和均值的时候Outliers仍会影响计算。所以在出现Outliers的情况下可能会出现转换后,数据的不同维度分布完全不同的情况。

2 类别平衡化

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

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

2.1 阈值移动

亦称再平衡(rebalance)或再缩放(rescaling)策略。设训练集中有 m + m^+ m

+

个正例和 m − m^- m

个反例,学习器输出预测正例的概率为 y y y。假设训练集是真实样本空间的采样,则对于任意测试样本,令

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

1−y

y


=

1−y

y


×

m

+

m



通过比较 y ′ 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 N N个状态进行编码,每个状态都有独立的寄存器位,并且在任意时候只有一位有效的编码方式称为独热编码(One-Hot Encode),若减少一个自由度则是一般的哑言编码。


image.png

image.png

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

minλ


Ω(f)+

i=1

m


ℓ(f(x

i


),y

i


)


其中 Ω ( f ) \Omega \left( f \right) Ω(f)为正则化项,用于描述模型 的某些性质以降低结构风险; ∑ i = 1 m ℓ ( f ( x i ) , y i ) \sum\nolimits_{i=1}^m{\ell \left( f\left( \boldsymbol{x}_i \right) ,y_i \right)} ∑

i=1

m


ℓ(f(x

i


),y

i


)为经验风险项,用于描述模型与训练数据的契合程度;常数 λ \lambda λ表示对结构风险和经验风险的偏好。总结常用的正则化方式:

6.1 L1正则

由于 L 1 L^1 L

1

范数正则下,最优解多出现于正则项的棱边棱角处产生稀疏性,故 范数正则也称稀疏规则算子(Lasso Regularization),可引入对稀疏参数的偏好,有利于突出重点特征以进行特征选择。事实上, L 0 L^0 L

0

范数也可实现特征选择和稀疏化,但其相对 L 1 L^1 L

1

范数而言不易于求解优化,因此实际应用中更倾向于使用 L 1 L^1 L

1

范数。

6.2 L2正则

L

2

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

1

范数正则化的代价函数称为岭回归(Ridge Regression)。


image.png

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

7 数据降维

主要介绍PCA降维。


如图所示,数据点大部分都分布在 x 2 x_2 x

2


方向上,在 x 1 x_1 x

1


方向上的取值近似相同,那么对于某些问题就可以直接去除 x 1 x_1 x

1


坐标,而只保留 x 2 x_2 x

2


坐标值即可。


image.png

但是有些情况下不能直接这样处理,例如图中数据在 x 1 x_1 x

1


和 x 2 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[ \right] \xrightarrow{\text{降维后理想的协方差矩阵}}\left[ \right]

C=


 

Cov(α

1


1


)

Cov(α

2


1


)

Cov(α

n


1


)


 

Cov(α

1


2


)

Cov(α

2


2


)

Cov(α

n


2


)


 


 

Cov(α

1


n


)

Cov(α

2


n


)

Cov(α

n


n


)


 


 

降维后理想的协方差矩阵


 


 

δ

1



 

δ

2



 


 

δ

n



 



基于此,设 X m × n X_{m\times n} X

m×n


为样本中心化矩阵, P r × m P_{r\times m} P

r×m


为PCA降维矩阵, Y r × n = P X Y_{r\times n}=PX Y

r×n


=PX为降维后的样本矩阵, C X C_X C

X


、 C Y C_Y C

Y


分别为原样本和降维后样本的协方差矩阵。因为这里考虑不同特征间的相关性,所以将矩阵统一写为行向量组的形式: Y r × n = [ β 1 β 2 ⋯ β r ] T Y_{r\times n}=\left[ \right] ^T Y

r×n


=[

β

1



 

β

2



 


 

β

r



]

T

,则:

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

maxtr(C

Y


)s.t.P

T

P=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]

maxtr(C

Y


)=maxtr[

n−1

1


PX(PX)

T

]

=maxtr[PC

X


P

T

]


由拉格朗日乘数法,设 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)=tr(PC

X


P

T

)+λ(P

T

P−I)


则:

∂ 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

∂P

∂f(P)


=

∂P

∂tr(PC

X


P

T

)


∂P

∂(P

T

P)


=PC

X

T


+λP


令导数为0,则

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

C

X


P

T

=−λP

T


即降维矩阵 P P P是以原始样本协方差矩阵 C X C_X C

X


的前 r r r个特征向量为行向量组的正交矩阵。


🔥 更多精彩专栏:


《机器人原理与技术》

《计算机视觉教程》

《机器学习》

《嵌入式系统》

《数值优化方法》


目录
相关文章
|
23天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
73 4
|
6天前
|
机器学习/深度学习 传感器 运维
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
本文探讨了时间序列分析中数据缺失的问题,并通过实际案例展示了如何利用机器学习技术进行缺失值补充。文章构建了一个模拟的能源生产数据集,采用线性回归和决策树回归两种方法进行缺失值补充,并从统计特征、自相关性、趋势和季节性等多个维度进行了详细评估。结果显示,决策树方法在处理复杂非线性模式和保持数据局部特征方面表现更佳,而线性回归方法则适用于简单的线性趋势数据。文章最后总结了两种方法的优劣,并给出了实际应用建议。
32 7
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
|
16天前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
48 4
|
23天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
29 6
|
25天前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
89 1
|
1月前
|
机器学习/深度学习 数据采集 数据处理
谷歌提出视觉记忆方法,让大模型训练数据更灵活
谷歌研究人员提出了一种名为“视觉记忆”的方法,结合了深度神经网络的表示能力和数据库的灵活性。该方法将图像分类任务分为图像相似性和搜索两部分,支持灵活添加和删除数据、可解释的决策机制以及大规模数据处理能力。实验结果显示,该方法在多个数据集上取得了优异的性能,如在ImageNet上实现88.5%的top-1准确率。尽管有依赖预训练模型等限制,但视觉记忆为深度学习提供了新的思路。
32 2
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
因果推断方法为特征工程提供了一个更深层次的框架,使我们能够区分真正的因果关系和简单的统计相关性。这种方法在需要理解干预效果的领域尤为重要,如经济学、医学和市场营销。
76 1
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
|
1月前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
110 1
|
1月前
|
机器学习/深度学习 自然语言处理 语音技术
探索机器学习中的深度学习模型:原理与应用
探索机器学习中的深度学习模型:原理与应用
39 0
|
2月前
|
机器学习/深度学习
如何用贝叶斯方法来解决机器学习中的分类问题?
【10月更文挑战第5天】如何用贝叶斯方法来解决机器学习中的分类问题?