本文最后更新于:2024年5月7日 下午
之前分析过最小二乘的理论,记录了 Scipy 库求解的方法,但无法求解多元自变量模型,本文记录更加通用的伪逆矩阵求解最小二乘解的方法。
背景
我已经反复研习很多关于最小二乘的内容,虽然朴素但是着实花了一番功夫:
-
介绍过最小二乘在线性回归中的公式推导;
-
分析了最小二乘的来源和其与高斯分布的紧密关系;
-
学习了伪逆矩阵在最小二乘求解过程中的理论应用;
-
记录了 Scipy 用于求解最小二乘解的函数;
已经有工具可以解很多最小二乘的模型参数了,但是几个专用的最小二乘方法最多支持一元函数的求解,难以计算多元函数最小二乘解,此时就可以用伪逆矩阵求解了。
多元多项式形式模型
这个概念可能不够准确,我要描述的是形如如下函数的一类模型:
$$
f( {\bf x} )=\sum _{i=1}^{n}a_if_i(x_i)
$$
其中模型 $f({\bf x})$ 的参数为 $[a_1, a_2, …,a_n]$,$f_i(x_i)$ 表示确定的关于某个变量 $x_i$ 的函数。
最小二乘的损失函数为:
$$
L= \sum_{i=1}\left(f\left(x_{i}\right)-y_{i}\right){2}
$$
对于上述模型,可以利用伪逆求最小二乘解的方法可以用于求解类似线性多项式形式的模型参数,这样就可以求解多元、更加复杂的模型参数。
- 本质上来说,就是因为这种形式的模型可以凑出形如 $A x=b$ 的矩阵表示,因此可以用这种方法求解。
伪逆求解
在介绍伪逆的文章中其实已经把理论说完了,这里搬运结论:
- 方程组 $A x=b$ 的最佳最小二乘解为 $x=A^{+} b$,并且最佳最小二乘解是唯一的。
实例应用
Python 求逆矩阵
矩阵求逆
1 |
|
矩阵求伪逆
1 |
|
应用示例
假设我们需要拟合一个多元的复杂的但是参数为多项式形式的模型参数,模型为:
$$
f( {\bf x} )=p_1\frac{e^{x_1}}{\sqrt{x_1}}+p_2 x_2^{1.5} + p_3 \sin x_3
$$
模型真实参数为 $[7, 3, 12]$,用伪逆矩阵求解,示例代码如下:
1 |
|
输出结果:
1 |
|
参考资料
- https://www.zywvvd.com/notes/study/probability/least-square-normal-dis/least-square-normal-dis/
- https://www.zywvvd.com/notes/study/math/regression/linear-regression/linear-regression/
- https://www.zywvvd.com/notes/coding/python/scipy-leastsquare/scipy-leastsquare/
- https://www.zywvvd.com/notes/study/linear-algebra/inverse-matrix/gen-inverse-matrix/
文章链接:
https://www.zywvvd.com/notes/study/math/regression/leastsq-gen-inverse/leastsq-gen-inverse/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付