数据预处理方法
数据预处理是机器学习和数据挖掘流程中至关重要的一步。原始数据通常存在各种问题,如量纲不一、存在缺失值、包含噪声、非数值型等。高质量的数据预处理能显著提高模型的性能、收敛速度和泛化能力。
1. 归一化
1.1 英文名称
Normalization
1.2 核心概念
归一化是一种将数据按比例缩放,使之落入一个特定的区间(通常是[0, 1]或[-1, 1])的数据预处理方法。其核心目的是消除数据特征之间的量纲影响,使不同指标之间具有可比性。
1.3 为什么需要归一化?
许多机器学习算法(如基于距离的K近邻、K均值聚类,以及梯度下降优化的神经网络、支持向量机等)的性能会受到特征尺度的影响。
- 例子:一个特征是“年龄”(范围0-100),另一个特征是“工资”(范围0-100,000)。计算欧氏距离时,“工资”的影响会远远大于“年龄”,这显然是不合理的。归一化后,所有特征处于同一尺度,模型才能公平地学习每个特征。
1.4 常用方法
-
Min-Max 归一化(最常用)
- 公式:Xnorm=X−XminXmax−XminX_{\text{norm}} = \frac{X - X_{\min}}{X_{\max} - X_{\min}}Xnorm=Xmax−XminX−Xmin
- 效果:将原始数据线性地映射到[0, 1]区间。
- 优点:简单易理解。
- 缺点:对异常值(Outliers) 非常敏感。如果最大值或最小值是异常点,归一化后的数据会集中在狭小区域。
-
平均归一化
- 公式:Xnorm=X−mean(X)Xmax−XminX_{\text{norm}} = \frac{X - \text{mean}(X)}{X_{\max} - X_{\min}}Xnorm=Xmax−XminX−mean(X)
- 效果:将数据映射到[-1, 1]区间附近,均值为0。
-
最大绝对值归一化
- 公式:Xnorm=Xmax(∣X∣)X_{\text{norm}} = \frac{X}{\max(|X|)}Xnorm=max(∣X∣)X
- 效果:将每个特征缩放到[-1, 1]区间,通过除以每个特征的最大绝对值实现。它不会移动/居中数据,因此不会破坏任何稀疏性。
1.5 应用场景
- 适用于需要计算距离的模型(如KNN、K-Means、SVM)。
- 使用梯度下降法优化的模型(如神经网络、逻辑回归),可以加速收敛。
- 在图像处理中,将像素值(0-255)归一化到[0, 1]是标准操作。
2. 标准化
2.1 英文名称
Standardization (或 Z-Score Normalization)
注意:很多人将标准化和归一化混用,但它们在严格意义上是不同的。标准化是更常用的方法。
2.2 核心概念
标准化将数据变换为均值为0,标准差为1的分布。其转换后的数据不局限于特定区间。
2.3 为什么需要标准化?
与归一化类似,也是为了消除量纲。但标准化对异常值的鲁棒性更好。
2.4 方法
- Z-Score 标准化(最常用)
- 公式:Xstd=X−μσX_{\text{std}} = \frac{X - \mu}{\sigma}Xstd=σX−μ
- μ\muμ 是特征的均值。
- σ\sigmaσ 是特征的标准差。
- 效果:转换后的数据服从标准正态分布(均值为0,标准差为1)。
- 优点:对异常值的敏感度低于Min-Max归一化。因为均值和标准差受异常点的影响相对较小。
- 公式:Xstd=X−μσX_{\text{std}} = \frac{X - \mu}{\sigma}Xstd=σX−μ
2.5 标准化 vs. 归一化
| 特性 | 归一化 | 标准化 |
|---|---|---|
| 缩放依据 | 最小值和最大值 | 均值和标准差 |
| 结果范围 | 通常为[0, 1]或[-1, 1] | 无固定范围,理论上为(−∞,+∞)(-\infty, +\infty)(−∞,+∞) |
| 对异常值 | 非常敏感 | 相对鲁棒 |
| 数据分布 | 不改变原始数据分布 | 改变为均值为0,标准差为1的分布 |
| 适用场景 | 对边界有要求,图像处理 | 大多数机器学习场景,尤其是存在异常值时 |
经验法则:当你不确定用哪种时,优先选择标准化。
3. 白化
3.1 英文名称
Whitening (或 Sphering)
3.2 核心概念
白化是一种比标准化更“激进”的预处理方法。它旨在完成两件事:
- 去相关:消除特征之间的相关性。
- 方差归一化:使所有特征的方差都为1。
最终结果是,转换后的数据其协方差矩阵是单位矩阵(即对角线为1,非对角线为0)。
3.3 为什么需要白化?
特征之间往往存在相关性(例如,图像中相邻的像素点是相关的)。白化通过旋转和缩放数据,使其在新的坐标系下不相关且具有单位方差。这可以:
- 加速模型收敛:对于梯度下降等算法,处理白化后的数据就像在一个“圆”的等高面上优化,比在“椭圆”的等高面上要快得多。
- 作为一些算法的预处理步骤(例如,PCA本身)。
3.4 方法
最常用的方法是PCA白化。
- 对原始数据 XXX 进行PCA(主成分分析)。
- PCA会找到数据的主成分方向(特征向量),并将数据投影到这些方向上,实现去相关。
- 在PCA投影的基础上,将每个主成分特征除以对应的特征值的平方根(即标准差)。
- 公式:XPCAwhite=XPCAλiX_{\text{PCAwhite}} = \frac{X_{\text{PCA}}}{\sqrt{\lambda_i}}XPCAwhite=λiXPCA
- 这一步实现了方差归一化,使得所有方向的方差都变为1。
3.5 应用场景
- 主要用于深度学习、图像识别等领域,在模型输入前对图像进行白化处理。
- 是一种相对“高级”的预处理技术,通常在标准化效果不佳时尝试。
4. 独热编码
4.1 英文名称
One-Hot Encoding
4.2 核心概念
独热编码是将分类变量(Categorical Variables) 转换为机器学习算法易于处理的二进制向量(Binary Vectors) 的方法。
4.3 为什么需要独热编码?
大多数机器学习模型只能处理数值型输入,无法直接处理“红色”、“法国”、“中型”这样的类别标签。即使我们将它们编码为0, 1, 2,模型也会错误地认为这些数字之间存在大小和顺序关系(例如2>1>0,但“中型”并不比“法国”大)。
4.4 方法
为每一个类别创建一个新的二进制特征(或称“虚拟变量”,Dummy Variable)。
- 对于具有 ( k ) 个可能取值的分类特征,我们创建 ( k ) 个新的二进制特征。
- 对于样本的某个取值,只有对应的那个特征为1,其他所有特征都为0。
例子:特征“颜色”有3个类别:红、绿、蓝。
| 原始数据 | 独热编码后 |
| :— | :— | :— | :— |
| 红 | 1 | 0 | 0 |
| 绿 | 0 | 1 | 0 |
| 蓝 | 0 | 0 | 1 |
| 绿 | 0 | 1 | 0 |
4.5 注意事项
- 维度爆炸:如果某个分类特征的类别数量非常多(例如邮政编码),独热编码会产生巨大的特征空间,导致计算和存储问题。此时可以考虑其他编码方式(如目标编码、二进制编码)。
- 共线性:生成的 kkk 个虚拟变量是线性相关的(因为如果一个样本在所有特征中除了一个为0,剩下的那个必然为1)。这可能会影响某些模型(如线性回归)。通常的解决方法是删除其中一个类别,变成 k−1k-1k−1 个特征,这被称为“丢弃第一列”以避免虚拟变量陷阱。
4.6 应用场景
- 几乎所有将分类特征输入到模型(如线性模型、神经网络、SVM)前的必经步骤。
- 树模型(如随机森林、XGBoost)可以直接处理数值型类别标签,但独热编码有时仍能带来性能提升。
5. 数据增强
5.1 英文名称
Data Augmentation
5.2 核心概念
数据增强不是一种简单的数据变换,而是一种通过从现有数据创建新样本来人工增加训练数据集大小的技术。其核心是在保持标签不变的前提下,对原始数据进行一系列随机变换。
5.3 为什么需要数据增强?
深度学习等复杂模型需要大量数据才能表现良好,防止过拟合。但收集和标注数据的成本很高。数据增强通过低成本的方式扩充数据,从而:
- 增加数据量,让模型见识更多的变异。
- 提升模型的泛化能力和鲁棒性,使其对输入数据的不变性(如旋转、平移、噪声等)更强。
- 有效防止过拟合。
5.4 常用方法(因数据类型而异)
-
图像数据
- 几何变换:随机旋转、翻转(水平/垂直)、裁剪、缩放、平移、扭曲。
- 颜色变换:调整亮度、对比度、饱和度、添加噪声。
- 高级技术:混合(Mixup)、切割(Cutout/CutMix)、风格迁移等。
-
文本数据
- 同义词替换:使用同义词库替换词语。
- 随机插入/删除/交换:随机插入、删除或交换句子中的词语。
- 回译:将文本翻译成另一种语言再翻译回来。
- EDA:简单数据增强技术。
-
音频数据
- 时间扭曲:对音频进行轻微的加速或减速。
- 音高变换:改变音高。
- 添加噪声:加入随机背景噪声。
5.5 应用场景
- 计算机视觉:几乎是训练深度学习模型的标准配置。
- 自然语言处理:在数据量较小的情况下非常有用。
- 语音识别:提高模型对不同说话人、环境和噪声的鲁棒性。
总结与对比
| 方法 | 英文 | 核心目的 | 主要应用场景 |
|---|---|---|---|
| 归一化 | Normalization | 消除量纲,将数据缩放到特定区间 | 图像处理,对边界有要求的模型 |
| 标准化 | Standardization | 消除量纲,使数据均值为0,方差为1 | 通用首选,尤其适用于存在异常值的模型 |
| 白化 | Whitening | 去除特征相关性并使方差归一化 | 深度学习,图像识别,用于加速收敛 |
| 独热编码 | One-Hot Encoding | 将分类变量转换为数值型二进制向量 | 处理分类特征,作为模型输入前的准备 |
| 数据增强 | Data Augmentation | 扩充训练数据集,提高模型泛化能力 | 数据不足时,防止过拟合,计算机视觉/NLP |
