【数学和算法】最小二乘法,SVD奇异值分解、LU分解的应用场景
生活随笔
收集整理的這篇文章主要介紹了
【数学和算法】最小二乘法,SVD奇异值分解、LU分解的应用场景
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多項式擬合曲線時使用最小二乘法,把問題化簡為A*x=B的線性方程組;
然后使用LU矩陣分解算法求解線性方程組A*x=B,具體做法是:
- 先對矩陣A進行行初等變換得到上三角矩陣U;
- 再求出下三角矩陣L,就變成了求解L*U*x=B,由于L、U是下三角或上三角矩陣,所以很容易求解x;
SVD奇異值分解也是用來對矩陣進行分解,他是把一個矩陣分解為三個矩陣。它是使用特殊方法來求解出矩陣的左奇異矩陣U和右奇異矩陣V和奇異值矩陣。但是求解U、V的方法有很多種,并非只有使用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問題求解。
總結
以上是生活随笔為你收集整理的【数学和算法】最小二乘法,SVD奇异值分解、LU分解的应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数学和算法】SVD奇异值分解原理、以及
- 下一篇: 【多线程】join()和detach()