置顶

番摊机器人 数据分析和信号处理中,范数被广泛用于计算误差

作者:admin | 分类:番摊机器人 | 浏览:2 | 日期:2026年10月08日

范数(Norm)‌ 是数学中用于度量向量或矩阵“长度”、“大小”或“能量”的函数。简单来说,它告诉我们一个向量离原点有多远,或者一个矩阵的规模有多大。


在机器学习、数据分析和信号处理中,范数被广泛用于计算误差、正则化(防止过拟合)以及衡量相似度。


1. 范数的核心定义


一个合法的范数必须满足以下三个基本性质:


非负性‌:范数结果总是 

≥

0

≥0,且仅当向量为零向量时结果为 0。

齐次性‌:向量缩放 

𝑘

k 倍,范数也缩放 

∣

𝑘

∣

∣k∣ 倍。

三角不等式‌:两个向量之和的范数,小于等于它们各自范数之和。

2. 常见的范数类型

L1 范数(曼哈顿范数)‌:向量中所有元素绝对值之和。常用于稀疏特征选择。

L2 范数(欧几里得范数)‌:向量元素平方和的平方根。即我们直觉中的“直线距离”。

L

∞

∞ 范数(最大范数)‌:向量中绝对值最大的那个元素的值。

Frobenius 范数‌:针对矩阵,所有元素平方和的平方根(相当于把矩阵拉直成向量后的 L2 范数)。

3. 用 NumPy 动手算一遍


下面通过 Python 的 numpy 库,直观地计算不同范数,帮助你理解它们的区别。


python

import numpy as np


# 创建一个示例向量

v = np.array([3, -4, 0])

print(f"向量 v: {v}")

print("-" * 30)


# 1. L1 范数 (Manhattan Norm)

# 定义: |3| + |-4| + |0| = 7

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

print(f"L1 范数 (元素绝对值之和): {l1_norm}")


# 2. L2 范数 (Euclidean Norm) - 默认情况

# 定义: sqrt(3^2 + (-4)^2 + 0^2) = sqrt(9+16) = 5

l2_norm = np.linalg.norm(v, ord=2) # 或者直接用 np.linalg.norm(v)

print(f"L2 范数 (欧几里得距离/模): {l2_norm}")


# 3. L-inf 范数 (Max Norm)

# 定义: max(|3|, |-4|, |0|) = 4

linf_norm = np.linalg.norm(v, ord=np.inf)

print(f"L∞ 范数 (最大绝对值):     {linf_norm}")


print("-" * 30)


# 4. 矩阵范数示例

# 创建一个 2x2 矩阵

A = np.array([[1, 2], 

              [3, 4]])

print(f"矩阵 A:\n{A}")


# Frobenius 范数 (默认矩阵范数)

# 定义: sqrt(1^2 + 2^2 + 3^2 + 4^2) = sqrt(1+4+9+16) = sqrt(30) ≈ 5.477

fro_norm = np.linalg.norm(A, ord='fro')

print(f"Frobenius 范数: {fro_norm:.4f}")


# 矩阵的 1-范数 (列和的最大值)

# 第1列和: |1|+|3|=4, 第2列和: |2|+|4|=6 -> 最大值 6

mat_l1 = np.linalg.norm(A, ord=1)

print(f"矩阵 1-范数 (最大列和): {mat_l1}")


# 矩阵的 inf-范数 (行和的最大值)

# 第1行和: |1|+|2|=3, 第2行和: |3|+|4|=7 -> 最大值 7

mat_linf = np.linalg.norm(A, ord=np.inf)

print(f"矩阵 ∞-范数 (最大行和): {mat_linf}")


4. 代码运行结果解读


对于向量 v = [3, -4, 0]‌:


L1 = 7‌:想象你在城市街道网格中行走,从原点到 (3, -4) 需要走的总步数(横着走3步,竖着走4步)。

L2 = 5.0‌:这是从原点到点 (3, -4) 的直线距离(勾股定理 

3

2

+

4

2

=

5

3

2

+4

2


=5)。

L

∞

∞ = 4.0‌:只关心哪个分量最大,这里 -4 的绝对值最大。


对于矩阵 A‌:


Frobenius 范数‌:衡量矩阵整体的“能量”或大小,类似于向量的 L2 范数。

1-范数与 

∞

∞-范数‌:分别关注矩阵列方向和行方向的最大累积影响,常用于分析线性变换对向量的放大倍数。

5. 为什么要在机器学习中关注范数?

正则化(Regularization)‌:

L1 正则化‌(Lasso):倾向于产生稀疏解(很多参数变为 0),用于特征选择。

L2 正则化‌(Ridge):倾向于让参数整体变小且平滑,防止模型过拟合。

损失函数‌:

均方误差(MSE)本质上是预测值与真实值之差的 ‌L2 范数‌的平方。

平均绝对误差(MAE)本质上是预测值与真实值之差的 ‌L1 范数‌。

归一化‌:

在计算余弦相似度之前,通常会将向量除以其 L2 范数,将其缩放到单位长度。


通过 np.linalg.norm 函数,你可以灵活地指定 ord 参数来计算各种范数,这是数据科学中最基础且强大的工具之一。