numpy.linalg矩阵求逆或伪逆

最近做数据挖掘又接触到线性代数,把逆和伪逆简单总结一下。

求逆

numpy.linalg.inv(a)

该函数求矩阵的逆,要求矩阵a是方阵并且非奇异

判断方阵非奇异有如下充要条件:

  • 一个方阵非奇异,当且仅当它满秩。
  • 一个方阵非奇异,当且仅当它行列式不为0。

如果矩阵是奇异的,它就不存在逆矩阵,还有没有办法求一个近似解呢?答案就是伪逆矩阵

求伪逆

伪逆矩阵可以顾名思义,它也叫广义逆矩阵。伪逆矩阵有Penrose定义和E.H.Moore定义,实质上它们是等价的,在这里不详述。

求伪逆的方法是对矩阵a进行奇异值分解(SVD),可以用numpy.linalg的函数:

numpy.linalg.inv(a)

伪逆矩阵的应用很多,最简单的就是求解最小二乘问题,其解的矩阵形式为

B=(XTX)-1XTY

如果X不是列满秩,那么XTX就不存在逆矩阵,此时就要求伪逆来代替。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容