【漫话机器学习系列】186.归一化观测值(Normalizing Observations)

归一化观测值(Normalizing Observations)

1. 引言

在机器学习和数据处理领域,特征的归一化(Normalization)是一项至关重要的预处理步骤。不同特征的取值范围可能差异很大,如果直接使用未经归一化的数据进行训练,可能会导致模型学习效果较差,收敛速度慢,甚至无法收敛。因此,归一化技术被广泛应用于各种机器学习算法中,尤其是在梯度下降优化、神经网络和支持向量机等模型中。

本篇文章将详细介绍 归一化观测值(Normalizing Observations) 的概念,重点讲解 L1 范数归一化L2 范数归一化,并给出数学公式、直观解释及 Python 代码示例。


2. 为什么需要归一化?

在数据分析和机器学习任务中,我们通常会遇到以下问题:

  1. 不同特征的尺度差异过大
    例如,在房价预测问题中,房屋面积的取值范围可能是 50 到 500 平方米,而房龄可能是 1 到 100 年。由于数值大小不同,模型可能会更关注数值较大的特征,而忽略数值较小的特征,从而导致偏差。

  2. 加速梯度下降收敛
    在使用梯度下降法进行优化时,如果特征值的尺度不一致,损失函数的等高线可能是一个“狭长椭圆”,导致梯度下降的步长难以调整,从而减慢训练速度。归一化后的特征使等高线更加接近圆形,有助于梯度下降更快地收敛。

  3. 提高模型的数值稳定性
    在神经网络中,未经归一化的数据可能会导致前向传播时某些神经元输出过大,影响激活函数的计算,使得梯度消失或梯度爆炸,从而影响模型训练。


3. 归一化的定义

归一化的本质是 调整每个观测值的特征尺度,使其具有单位范数,即使得特征向量的模长为 1。

数学上,我们可以使用不同的范数(Norm)来进行归一化。最常见的两种范数是:

  • L1 范数归一化(Manhattan Norm)

  • L2 范数归一化(Euclidean Norm)


4. L2 范数归一化(Euclidean Normalization)

L2 范数(欧几里得范数)定义如下:

\|x\|_2 = \sqrt{x_1^2 + x_2^2 + ... + x_n^2}

其中:

  • x = (x_1, x_2, ..., x_n) 是一个 n 维特征向量。

  • L2 范数是该向量在欧几里得空间中的长度(即欧几里得距离)。

L2 归一化公式:

x' = \frac{x}{\|x\|_2} = \frac{x}{\sqrt{x_1^2 + x_2^2 + ... + x_n^2}}

直观理解:

  • L2 归一化会将向量的模长调整为 1,同时保持原有的方向不变。

  • 它可以用于确保特征向量的尺度一致,适用于距离度量型的机器学习算法,如 KNN(K 近邻算法)、SVM(支持向量机)等。

Python 实现(L2 归一化):

import numpy as np

# 原始特征向量
x = np.array([3, 4])

# 计算 L2 范数
l2_norm = np.linalg.norm(x, ord=2)

# 进行归一化
x_normalized = x / l2_norm

print("原始向量:", x)
print("L2 归一化后:", x_normalized)

输出:

原始向量: [3 4]
L2 归一化后: [0.6 0.8]

在此示例中,(3,4) 向量的 L2 范数为 5,归一化后变为 (0.6, 0.8),长度调整为 1。


5. L1 范数归一化(Manhattan Normalization)

L1 范数(曼哈顿范数)定义如下:

\|x\|_1 = |x_1| + |x_2| + ... + |x_n|

L1 归一化公式:

x' = \frac{x}{\|x\|_1} = \frac{x}{|x_1| + |x_2| + ... + |x_n|}

直观理解:

  • L1 归一化确保所有特征值的绝对值之和为 1。

  • 适用于稀疏特征的情况,如文本数据表示(例如 TF-IDF 归一化)。

  • 在某些应用场景(如 Lasso 回归)中,L1 归一化更有利于特征选择,因为它鼓励稀疏解。

Python 实现(L1 归一化):

# 计算 L1 范数
import numpy as np
from linalg import x

l1_norm = np.linalg.norm(x, ord=1)

# 进行归一化
x_normalized = x / l1_norm

print("L1 归一化后:", x_normalized)

输出:

L2 范数 of x: 5.0
L1 范数 of x: 7.0
x 和 y 的内积: 11
L1 归一化后: [0.42857143 0.57142857]


6. L1 与 L2 归一化的对比

归一化方法 公式 适用场景
L1 归一化 x' = \frac{x}{\|x\|_1} 适用于文本数据、稀疏特征、Lasso 回归
L2 归一化 x' = \frac{x}{\|x\|_2} 适用于欧几里得距离度量、KNN、SVM

一般来说:

  • L1 归一化 更适合于高维稀疏特征,如文本分类任务。

  • L2 归一化 适用于数据聚类、回归分析、KNN 等任务。


7. 总结

在数据预处理中,归一化(Normalization) 是一个重要的步骤,可以提高机器学习模型的性能和训练速度。

  • L1 归一化 适用于文本数据和稀疏特征,有助于特征选择。

  • L2 归一化 适用于欧几里得空间,能让梯度下降更稳定,提高模型收敛速度。

在实际应用中,应根据具体任务选择合适的归一化方法,以优化模型的效果!