归一化(Normalization) 是数据预处理中的一种常见技术,用于将不同范围的数据调整到同一个标准尺度上,使得它们可以在机器学习模型中更好地协同工作。归一化的主要目的是消除特征之间的尺度差异,以避免某些特征因为取值范围较大而对模型产生不合理的影响。
1. 为什么需要归一化
在机器学习中,数据集通常包含多种不同类型的特征,这些特征的数值范围可能相差很大。例如:
- 在房价预测问题中,房屋的面积可能是数百平方米,而房间数量可能只有个位数。
- 在图像处理中,像素值范围通常是 0 到 255,但其他特征(如颜色直方图)可能会有不同的范围。
归一化的必要性:
- 确保不同特征对模型的贡献一致:如果某个特征的取值范围远大于其他特征,它可能会在计算距离或梯度下降时产生不成比例的影响,导致模型无法公平地对待所有特征。归一化能够消除这种不平衡。
- 加速优化收敛:在使用梯度下降等优化算法时,特征值范围差异过大可能会导致算法收敛缓慢或震荡,归一化可以帮助梯度下降更稳定地收敛。
- 适用于基于距离的模型:像 k 近邻(k-NN)、支持向量机(SVM)等基于距离度量的模型对特征的尺度非常敏感,因此归一化有助于提高模型的准确性。
2. 归一化和标准化的区别
虽然归一化和标准化都用于调整数据的范围,但它们的目标和方法略有不同。
- 归一化(Normalization):通常是将数据缩放到特定的范围内(如 [0, 1] 或 [-1, 1])。它改变数据的范围,但不改变数据的分布形态。
- 标准化(Standardization):是将数据转换为均值为 0、标准差为 1 的标准正态分布形式。标准化改变数据的分布形态,使其符合标准正态分布。
3. 常见的归一化方法
a. Min-Max 归一化
Min-Max 归一化是最常见的归一化方法之一。它将特征值线性缩放到某个固定的范围(通常是 [0, 1])。它通过将每个特征值减去最小值,再除以特征值的范围(最大值减去最小值),从而将所有特征缩放到相同的范围内。
公式为:
x norm = x − x min x max − x min x_{\text{norm}} = \frac{x - x_{\min}}{x_{\max} - x_{\min}} xnorm=xmax−xminx−xmin