「矩陣接近奇異值,或者縮放錯誤」解決方法

2020-12-17 平凡的科研

對矩陣求逆或者求解線性方程組時,若出現「矩陣接近奇異值,或者縮放錯誤。結果可能不準確。Matrix is close to singular or badly scaled. Results may be inaccurate.」報錯信息,可能是選取的求逆函數不合適導致的,可使用求解最小範數最小二乘解的方法進行解決。

Matlab中一般有四種求解線性方程組的方法,下面依次進行簡單介紹,具體函數使用方法可查詢MATLAB官方文檔。

假設有線性方程組

Ax=b

其中A為係數矩陣,x為待求解未知量列向量。

MATLAB中有4種方法常用來進行求解:

1. 直接求逆

使用函數x=inv(A)*b,此方法等價於x=A^(-1)*b,但這種方法是通過構造顯式逆矩陣,如果A接近奇異或奇異,會返回不準確的結果。並且實際很少需要知道矩陣求逆結果,一般求解線性方程組時很少使用此種方法。

2. 使用反斜槓求解

即x=A\b,這種方法使用的是高斯消元法,不需構造矩陣求解,就求解速度和精度而言,這種方法比方法1要好。

3. 求偽逆

使用函數x=pinv(A)*b。即Moore-Penrose偽逆矩陣,相關概念可見官方文檔。此方法主要用於求解沒有唯一解的線性方程組,適用於A接近或者就是奇異矩陣的情況,若A非奇異求解成本要高於使用inv(),可使用rcond()函數求解條件數,判斷A是否奇異。

4. 求最小範數最小二乘解

使用函數x=lsqminnorm(A,b)。此方法在矩陣接近奇異或者奇異時,相比pinv()這種方法更加有效,因此最小範數最小二乘解不僅會使||Ax-b||最小,還會使||x最小。

因此,若產生「矩陣接近奇異值,或者縮放錯誤。結果可能不準確。」報錯信息,可使用方法3和方法4來解決,其中方法4會更加有效。

