欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

最小二乘拟合(矩阵)

程序员文章站 2022-07-12 20:59:25
...

最小二乘公式

B=(XTX)1XTY


Bn×1矩阵
Xm×n矩阵,输入变量/特征
Ym×1矩阵,输出变量/目标变量
m样本数
n特征个数


given:XB=Y
XTXB=XTY
B=(XTX)1XTY

为什么 XB=Y 不直接得出 B=X1Y ?
答:因为X为m×n的矩阵,是不存在逆矩阵的。

Tips
如果一个矩阵不是方阵,是不存在逆矩阵的 如果对其求逆,就是求它的伪逆
比如一个2×3的矩阵,它的伪逆矩阵就是一个3×2的矩阵,两者相乘之后得到2×2的单位矩阵


矩阵X必须是列满秩矩阵,否则XTX的逆就不会存在。

若A为m×n的矩阵,b为m×1的矩阵,则Ax=b表达了一个线性方程组,它的(normal equation)的形式为ATAx=ATb

当Ax=b有解时(即矩阵[A|b]的秩与A的秩相同),Ax=b与ATAx=ATb的解集是一样。

而当Ax=b无解时,ATAx=ATb仍然有解,其解集即(least squares solution),即使得(Axb)T(Axb)的值最小的解,可以理解为使方程组Ax=b近似成立且误差最小的解。

最小二乘法和梯度下降法


1 、本质相同:两种方法都是在给定已知数据(因变量 & 自变量)的前提下对因变量算出出一个一般性的估值函数。然后对给定的新的自变量用估值函数对其因变量进行估算。
2、 目标相同:都是在已知数据的框架内,使得估算值与实际值的差的平方和尽量更小(事实上未必一定要使用平方),估算值与实际值的差的平方和的公式为:

error=J(θ)=i=1m(hθ(x(i))y(i))2

hθ(x)=ni=0θixi=θTX 为预测函数,θ=[θ0,θ1,...θn]TX=[x0,x1,...xn]T,m为样本数,n为特征个数。


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():矩阵的逆