主成分分析(PCA)

主成分分析(PCA)是一種常用的無監(jiān)督學(xué)習(xí)方法,這一方法利用正交變換把由現(xiàn)行相關(guān)變量表示的觀測數(shù)據(jù)轉(zhuǎn)化為少數(shù)幾個由線性無關(guān)變量表示的數(shù)據(jù),線性無關(guān)的變量稱為主成分。主成分的個數(shù)通常小于原始變量的個數(shù),所以主成分分析屬于姜維方法。主成分分析主要用于發(fā)現(xiàn)數(shù)據(jù)中的基本結(jié)構(gòu),即數(shù)據(jù)中變量之間的關(guān)系,是數(shù)據(jù)分析的有力工具,也用于其他機(jī)器學(xué)習(xí)方法的前處理。

一、總體主成分分析

1.基本想法

統(tǒng)計(jì)分析比中,數(shù)據(jù)的變量之間可能存在相關(guān)性,以致增加了分析的難度。于是,考慮由少數(shù)幾個不相關(guān)的變量來代替相關(guān)的變量,用來表示數(shù)據(jù),并且要求能夠保留數(shù)據(jù)中的不部分信息。

主成分分析中,首先對給定數(shù)據(jù)進(jìn)行規(guī)范化,使得數(shù)據(jù)每一變量的平均值為0,方差為1,。之后對數(shù)據(jù)進(jìn)行正交變換,用來由線性相關(guān)表示的數(shù)據(jù),通過正交變換變成若干個線性無關(guān)的新變量表示的數(shù)據(jù)。新變量是可能的正交變換中變量的方差和(信息保存)最大的,方差表示在新變量上信息的大小。將新變量一次成為第一主成分,第二主成分等。通過主成分分析,可以利用主成分近似地表示原始數(shù)據(jù),這可理解為發(fā)現(xiàn)數(shù)據(jù)的“基本結(jié)構(gòu)”;也可以把數(shù)據(jù)由少數(shù)主成分表示,這可理解為對數(shù)據(jù)降維。

