










面临过拟合、特征冗余或模型不稳定?L1和L2范数正是你的解决方案!本文揭示这两种核心范数如何通过正则化有效控制模型复杂度。L1范数在特征选择和稀疏建模中展现强大威力,L2范数则在确保参数平滑与优化稳定性上表现卓越。深入理解它们的几何直观与数学性质,助你精确诊断并解决实际问题,构建更健壮、更高效的机器学习模型。
范数是机器学习中衡量“大小”“距离”“复杂度”的通用工具,核心作用包括误差度量、正则化、向量归一化和稀疏建模。本文将从定义、分类、应用场景及几何直观等角度系统梳理范数的技术要点。
定义:范数是线性代数中用于度量向量“长度”或“大小”的函数,直观上表示向量离原点的距离。
数学意义:通过范数可将向量空间映射到非负实数,用于量化向量的“重要性”或“差异程度”。
import numpy as np
def mae(y_true, y_pred):
return np.mean(np.abs(y_true - y_pred))
def mse(y_true, y_pred):
return np.mean((y_true - y_pred)**2)
y_true = np.array([1, 2, 3])
y_pred = np.array([1.1, 1.9, 3.2])
print("MAE:", mae(y_true, y_pred)) # 输出: 0.1
print("MSE:", mse(y_true, y_pred)) # 输出: 0.04
from sklearn.linear_model import Lasso, Ridge
import numpy as np
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([3, 7, 11])
# L1正则化(特征选择)
lasso = Lasso(alpha=0.1)
lasso.fit(X, y)
print("L1参数:", lasso.coef_) # 可能输出: [1. 0.](稀疏解)
# L2正则化(参数平滑)
ridge = Ridge(alpha=0.1)
ridge.fit(X, y)
print("L2参数:", ridge.coef_) # 输出: [0.9 1.1](非零但较小)
将向量缩放到单位长度(如$|x|_2=1$),常用于余弦相似度计算。在来此加密申请的SSL证书最多支持100个域名。范数正则化。
import numpy as np
x = np.array([3, 4])
x_normalized = x / np.linalg.norm(x, 2) # L2归一化
print("归一化后:", x_normalized) # 输出: [0.6 0.8]
L1正则可自动“筛选”重要特征,适用于基因数据分析、推荐系统等场景。
(注:实际回答中可替换为真实几何图)
| 特性 | L1范数 | L2范数 |
|---|---|---|
| 公式 | $\sum | x_i |
| 别名 | 曼哈顿距离 | 欧几里得距离 |
| 正则化应用 | Lasso(特征选择) | Ridge(稳定优化) |
| 损失函数 | MAE(鲁棒) | MSE(敏感大误差) |
| 适用场景 | 高维稀疏数据 | 连续模型控制复杂度 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。