讀古今文學網 > 機器學習實戰 > 14.2 矩陣分解 >

14.2 矩陣分解

在很多情況下,數據中的一小段攜帶了數據集中的大部分信息,其他信息則要麼是噪聲,要麼就是毫不相關的信息。在線性代數中還有很多矩陣分解技術。矩陣分解可以將原始矩陣表示成新的易於處理的形式,這種新形式是兩個或多個矩陣的乘積。我們可以將這種分解過程想像成代數中的因子分解。如何將12分解成兩個數的乘積?(1,12)、(2,6)和(3,4)都是合理的答案。

不同的矩陣分解技術具有不同的性質,其中有些更適合於某個應用,有些則更適合於其他應用。最常見的一種矩陣分解技術就是SVD。SVD將原始的數據集矩陣Data分解成三個矩陣UΣVT。如果原始矩陣Data是m行n列,那麼UΣVT就分別是m行m列、m行n列和n行n列。為了清晰起見,上述過程可以寫成如下一行(下標為矩陣維數):

上述分解中會構建出一個矩陣Σ,該矩陣只有對角元素,其他元素均為0。另一個慣例就是,Σ的對角元素是從大到小排列的。這些對角元素稱為奇異值(Singular Value),它們對應了原始數據集矩陣Data的奇異值。回想上一章的PCA,我們得到的是矩陣的特徵值,它們告訴我們數據集中的重要特徵。Σ中的奇異值也是如此。奇異值和特徵值是有關係的。這裡的奇異值就是矩陣Data * DataT特徵值的平方根。

前面提到過,矩陣Σ只有從大到小排列的對角元素。在科學和工程中,一直存在這樣一個普遍事實:在某個奇異值的數目(r個)之後,其他的奇異值都置為0。這就意味著數據集中僅有r個重要特徵,而其餘特徵則都是噪聲或冗余特徵。在下一節中,我們將看到一個可靠的案例。

我們不必擔心該如何進行矩陣分解。在下一節中就會提到,在NumPy線性代數庫中有一個實現SVD的方法。如果讀者對SVD的編程實現感興趣的話,請閱讀Numerical Linear Algebra1。

1. L. Trefethen and D. Bau III, Numerical Linear Algebra (SIAM: Society for Industrial and Applied Mathematics, 1997).