相關焦點

  • 強大的矩陣奇異值分解(SVD)及其應用
    特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 奇異值分解及其應用
    特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 奇異值分解和矩陣分解傻傻分不清楚?一文幫你理清兩者差異!
    在推薦系統的相關研究中,我們常常用到兩個相關概念:矩陣分解和奇異值分解。這兩個概念是同一種算法嗎?兩者到底有什麼差別?在本文中,作者梳理了兩種算法的概念、來源和內容,並進行了比較。通過對相關內容的梳理,作者提出,矩陣分解是推薦系統中最初使用的概念,奇異值分解是對該方法的進一步發展。在現在的討論中,一般將兩種方法統一成為奇異值分解。
  • 奇異值分解(SVD)
    SVD思維導圖奇異值分解(Singular Value Decomposition,SVD),是一種提取信息的方法。比如有一份記錄用戶關於餐館觀點的數據,要對其進行處理分析,提取背後的因素,這個因素可能是餐館的類別,烹飪配料等,然後利用這些因素估計人們對沒有去過的餐館的看法,從而進行推薦,提取這些信息的方法就叫奇異值分解法。
  • 【基礎】奇異值分解的原理與應用
    本文對適用範圍很廣的奇異值分解方法進行了介紹,並通過代碼演示說明了其工作方式、計算方法及其常見的幾種基礎應用。矩陣分解也叫矩陣因子分解,涉及到用給定矩陣的組成元素描述該矩陣。奇異值分解(SVD)可能是最著名和使用最廣泛的矩陣分解方法。所有矩陣都有一種 SVD 方法,這使得其比特徵分解(eigendecomposition)等其它方法更加穩定。
  • 奇異值分解, 這一篇就夠了
    所有矩陣都有一種 SVD 方法,這使得其比特徵分解(eigendecomposition)等其它方法更加穩定。因此,這種方法在很多應用中都有應用,包括壓縮、去噪、數據壓縮。在這份教程中,你將了解用於將矩陣分解成其組成元素的奇異值分解方法。在完成本教程後,你將了解: 那就開始吧!
  • 一文讓你通俗理解奇異值分解
    特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 什麼是矩陣的範數
    在介紹主題之前,先來談一個非常重要的數學思維方法:幾何方法。
  • 幾何角度理解奇異值分解SVD
    一、左乘矩陣的幾何意義 向量左乘對角矩陣,幾何上相當對這個向量的長度進行縮放,此處坐標軸保持不變; 向量左乘對稱矩陣,幾何上相當於對這個向量的長度進行縮放,並且對坐標軸也進行旋轉; 給向量左乘普通矩陣,總能找到一組正交的坐標軸來表示該向量
  • 一文讀懂機器學習中奇異值分解SVD
    矩陣分解1.1 矩陣分解作用1.2 矩陣分解的方法一文讀懂機器學習中奇異值分解SVD1.3 推薦學習的經典矩陣分解算法SVD具體介紹2.1 特徵值、特徵向量、特徵值分解2.2 SVD分解2.3 SVD分解的應用1.
  • 奇異值分解(SVD) 的 幾何意義
    但實際上,這並非是求解奇異值的方法,效率會非常低。這裡也主要不是討論如何求解奇異值,為了演示方便,採用的都是二階矩陣。應用實例(Another example)現在我們來看幾個實例。實例一換句話說,如果某些奇異值非常小的話,其相對應的幾項就可以不同出現在矩陣 M 的分解式中。因此,我們可以看到矩陣 M 的秩的大小等於非零奇異值的個數。實例二我們來看一個奇異值分解在數據表達上的應用。假設我們有如下的一張 15 x 25 的圖像數據。
  • 通俗易懂的講解奇異值分解(SVD)和主成分分析(PCA)
    因此對於一個m×n維的矩形矩陣,我們能夠使用下面的方法對其進行特徵分解——即奇異值分解:其中,矩陣U和V是正交矩陣,Σ表示一個包含有奇異值的對角陣。其實SVD的主要目標就是為了找到三個參數:矩陣v,矩陣u和奇異值σ,其中矩陣v和u都是正交向量且滿足下面等式:一個n維的列向量v經過矩陣A的變換等於一個m維的行向量u經過奇異值σ的縮放
  • 奇異值分解簡介:從原理到基礎機器學習應用
    矩陣分解在機器學習應用中的重要性無需多言。本文對適用範圍很廣的奇異值分解方法進行了介紹,並通過代碼演示說明了其工作方式、計算方法及其常見的幾種基礎應用。矩陣分解也叫矩陣因子分解,涉及到用給定矩陣的組成元素描述該矩陣。
  • 入門 | 奇異值分解簡介:從原理到基礎機器學習應用
    本文對適用範圍很廣的奇異值分解方法進行了介紹,並通過代碼演示說明了其工作方式、計算方法及其常見的幾種基礎應用。矩陣分解也叫矩陣因子分解,涉及到用給定矩陣的組成元素描述該矩陣。奇異值分解(SVD)可能是最著名和使用最廣泛的矩陣分解方法。
  • 奇異值分解(SVD) 的幾何意義
    σ1 和 σ2分別表示這不同方向向量上的模,也稱作為矩陣 M 的奇異值。但實際上,這並非是求解奇異值的方法,效率會非常低。這裡也主要不是討論如何求解奇異值,為了演示方便,採用的都是二階矩陣。應用實例(Another example)現在我們來看幾個實例。實例一
  • 奇異值分解(SVD)原理
    一般會把W的這n個特徵向量標準化,即滿足||wi||^2=1, 或者說wi^Twi=1,此時W的n個特徵向量為標準正交基,滿足W^TW=I,即W^T=W^−1, 也就是說W為酉矩陣。這樣特徵分解表達式可以寫成A=WΣW^T注意到要進行特徵分解,矩陣A必須為方陣。
  • 奇異值分解SVD
    奇異值分解(SVD)在計算機視覺中有著廣泛的應用,如數據降維、推薦系統、自然語言處理等。本文是介紹SVD的數學計算過程,並從SVD的性質說明其應用的原理。奇異值分解(SVD)與特徵分解類似,是將矩陣分解為由奇異值(特徵值)和特徵向量表示的矩陣之積的方法。因而,在介紹SVD前有必要先介紹特徵值、特徵向量和特徵分解。
  • 線性代數(Gelbert)---奇異值分解
    奇異值分解的形式與對稱矩陣的 A = Q∧QT 類似,將矩陣分解為正交矩陣乘對角陣乘正交矩陣的形式,並且這種分解對任意矩陣都成立(奇異值分解是特徵分解在任意矩陣上的推廣:https://www.zhihu.com/question/263722514,看個意思就行,和這一課關係不大)。
  • 人工智慧的數學(1)奇異值分解
    在數據分析的過程中,當原數據排成的矩陣規模較大時,通過奇異值分解,可將其分為左奇異矩陣、奇異值矩陣、右奇異矩陣,三個較小的矩陣,便於儲存和傳輸。同時奇異值分解也便於進行對矩陣的數值運算的近似操作。奇異值分解的英文是Singular Value Discomposition,也就是通常說的SVD。
  • 奇異值的物理意義是什麼?
    我們記這個像素矩陣為我們都知道,圖片實際上對應著一個矩陣,矩陣的大小就是像素大小,比如這張圖對應的矩陣階數就是450*333,矩陣上每個元素的數值對應著像素值。我們記這個像素矩陣為 現在我們對矩陣進行奇異值分解。直觀上,奇異值分解將矩陣分解成若干個秩一矩陣之和,用公式表示就是: 其中等式右邊每一項前的係數就是奇異值,