主成分分析和奇異值分解進行降維有何共同點?
矩陣的奇異值分解
當矩陣不是方陣,無法為其定義特征值與特征向量,可以用一個相似的概念來代替:奇異值。
通常用一種叫奇異值分解的算法來求取任意矩陣的奇異值:
抽象的概念要用具體的方式理解,來看幾張圖:
上圖中的紅色區域是一個以原點為中心的單位圓。圓當中的任意一點可以用向量 x 標示,且 x 滿足:
給定一個 2×2 的方陣:
利用 MATLAB 對 A 做奇異值分解:
即:
所以:
先看 V' 對 x 做了什么:
V' 使 x 旋轉了一個角度。
再看 SV' 對 x 做了什么:
S 在 V'x 的基礎上,在兩個主方向進行了伸縮變換。
最后看 USV' 對 x 做了什么:
U 在 SV'x 的基礎上,進行了旋轉變換。
至此,奇異值分解的幾何意義可謂一目了然:
A 是一個線性變換,把 A 分解成 USV',S 給出了變換后橢圓長短軸的長度, U 和 V' 一起確定了變換后的方向,所以 U、S、V' 包含了這個線性變換的全部信息。S 矩陣的對角線元素稱為 A 的奇異值,與特征值一樣,大的奇異值對應長軸,小的奇異值對應短軸,大的奇異值包含更多信息。
當矩陣是對稱方陣時,其特征值與奇異值相等。
網上有一個很經典的案例來說明 SVD 的應用:
有一張 25×15 的圖片:
把它用矩陣表示:
這個矩陣的秩等於 3。即矩陣只有 3 種線性無關的列,其他的列都是冗余的:
對 M 做奇異值分解,得到 3 個不為零的奇異值:
它們分別對應着 3 個線性無關的列。
另一種更一般的情況,處理一張有噪聲的圖片
它的奇異值為:
可以想象在15維空間中有一個超橢球體,它有15個軸,其中有3個軸是主要的軸(對應着3個最大的奇異值),有這3個軸就可以大致勾勒出超橢球體的形狀,因為它們包含了大部分信息。
如果 S 中的對角線元素從大到小排列,我們就只保留 S 左上角的 3×3 的子矩陣,並相應保留 U 和 V 的前 3 列,簡化后的 U、S、V 依然保留了 M 的大部分信息:
主成分分析
案例1
假如有 m 條1維數據,由於混入了噪音,變成了2維。
在坐標系中把他們繪制出來:
主成分分析(PCA)可以用來排除這些噪音,把原來的維度提取出來。
首先將數據歸一化,並將其所包含的信息用 協方差矩陣(協方差矩陣表示不同維度之間的相關關系,這是一個對稱矩陣)來表示:
Σ 有2個奇異值,例如:
顯然前者包含了大部分信息,對應的矩陣 U 的第一列就是主成分的方向:
於是就通過降維對數據實現了去噪。
在更一般的情況下,假設有 m 條 n 維的數據,對協方差矩陣進行奇異值分解得到 n 個從大到小排列的奇異值:
如果希望信息利用率在99%以上,可利用如下不等式來確定主成分的維度 p:
參見以下鏈接文章.
https://my.oschina.net/findbill/blog/535044