最大方差和最小協方差解釋(線性代數看PCA)

PCA降維算法

                        ——最大方差和最小協方差聯合解釋(線性代數看PCA)機器學習

   注:根據網上資料整理而得,歡迎討論函數

      機器學習算法的複雜度和數據的維數有着密切關係,甚至與維數呈指數級關聯。所以咱們必須對數據進行降維。學習

      降維固然意味着信息的丟失,不過鑑於實際數據自己經常存在的相關性,咱們能夠想辦法在降維的同時將信息的損失儘可能下降。優化

      PCA是一種具備嚴格數學基礎而且已被普遍採用的降維方法。spa

協方差矩陣及優化目標數學

      若是咱們必須使用一維來表示這些數據,又但願儘可能保留原始的信息,你要如何選擇?基礎

經過上一節對基變換的討論咱們知道,這個問題其實是要在二維平面中選擇一個方向,將全部數據都投影到這個方向所在直線上,用投影值表示原始記錄。這是一個實際的二維降到一維的問題。方法

那麼如何選擇這個方向(或者說基)才能儘可能保留最多的原始信息呢?一種直觀的見解是:但願投影后的投影值儘量分散。數據

方差

      上文說到,咱們但願投影后投影值儘量分散,而這種分散程度,能夠用數學上的方差來表述。被形式化表述爲:尋找一個一維基,使得全部數據變換爲這個基上的座標表示後,方差值最大,(即:投影以後的點比較分散,沒有相關性。以達到一個很好的降維效果)

協方差

      當協方差爲0時,表示兩個字段徹底獨立。爲了讓協方差爲0,咱們選擇第二個基時只能在與第一個基正交的方向上選擇。所以最終選擇的兩個方向必定是正交的。

至此,咱們獲得了降維問題的優化目標:將一組N維向量降爲K維(K大於0,小於N),其目標是選擇K個單位(模爲1)正交基,使得原始數據變換到這組基上後,各字段兩兩間協方差爲0,而字段的方差則儘量大(在正交的約束下,取最大的K個方差)。即:投影以後的點比較分散,沒有相關性。以達到一個很好的降維效果)

協方差矩陣

在數學上研究計算方案。

設咱們有m個n維數據記錄,將其按列排成n乘m的矩陣X,設C=1/m*XXT,則C是一個對稱矩陣,其對角線分別個各個字段的方差,而第i行j列和j行i列元素相同,表示i和j兩個字段的協方差

協方差矩陣對角化

      根據上述推導,咱們發現要達到優化目前,等價於將協方差矩陣對角化:即除對角線外的其它元素化爲0,而且在對角線上將元素按大小從上到下排列,這樣咱們就達到了優化目的。這樣說可能還不是很明晰,咱們進一步看下原矩陣與基變換後矩陣協方差矩陣的關係:

設原始數據矩陣X對應的協方差矩陣爲C,而P是一組基按行組成的矩陣,設Y=PX,則Y爲X對P作基變換後的數據。設Y的協方差矩陣爲D,咱們推導一下D與C的關係:

D = 1/m*YYT= 1/m*(PX)(PX)T=1/m*PXXTPT =P(1/m*XXT)PT =PCPT

如今事情很明白了!咱們要找的P不是別的,而是能讓原始協方差矩陣對角化的P。換句話說,優化目標變成了尋找一個矩陣P,知足PCPT是一個對角矩陣,而且對角元素按從大到小依次排列,那麼P的前K行就是要尋找的基,用P的前K行組成的矩陣乘以X就使得X從N維降到了K維並知足上述優化條件

      至此,咱們離「發明」PCA還有僅一步之遙!

如今全部焦點都聚焦在了協方差矩陣對角化問題上,有時,咱們真應該感謝數學家的先行,由於矩陣對角化在線性代數領域已經屬於被玩爛了的東西,因此這在數學上根本不是問題。

      由上文知道,協方差矩陣C是一個是對稱矩陣,在線性代數上,實對稱矩陣有一系列很是好的性質:

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

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

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

E=(e1,e2,⋯en)

      則對協方差矩陣C有以下結論:

ETCE=Λ;

      其中Λ爲對角矩陣,其對角元素爲各特徵向量對應的特徵值(可能有重複)。

      到這裏,咱們發現咱們已經找到了須要的矩陣P:P=ET

      P是協方差矩陣的特徵向量單位化後按行排列出的矩陣,其中每一行都是C的一個特徵向量。若是設P按照Λ中特徵值的從大到小,將特徵向量從上到下排列,則用P的前K行組成的矩陣乘以原始數據矩陣X,就獲得了咱們須要的降維後的數據矩陣Y。

進一步討論

       PCA本質上是將方差最大的方向做爲主要特徵,而且在各個正交方向上將數據「離相關」,也就是讓它們在不一樣正交方向上沒有相關性。

所以,PCA也存在一些限制,例如它能夠很好的解除線性相關,可是對於高階相關性就沒有辦法了,對於存在高階相關性的數據,能夠考慮Kernel PCA,經過Kernel函數將非線性相關轉爲線性相關,關於這點就不展開討論了。

另外,PCA假設數據各主特徵是分佈在正交方向上,若是在非正交方向上存在幾個方差較大的方向,PCA的效果就大打折扣了。

 

      PCA是無監督學習的方式。

相關文章
相關標籤/搜索