最小二乘拟合(矩阵)
程序员文章站
2022-07-12 20:59:25
...
最小二乘公式
为什么
XB=Y 不直接得出B=X−1Y ?
答:因为X为m×n的矩阵,是不存在逆矩阵的。Tips:
如果一个矩阵不是方阵,是不存在逆矩阵的 如果对其求逆,就是求它的伪逆
比如一个2×3的矩阵,它的伪逆矩阵就是一个3×2的矩阵,两者相乘之后得到2×2的单位矩阵
矩阵X必须是列满秩矩阵,否则
若A为m×n的矩阵,b为m×1的矩阵,则Ax=b表达了一个线性方程组,它的
当Ax=b有解时(即矩阵[A|b]的秩与A的秩相同),Ax=b与
而当Ax=b无解时,
最小二乘法和梯度下降法
1 、本质相同:两种方法都是在给定已知数据(因变量 & 自变量)的前提下对因变量算出出一个一般性的估值函数。然后对给定的新的自变量用估值函数对其因变量进行估算。
2、 目标相同:都是在已知数据的框架内,使得估算值与实际值的差的平方和尽量更小(事实上未必一定要使用平方),估算值与实际值的差的平方和的公式为:
1、实现方法和结果不同:
-
最小二乘法 是直接对error求导找出全局最小,是非迭代法 。 -
梯度下降法 是一种迭代法 ,有一个学习的过程,先由给定参数计算一个error,然后向该error下降最快的方向调整参数值,在若干次迭代之后找到局部最小。
梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。
参考:
遇到的问题:
TypeError: No loop matching the specified signature and casting was found for ufunc solve1
【原因】:
矩阵运算前没有统一数据类型
【解决】:
X = X.astype(float)
参考:
性质
- 可逆矩阵的秩等于阶数
- 可逆矩阵为满秩矩阵
- 奇异矩阵为降秩矩阵
- 当矩阵A的行列式|A|不等于0时,才存在可逆矩阵
计算可逆矩阵报错
- 检查矩阵是否可逆(行列式的值不为0或者为满秩矩阵)
from numpy.linalg import det, inv, matrix_rank
from scipy import ndim
ndim(A) # ndim():数组的维度
det(A) # det():行列式
matrix_rank(A) # matrix_rank():矩阵的秩
inv(A) # inv():矩阵的逆
上一篇: 算法设计与分析 矩阵链乘 动态规划
下一篇: webpack 使用方法