【数学和算法】最小二乘法,SVD奇异值分解、LU分解的应用场景

多项式拟合曲线时使用最小二乘法,把问题化简为A*x=B的线性方程组;

然后使用LU矩阵分解算法求解线性方程组A*x=B,具体做法是:

  • 先对矩阵A进行行初等变换得到上三角矩阵U
  • 再求出下三角矩阵L,就变成了求解L*U*x=B,由于LU是下三角或上三角矩阵,所以很容易求解x

SVD奇异值分解也是用来对矩阵进行分解,他是把一个矩阵分解为三个矩阵。它是使用特殊方法来求解出矩阵的左奇异矩阵U和右奇异矩阵V和奇异值矩阵。但是求解UV的方法有很多种,并非只有使用A^T*A 这一个方法,而且计算矩阵A^T*A 这个方法计算量太大,不合适。该博客是以这种方法为例,所以这一点需要明白。

SVD的实现算法有很多种,可以不用先求出矩阵 X^T * X ,也能求出我们的右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解,而是做SVD来完成。这个方法在样本量很大的时候很有效。
实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们我们认为的暴力特征分解。


涉及到求矩阵X协方差矩阵的,都需要进行以下步骤:

  • X的各个维度 均值;
  • X的各个维度减去均值,再赋值给X,即in place就地操作;
  • 计算X的协方差矩阵C = 1/m * X * X^T

深入理解PCA与SVD的关系讲解了PCA问题可以转化为SVD问题求解。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u011754972/article/details/120842237