主成分分析PCA(1)


參考:https://mp.weixin.qq.com/s/6xsXjUEUm8dB5y6-dInT_w

 

PCA的數學原理無非一句話: 協方差矩陣的特征值分解 (或者等價地) 原矩陣的奇異值分解

 

1、PCA:通過線性變換將原始數據變換為一組各維度線性無關的表示,可用於提取數據的主要特征分量,常用於高維數據的降維。

2、數據的向量表示

假設淘寶每天的交易記錄為(瀏覽量, 訪客數, 下單數, 成交數, 成交金額),向量表示如下:

$$(500,240, 25, 13, 2312.15)^T$$  //一般表示為列向量

3、降維:降維意味着信息的丟失,需要利用實際數據中存在的相關性,在降維的同時盡量減少信息損失

例如:瀏覽量”和“訪客數”往往具有較強的相關關系,而“下單數”和“成交數”也具有較強的相關關系

4、內積:將兩個向量映射為一個實數

假設$A=(x_1,y_1), B=(x_2, y_2)$,$A$和$B$的夾角為$a$,則$A$在$B$上的投影長度為$|A|\cos(a)$,$A$的模為$|A|=\sqrt{x_1^2+y_1^2}$如圖:

同時內積可以表示為$A\cdot B=|A||B|\cos(a)$  //A與B的內積等於A到B的投影長度乘以B的模

假設令$B$的模為1,則可得:$A\cdot B=|A|\cos(a)$

因此,當$B$的模為1時,內積的一種幾何解釋為:$A$向$B$所在直線投影的矢量長度!

5、基:要准確描述向量,首先要確定一組基,然后給出在基所在的各個直線上的投影值  //通常默認選擇$(1,0)^T$和$(0,1)^T$為一組基

因此,想要獲得向量在新基上的坐標,只需要分別計算向量與基的內積值即可  //注:需要基的模為1

如求解向量$(3, 2)^T$(隱含基為$(1,0)^T$和$(0,1)^T$)在新基$(\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}})^T$和$(-\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}})^T$下的坐標  //注:新基為$(1,1)^T$和$(-1,1)^T$對應的單位基

 結果可表示為矩陣和向量的乘法:

其中,矩陣的行向量為對應的新基

可以將上式進一步推廣到多個向量,如將$(1,1)^T$、$(2,2)^T$和$(3,3)^T$變換到新基上:

結論:如果我們有M個N維向量,想將其變換為由R個N維向量表示的新空間中,那么首先將R個基按行組成矩陣A,然后將向量按列組成矩陣B,那么兩矩陣的乘積AB就是變換結果,其中AB的第m列為A中第m列變換后的結果:

其中,$p_i$表示第$i$個基對應的行向量,$a_j$表示第$j$個原始數據向量

注:新基的個數$R$決定了變換后數據的維度,當$R<N$時,此時的矩陣乘法表示降維變換

矩陣乘法的物理解釋:將右邊矩陣中的每一列列向量變換到左邊矩陣中每一行行向量為基所表示的空間中去  //矩陣代表基變換

 6、如何選擇最優的新基,使得降維后的信息損失最小

假設存在五個數據向量:

(1)預處理

對每個字段去均值(行操作):

圖示如下:

現在的問題是:如何選擇一個方向(基),將所有數據都投影到這個方向所在直線上,同時盡量保留最多的原始信息?

一種思路:希望投影后的投影值盡可能分散

(2)方差:描述數據的分散程度

由於已經去均值化:

可以看出,在已去均值的情況下,字段的方差與元素自身的內積相關

因此,問題轉化為:尋找一個一維基,使得所有數據變換為這個基上的坐標表示后,方差值最大

(3)協方差:不同字段的協方差表示其相關性

注:對於超過二維的高維數據,需要保證不同字段之間盡量不存在(線性)相關性  //相關表示不獨立,則存在重復信息

可以看出,在已去均值的情況下,不同字段的協方差與元素間的內積相關

當協方差為0時,表示兩個字段完全獨立。為了讓協方差為0,我們選擇第二個基時只能在與第一個基正交的方向上選擇  //保證不同方向的正交性

因此,降維問題的優化目標為:將一組N維向量降為K維(K大於0,小於N),其目標是選擇K個單位(模為1)正交基,使得原始數據變換到這組基上后,各字段兩兩間協方差為0,而字段的方差則盡可能大(在正交的約束下,取最大的K個方差)

(4)協方差矩陣

假設僅有兩個字段$a$和$b$,按行組成矩陣(每一行已去均值):

可得協方差矩陣:

因此:假設我們有m個n維數據記錄,將其按列排成n乘m的矩陣X,則矩陣$C=\frac{1}{m}XX^T$是一個對稱矩陣,其對角線分別個各個字段的方差,而第$i$行$j$列和$j$行$i$列元素相同,表示$i$和$j$兩個字段的協方差

 (5)協方差矩陣對角化  //協方差矩陣為實對稱矩陣

根據(3)中的結論,我們需要將原始數據的協方差矩陣對角化(除對角線以外其他元素全為0,且方差由大至小排列

假設原始數據矩陣為$X$,對應的協方差矩陣為$C$,$P$為新基作為行向量組成的矩陣,則變換后的數據矩陣為$Y=PX$,則其協方差矩陣$D$為:

因此,優化目標即為尋找矩陣$P$,使得$PCP^T$為對角矩陣,並且對角元素按從大到小依次排列,那么P的前K行就是要尋找的基,用P的前K行組成的矩陣乘以X就使得X從N維降到了K維並滿足上述優化條件。

注:在線性代數中,$n$行$n$列的實對稱矩陣一定可以找到$n$個單位正交特征向量,設這$n$個特征向量為$e_1, e_2, \cdots , e_n$,我們將其按列組成矩陣:

則對於實對稱的協方差矩陣$C$有如下等式成立

其中,$\Lambda$為對角矩陣,對角元素為各特征向量對應的特征值(可能有重復)

因此,目標矩陣即為$P=E^T$,即協方差矩陣的特征向量單位化后按行排列出的矩陣,其中每一行都是$C$的一個特征向量

7、PCA算法步驟

假設有$m$條$n$維數據

1)將原始數據按列組成$n$行$m$列矩陣$X$

2)將$X$的每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值

3)求出協方差矩陣$C=\frac{1}{m}XX^T$

4)求出協方差矩陣的特征值及對應的特征向量

5)將特征向量單位化后,按對應特征值大小從上到下按行排列成矩陣,取前$k$行組成矩陣$P$

6)$Y=PX$即為降維到$k$維后的數據

 

注:PCA本質上是將方差最大的方向作為主要特征,並且在各個正交方向上將數據“離相關”,也就是讓它們在不同正交方向上沒有相關性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM