L1-norm 与 L2-norm (Least Absolute Deviations and Least Squares)

本文介绍了L1-norm(最小绝对偏差)和L2-norm(最小二乘)在机器学习中的应用,包括正则化和损失函数。L1-norm具有鲁棒性和稀疏性,适合特征选择,而L2-norm则更稳定,通常导致唯一解。通过实例展示了两者对异常值的敏感度差异。

在练习机器学习时,您可能会选择使用L1范数或L2范数进行正则化或作为损失函数,等等。

L1-范数也称为最小绝对偏差(LAD),最小绝对误差(LAE),又叫做 taxicab-norm 或者 Manhattan-norm。这基本上是将目标值(Yi)与估计值 (f(xi)) 之间的绝对差(S)的总和最小化:
在这里插入图片描述
L2-范数也称为最小二乘。它基本上是最小化目标值(Y i)与估计值(f(x i)之间的差(S)的平方和:
在这里插入图片描述

L1-norm和L2-norm的差异可以迅速总结如下:
L2 L1
鲁棒性 (弱) 鲁棒性 (强)
解法 (稳定) 解法 (不稳定)
唯一解 (是) (可能有多个解)
没有特征选择 内置特征选择
鲁棒性(弱) 鲁棒性(强)
没有稀疏输出
<think>嗯,用户想了解或实现Minimum-Norm Least-Squares (MNLS)算法。首先,我需要回忆一下MNLS的基本概念。MNLS通常用于解决欠定线性方程组,也就是变量数多于方程数的情况。这种情况下,存在无穷多解,而MNLS的目标是找到其中范数最小的解。 根据用户提供的引用,特别是引用[1][2],提到了L1L2范数的区别应用。MNLS可能涉及L2范数,因为最小二乘通常使用L2。不过MNLS的具体实现可能需要更深入的数学背景,比如线性代数中的伪逆矩阵。 接下来,我需要确定MNLS的数学表达。一般来说,当方程组是欠定的,即矩阵A的行数少于列数,Ax = b的解有无穷多。MNLS要求解满足最小范数的最小二乘解,即最小化||x||&sup2;,同时满足Ax ≈ b。这时候通常使用Moore-Penrose伪逆,特别是当A是行满秩时,解可以表示为x = A^T(AA^T)^{-1}b。如果A不是行满秩,可能需要用SVD分解来处理。 然后,考虑如何实现这个算法。在Python中,可以使用NumPy库中的线性代数模块,比如numpy.linalg.pinv来计算伪逆,或者使用SVD分解来手动实现。另外,需要处理可能的数值稳定性问题,比如矩阵的奇异值分解中的小奇异值。 用户可能还需要了解MNLS的应用场景,比如在信号处理、图像恢复或机器学习中的正则化方法。引用[4]提到正则化贝叶斯先验的关系,这里MNLS可以视为一种不带正则化的最小范数解,但有时也会加入正则化项来处理病态问题。 另外,用户提供的引用[3]提到了L2归一化,这在MNLS中可能相关,因为解是L2范数最小的。需要确认MNLS是否涉及归一化步骤,或者是否只是直接应用伪逆。 可能需要注意的问题包括:矩阵的条件数对解的影响,如何选择伪逆的计算方法,以及在实际应用中如何处理高维数据。此外,MNLSTikhonov正则化的区别,后者引入了额外的正则化参数。 总结,回答应该包括MNLS的数学公式、实现步骤、代码示例、应用场景以及相关问题。需要确保公式使用正确的LaTeX格式,并引用提供的参考资料中的相关内容,比如L2范数的应用正则化的概念。</think>### Minimum-Norm Least-Squares (MNLS) 算法详解 MNLS 用于求解欠定线性方程组 $A\mathbf{x} = \mathbf{b}$(变量数 > 方程数),目标是找到满足最小二乘误差的**最小范数解**。其数学形式为: $$ \min_{\mathbf{x}} \|\mathbf{x}\|_2 \quad \text{s.t.} \quad \min_{\mathbf{x}} \|A\mathbf{x} - \mathbf{b}\|_2 $$ #### 实现步骤 1. **矩阵分解**:若 $A$ 行满秩,使用 Moore-Penrose 伪逆 $A^\dagger = A^T(AA^T)^{-1}$;否则用 SVD 分解。 2. **计算伪逆**:通过奇异值分解 $A = U\Sigma V^T$,则伪逆为 $A^\dagger = V\Sigma^\dagger U^T$,其中 $\Sigma^\dagger$ 是 $\Sigma$ 的伪逆(非零奇异值取倒数)。 3. **求解方程**:$\mathbf{x} = A^\dagger \mathbf{b}$,保证解为最小 L2 范数[^2][^4]。 #### Python 实现示例 ```python import numpy as np def mnls_solve(A, b): # 计算伪逆 A_pinv = np.linalg.pinv(A) # 求解最小范数解 x = A_pinv @ b return x # 示例:A为3x5矩阵(欠定系统) A = np.random.randn(3, 5) b = np.random.randn(3) x = mnls_solve(A, b) print("解向量:", x) print("残差范数:", np.linalg.norm(A @ x - b)) ``` #### 关键特性 | 特性 | 说明 | |---------------------|----------------------------------------------------------------------| | 最小二乘性 | 优先满足 $\|A\mathbf{x}-\mathbf{b}\|_2$ 最小化[^2] | | 最小范数约束 | 在满足残差最小的解中,选择 $\|\mathbf{x}\|_2$ 最小的解[^4] | | 应用场景 | 信号重构、图像去模糊、欠定系统参数估计 | | 正则化的关系 | 可视为 Tikhonov 正则化的特例(当正则化参数趋近于0时)[^4] | #### 数值稳定性增强 当矩阵 $A$ 条件数较大时,建议使用 SVD 截断技术: ```python def mnls_svd(A, b, tol=1e-6): U, s, Vt = np.linalg.svd(A, full_matrices=False) s_inv = np.zeros_like(s) s_inv[s > tol] = 1 / s[s > tol] # 截断小奇异值 A_pinv = Vt.T @ np.diag(s_inv) @ U.T return A_pinv @ b ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值