PCA演算法學習記錄

2021-09-07 15:10:16 字數 3052 閱讀 1889

重要宣告:以下內容主要參考吳恩達機器學習課程和張洋的pca數學原理文章

降維(dimensionality reduction)降維的目的:(1)資料壓縮(2)視覺化資料。

pca(principal component analysis)是一種常用的資料分析方法。pca通過線性變換將原始資料變換為一組各維度線性無關的表示,可用於提取資料的主要特徵分量,常用於高維資料的降維。

在pca中,我們希望找到乙個由k個方向向量(vector direction)組成的低維度空間,所有資料投射到該低維度空間的投射誤差(projection error)盡可能小。方向向量要經過原點,投射誤差是資料到該方向向量的垂線長度。

以上是pca的基本概念,現在來pca演算法的理解。

通常情況下,我們用(1,1)和(-1,1)作為向量的一組基。一般來說,我們希望基的模是1,因為從內積的意義可以看到,如果基的模是1,那麼就可以方便的用向量點乘基而直接獲得其在新基上的座標了!實際上,任何乙個向量我們都可以很簡單的找到其在新基的座標。例如我們總可以找到其同方向上模為1的向量,只要讓兩個分量分別除以模就好了。例如,上面的基可以變為根據內積的幾何意義(內積可以這樣理解a⋅b=|a||b|cos(a),可讓|b|=1,我們只要分別計算(3,2)和兩個基的內積,不難得到新的座標為

另外,我們列舉的例子中基是正交的(即內積為0,或直觀說相互垂直),但可以成為一組基的唯一要求就是線性無關,非正交的基也是可以的。不過因為正交基有較好的性質,所以一般使用的基都是正交的。   

現在使用一種更簡潔的方式得到該向量在新基上的座標,使用的矩陣相乘。

推廣一下,如果我們有m個二維向量,只要將二維向量按列排成乙個兩行m列矩陣,然後用「基矩陣」乘以這個矩陣,就得到了所有這些向量在新基下的值。例子中第乙個括號是基矩陣,第二個括號是需要變化座標的向量矩陣。

一般的,如果我們有m個n維向量,想將其變換為由r個n維向量表示的新空間中,那麼首先將r個基按行組成矩陣a,然後將向量按列組成矩陣b,那麼兩矩陣的乘積ab就是變換結果,其中ab的第m列為a中第m列變換後的結果

如果基的數量少於向量本身的維數,則可以達到降維的效果。但是我們還沒有回答乙個最關鍵的問題:如何選擇基才是最優的。

這裡就涉及到兩個重要的數學知識:協方差方差

為了讓這個基(這個方向)能盡可能多的儲存原有的資訊,我們希望(1)這些基都是盡量不相關的(相關的話意味著有資訊特徵重合,存在資訊冗餘)和(2)原有的座標投射到新基上盡量分散。

(1)的指標用協方差衡量,(2)的指標用方差衡量。這個時候協方差矩陣就出場了,它可以將兩者統一表示!

等號左邊就是協方差矩陣(covariance matrix),這個矩陣對角線上的兩個元素分別是兩個欄位的方差,而其它元素是a和b的協方差。

推廣一下,設我們有m個n維資料記錄,將其按列排成n乘m的矩陣x,設,則c是乙個對稱矩陣,其對角線分別個各個欄位的方差,而第i行j列和j行i列元素相同,表示i和j兩個欄位的協方差

所以現在要做的就是如何將協方差矩陣對角化。我們設原始資料矩陣x對應的協方差矩陣為c,而p是一組基按行組成的矩陣,設y=px,則y為x對p做基變換後的資料。設y的協方差矩陣為d,我們推導一下d與c的關係:

現在優化目標變成了尋找乙個矩陣p,滿足是乙個對角矩陣,並且對角元素按從大到小依次排列,那麼p的前k行就是要尋找的基,用p的前k行組成的矩陣乘以x就使得x從n維降到了k維並滿足上述優化條件。

所以現在問題的焦點轉化為如何尋找這個矩陣p。

1)實對稱矩陣不同特徵值對應的特徵向量必然正交。

2)設特徵向量λλ重數為r,則必然存在r個線性無關的特徵向量對應於λλ,因此可以將這r個特徵向量單位正交化。

由上面兩條可知,乙個n行n列的實對稱矩陣一定可以找到n個單位正交特徵向量,設這n個特徵向量為e1,e2,⋯,en,我們將其按列組成矩陣:

協方差矩陣的特徵向量(eigenvector)可以利用奇異值分解法(singular value decomposition)求得,簡稱svd。

所以pca演算法用偽**表示,:

sigma是協方差矩陣,ureduce是這個協方差矩陣的特徵向量。

正如之前學的一樣第二步的**如上向量化表示可以不需要迴圈求和;z是x降維後的矩陣。

pca本質上是將方差最大的方向作為主要特徵,並且在各個正交方向上將資料「離相關」,也就是讓它們在不同正交方向上沒有相關性。

機器學習之PCA演算法學習

pca全稱principal component analysis,即主成分分析,是一種常用的資料降維方法。它可以通過線性變換將原始資料變換為一組各維度線性無關的表示,以此來提取資料的主要線性分量。其中,z為低維矩陣,x為高維矩陣,w為兩者之間的對映關係。假如我們有二維資料 原始資料有兩個特徵軸 特...

演算法學習記錄

排序演算法複雜度 層序遍歷 雙端佇列 演算法流程 特例處理 當樹的根節點為空,則直接返回空列表 初始化 列印結果空列表 res 包含根節點的雙端佇列 queue bfs 迴圈 當 queue 為空時跳出 新建列表 temp 用於臨時儲存當前層列印結果 當前層列印迴圈 迴圈次數為當前層節點數 即 qu...

關於PCA演算法學習心得

壓縮的實質就是針對樣本的屬性,讓單個屬性的方差最大,讓樣本之間的協方差的為零。pca演算法的是針對原始樣本的協方差c的變換,通過對協方差矩陣c的對角化,找到對映後的樣本的協方差矩陣y。需要注意的是,此時d是對角陣,從而滿足了我們優化的要求 協方差為零,方差最大。d 1myy t1m px px t ...