方差最大的解釋。假設(shè)有兩個變量x_1,x_2,三個樣本點(diǎn)A,B,C。樣本分布在由x_1,x_2軸組成的坐標(biāo)系中,對坐標(biāo)系進(jìn)行旋轉(zhuǎn)變換,得到新的坐標(biāo)軸y_1,表示新的變量y_1。坐標(biāo)值的平方和OA^{\prime 2}+OB^{'2}+OC^{'2}表示樣本在變量y_1上的方差和。主成分分析旨在選取正交變換中方差最大的變量,作為第一主成分,也是是旋轉(zhuǎn)變換中坐標(biāo)值的平方和最大的軸。注意到旋轉(zhuǎn)變換中變換中樣本點(diǎn)到原點(diǎn)距離的平方和OA^2+OB^2+OC^2不變,根據(jù)勾股定理,坐標(biāo)值的平方和最大OA^{\prime 2}+OB^{'2}+OC^{'2}等價于樣本點(diǎn)到y_1軸的距離平方和AA^{'2}+BB^{'2}+CC^{'2}最小。所以,等價地,主成分分析在旋轉(zhuǎn)變換中選取離樣本點(diǎn)的距離的平方和最小的軸,作為第一主成分。第二主成分等的選取,在保證與已有坐標(biāo)軸正交的條件下,類似地進(jìn)行

2.定義和導(dǎo)出

假設(shè)\boldsymbol x=(x_1,x_2,\dots,x_m)^T是m維隨機(jī)變量,其均值是\boldsymbol{\mu}
,\boldsymbol \mu = E(x)=(\mu_1,\mu_2,\dots,\mu_m)^T
協(xié)方差矩陣是\Sigma
\Sigma = cov(\boldsymbol{(x,x)}=E[(\boldsymbol{x-\mu)(x-\mu)}^T]
考慮到m維隨機(jī)變量\mathbf x到m維隨機(jī)變量mathbf=(y_1,y_2,\dots,y_m)^T的線性變換
y_i = a_i^T \mathbf x = a_{1i}x_1+a_{2_i}x_2+\dots,a_{mi}x_m \space (1)
其中a_i^T = (a_{1i},a_{2_i},\dots,a_{mi}),i=1,2\dots,m

由隨機(jī)變量的性質(zhì)可知
\begin{aligned} E(y_i) = a_i^T\mu,i=1,2,\dots,m \\ var(y_i) = a_i^T\Sigma a_i,i=1,2,\dots,m \\ cov(y_i,y_j) = a_i^T\Sigma a_j,i=1,2,\dots,m,j=1,2,\dots,m \end{aligned}

總體主成分的定義給定式(1)所示的線性變換,如果他們滿足下列條件

  1. 系數(shù)向量a_i^T是單位向量,即a_i^Ta_i =1,i=1,2,\dots,m
  2. 變量y_i與y_j互不相關(guān),即cov(y_i,y_j)=0(i\ne j)
  3. 變量y_1\mathbf x的所有線性變換中方差最大的;y_2是與y_1不相關(guān)x的所有線性變換中方差最大的;一般地,y_i是與y_1,y_2,\dots,y_{i-1}(i=1,2,\dots,m)都不相關(guān)的\mathbf x的所有線性變換中方差最大的。這時分別稱y_1,y_2,\dots,y_m\mathbf x的第一主成分,第二主成分,\dots,第m主成分

3.主要性質(zhì)

設(shè)\mathbf x是m維隨機(jī)變量,\Sigma\mathbf x的協(xié)方差矩陣,\Sigma的特征值分別是\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_m \ge 0,特征值對應(yīng)的單位特征向量分別是a_1,a_2,\dots,a_m,則\mathbf x的第k主成分是
y_k = a_k^T \mathbf x = a_{1k}x_1+a_{2k}x_2+\dots+a_{mk}x_m,k=1,2,\dots,m
\mathbf x的第k主成分的方差是
var(y_k)=a_k^T \Sigma a_k = \lambda k,k=1,2,\dots,m
即協(xié)方差矩陣\Sigma的第k個特征值

4.求主成分的方法

首先求\mathbf x的第一主成分y_1 = a_1^T \mathbf x,即求系數(shù)向量a_1。第一主成分的a_1是在a_1^Ta_1=1的條件下,\mathbf a的所有線性變換中使方差達(dá)到最大的
var(a_1^T \mathbf x) = a_1^T \Sigma a_1
求第一主成分就是求解最優(yōu)化問題
\begin{aligned} \mathop{max}_{a_1} a_1^T\Sigma a_1 \\ s.t. \space a_1^T a_1 = 1 \end{aligned}
定義拉格朗日函數(shù)
a_1^T \Sigma a_1 - \lambda(a_1^T a_1 -1 )
其中\lambda是拉格朗日乘子,將拉格朗日函數(shù)對a_1求導(dǎo),并令其為0,得
\Sigma a_1 -\lambda a_1 = 0
因此\lambda\Sigma的特征值,a_1是對應(yīng)的單位特征向量。于是目標(biāo)函數(shù)
a_1^T \Sigma a_1 = a_1^T \lambda a_1 =\lambda
假設(shè)a_1\Sigma的最大特征值\lambda_1對應(yīng)的單位特征向量,顯然a_1\lambda_1是最優(yōu)化問題的解,所以,a_1^Tx構(gòu)成第一主成分,其方差等于協(xié)方差矩陣的最大特征值
var(a_1^T \mathbf x) = a_1^T \Sigma a_1 = \lambda_1

接著求\mathbf x的第二主成分y_2 = a_2^T \mathbf x,第二主成分的a_2是在a_2^Ta_2=1a_2^T \mathbf xa_1^T \mathbf x不相關(guān)條件下,\mathbf x的所有線性變換中使達(dá)到最大
var(a_2^T \mathbf x) = a_2^T \Sigma a_2

求第二主成分需參求解約束最優(yōu)化問題
\begin{aligned} \mathop{max}_{a_2} a_2^T\Sigma a_2 \\ s.t, a_1^T\Sigma a_2 = 0 ,a_2^T\Sigma a_1 = 0 \\ a_2^Ta_2 = 1 \\ a_1^T a_2 = 0 ,a_2^Ta_2 = 0 \end{aligned}
定義拉格朗日函數(shù)
a_2^T\Sigma a_2 -\lambda(a_2^T a_2 -1) -\Phi a_2^Ta_1
其中\lambda,\Phi對應(yīng)拉格朗日乘子。對a_2求偏導(dǎo),并令其為0,得
2\Sigma a_2 - 2\lambda a_2 -\phi a_1 = 0
將方程左則乘以a_1^T
2a_1^T\Sigma a_2 - 2\lambda a_1^T a_2 - \Phi a_1^T a_1 = 0
此式前兩項(xiàng)為0,且a_1^T a_1 = 1,導(dǎo)出\Phi =0,因此式成為
\Sigma a_2 - \lambda a_2 = 0
由此,\lambda\Sigma的特征值,a_2是對應(yīng)的特征向量,于是目標(biāo)函數(shù)為
a_2^T \Sigma a_2 = a_2^T \lambda a_2 = \lambda a_2^T a_2 = \lambda
假設(shè)a_2\Sigma的第二大特征值\lambda_2的特征向量,顯然a_2與\lambda_2是以上最優(yōu)化問題的解。于是a_2^T x構(gòu)成第二主成分,其方差等于協(xié)方差矩陣的第二大特征值,
var(a_2^T \mathbf x) = a_2^T \Sigma a_2 = \lambda_2

按照上述方法可以求得第一、第二、直到第m個主成分,其系數(shù)向量a_1,a_2,\dots,a_m分別是\Sigma的第一、第二、直到m個單位特征向量,\lambda_1,\lambda_2,\dots,\lambda_m分別是對應(yīng)的特征值。并且,第k主成分的方差等于\Sigma的第k個特征值。
var(a_k^T \mathbf x) = a_k^T \Sigma a_k = \lambda_k ,k=1,2,\dots,m

5.主成分的個數(shù)

主成分分析的主要目的是降維,所以一般選擇k(k \ll m)個主成分(線性無觀變量),使問題得以簡化,并能保留原有變量的大部分信息。這里所說的信息是指原有信息的方差。

對任意正整數(shù)q, 1 \le q \le m,考慮正交線性變換
\mathbf y = B^T \mathbf x
其中\mathbf y是q的維向量,B^T是q*m維矩陣,令\mathbf y的協(xié)方差矩陣為
\Sigma_{\mathbf y} = B^T\Sigma B
\Sigma_{\mathbf y}的跡tr(\Sigma_{\mathbf y})B = A_q時取最大值,其中矩陣A_q是由正交矩陣A的前q列組成。

這表明,當(dāng)\mathbf x的線性變換\mathbf yB=A_q時,其協(xié)方差矩陣\Sigma_y的跡tr(\Sigma_y)取得最大值。也就是說,當(dāng)A取前\mathbf x的前q個主成分時,能夠最大限度地保留原有變量方差的信息。

以上作為選擇k個主成分的理論依據(jù)。具體選擇k的方法,通常利用方差貢獻(xiàn)率。

第k主成分y_k的方差貢獻(xiàn)率定義為y_k的方差與所有方差之和的比記作\eta
\eta_k = \frac{\lambda_k}{\sum_{i=1}^m \lambda_i}
k個主成分y_1,y_2,\dots,y_k的累計(jì)方差貢獻(xiàn)率定義為k個方差之和和所有方差之和的比
\sum_{i=1}^k \eta_i = \frac{\sum_{i=1}^k \lambda_k}{\sum_{i=1}^m \lambda_i}

通常取k使得累計(jì)方差貢獻(xiàn)率達(dá)到規(guī)定的百分比以上,例如70%~80%。累計(jì)方差貢獻(xiàn)率反映了主成分保留信息的比例,但它不能反映對某個原有變量x_i保留信息的比例,這時通常利用k個主成分y_1,y_2,\dots,y_k對原有變量x_i的貢獻(xiàn)率。

k個主成分y_1,y_2,\dots,y_k對原有變量x_i的貢獻(xiàn)率為x_i,(y_1,y_2,\dots,y_k)的相關(guān)系數(shù)的平方,記作v_i

v_i = \rho^2(x_i,(y_1,y_2,\dots,y_k))
計(jì)算公式如下:
v_i = \rho^2(x_i,(y_1,y_2,\dots,y_k)) =\sum_{j=1}^k \frac{\lambda_j a_{ij}^2}{\sigma_{ii}}
其中,\sigma_{ii}是隨機(jī)變量x_i的方差,即協(xié)方差矩陣\Sigma的對角元素。

6.規(guī)范化變量的總體主成分

在實(shí)際問題中,不同變量可能有不同的量綱,直接求主成分有時會產(chǎn)生不合理的結(jié)果,為了消除這個影響,常常對各個隨機(jī)變量實(shí)施規(guī)范化,使其均值為0,方差為1

設(shè)\mathbf x =(x_1,x_2,\dots,x_m)^T為隨機(jī)變量,x_i為第i個隨機(jī)變量,i=1,2,\dots,m,令
x_i^* = \frac{x_i-E(x_i)}{\sqrt{var(x_i)}},i=1,2,\dots,m
其中,E(x_i),var(xi)分布是隨機(jī)變量x_i的均值和方差,這時x_i^*就是x_i的規(guī)范化隨機(jī)變量。

二、樣本主成分分析

在實(shí)際問題中,需要在觀測數(shù)據(jù)上進(jìn)行主成分分析,這就是樣本主成分分析。樣本主成分也和總體主成分具體相同的性質(zhì)。

使用樣本主成分時,一般假設(shè)樣本數(shù)據(jù)是規(guī)范化的,即對樣本矩陣如下操作:
x_{ij}^* = \frac{x_{ij}-\bar{x_i}}{\sqrt{s_ii}},i=1,2,\dots,m,j=1,2,\dots,m
其中
\bar{x_i} =\frac{1}{n} \sum_{j=1}^n x_{ij},i=1,2,\dots,m
s_{ii} = \frac{1}{n-1}\sum_{j=1}^n(x_{ij}-\bar{i})^2,i=1,2,\dots,m
樣本協(xié)方差矩陣S是中體協(xié)方差矩陣\Sigma的無偏估計(jì),樣本相關(guān)矩陣R是總體相關(guān)矩陣的無偏估計(jì),S的特征值和特征向量\Sigma的特征值和特征向量的無偏估計(jì)。

1.相關(guān)矩陣的特征值和分解算法

傳統(tǒng)的主成分分析通過數(shù)據(jù)的協(xié)方差矩陣或相關(guān)矩陣的特征值分解進(jìn)行,現(xiàn)在常用的方法是通過數(shù)據(jù)矩陣的奇異值分解進(jìn)行。下面介紹數(shù)據(jù)的協(xié)方差矩陣或相關(guān)矩陣的分解方法

給定樣本矩陣\mathbf X,利用數(shù)據(jù)的樣本的協(xié)方差矩陣或樣本相關(guān)矩陣的特征值分解進(jìn)行主成分分析

  1. 對觀測數(shù)據(jù)進(jìn)行規(guī)范化處理,得到規(guī)范化數(shù)據(jù)矩陣,仍以\mathbf X表示
  2. 依據(jù)規(guī)范化數(shù)據(jù)矩陣,計(jì)算樣本相關(guān)矩陣R
    R =[r_{ij}]_{m*n}=\frac{1}{n-1}XX^T
    其中,r_{ij} = \frac{1}{n-1}\sum_{i=1}^n x_{il}x_{lj}
  3. 求相關(guān)矩陣R的k個特征值和對應(yīng)的k個單位特征向量
    求解R的特征方程
    |R-\lambda| = 0
    得R的m個特征值
    \lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_m
    求方差貢獻(xiàn)率\sum_{i=1}^k \eta_i達(dá)到與預(yù)定值的主成分個數(shù)k。求前k個主成分對應(yīng)的單位特征向量
    a_i= (a_{1i},a_{2i},\dots,a_{mi})^T,i=1,2,\dots,k
  4. 求k個主成分
    以k個單位特征矩陣為系數(shù)進(jìn)行線性變換,求出k個樣本主成分
    y_i = a_i^T \mathbf x ,i=1,2,\dots,k
  5. 計(jì)算k個主成分y_j與原變量x_i的相關(guān)系數(shù)\rho(x_i,y_j),以及k個主成分對原變量x_i的貢獻(xiàn)率v_i
  6. 計(jì)算n個樣本的k個主成分值
    將規(guī)范化樣本數(shù)據(jù)代入k個主成分,得到n個樣本的主成分值,第j個樣本x_j = (x_{1j},x_{2j},\dots,x_{mj})^T的第i主成分值是
    y_{ij} = (a_{1i},a_{2i},\dots,a_{mi})(x_{1j},x_{2j},\dots,x_{mj})^T = \sum_{i=1}^m a_{li}x_{lj},i=1,2,\dots,m,j=1,2\dots,m

2.數(shù)據(jù)矩陣奇異值分解法

給定樣本矩陣\mathbf X,利用數(shù)據(jù)矩陣奇異值分解進(jìn)行主成分分析,這里沒有假設(shè)k個主成分

對于m*n維實(shí)矩陣A,假設(shè)其秩為r,0 < k < r,則可將矩陣A進(jìn)行截?cái)嗥娈愔捣纸?br> A \approx U_k\Sigma_k V_K^T
U_km*k矩陣,\Sigma_k是k階對角矩陣,U_k,V_k分別由取A的完全奇異分解的矩陣U,V的前k列,\Sigma_k由完全奇異分解的矩陣\Sigma的前k個對角元素得到

定義一個新的n*m矩陣\mathbf X'
\mathbf X' = \frac{1}{\sqrt{n-1}}\mathbf X^T
\mathbf X'的每一列均值為0,
X^{'T}X' = \bigg(\frac{1}{\sqrt{n-1}}X^T)\bigg)^T\bigg(\frac{1}{\sqrt{n-1}}X^T\bigg)
X^{'T}X'等于X的協(xié)方差矩陣S_X
S_X = X^{'T}X'
主成分分析歸結(jié)于求協(xié)方差矩陣S_X的特征值和對應(yīng)的單位特征向量。

假設(shè)X'的截?cái)嗥娈愔捣纸鉃?img class="math-inline" src="https://math.jianshu.com/math?formula=X'%3DU%5CSigma%20V%5ET" alt="X'=U\Sigma V^T" mathimg="1">,那么V 的列向量就是S_X = X^{'T}X'的單位向量,因此V的列向量就是X的主成分。于是X求X的主成分可以通過X'的奇異值來實(shí)現(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 PCA是一種無參數(shù)的數(shù)據(jù)降維方法,在機(jī)器學(xué)習(xí)中很常用,這篇文章主要從三個角度來說明PCA是怎么降維的分別是方...
    WZFish0408閱讀 52,547評論 6 36
  • 主成分分析( Principal components analysis),簡稱PCA,是最主要的數(shù)據(jù)降維方法之一...
    霞客環(huán)肥閱讀 5,281評論 1 30
  • 一、前言 在許多領(lǐng)域的研究與應(yīng)用中,往往需要對反映事物的多個變量進(jìn)行大量的觀測,收集大量數(shù)據(jù)以便進(jìn)行分析尋找規(guī)律。...
    owolf閱讀 2,893評論 0 3
  • 主成分分析(PCA) 在許多領(lǐng)域的研究與應(yīng)用中,往往需要對反映事物的多個變量進(jìn)行大量的觀測,收集大量數(shù)據(jù)以便進(jìn)行分...
    阿圓的一畝三分地閱讀 2,997評論 0 3
  • 經(jīng)過兩天的掙扎,在淺薄的線性代數(shù)知識基礎(chǔ)上,嘗試著理解了一下主成分分析法。 一 算法流程 求樣本x(i)的n'的主...
    A黃橙橙閱讀 24,590評論 1 4

友情鏈接更多精彩內(nèi)容