番摊机器人 数据分析和信号处理中,范数被广泛用于计算误差
作者: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 参数来计算各种范数,这是数据科学中最基础且强大的工具之一。