預(yù)處理(一):主成分分析PCA

主成分分析(PCA)

在許多領(lǐng)域的研究與應(yīng)用中,往往需要對(duì)反映事物的多個(gè)變量進(jìn)行大量的觀測(cè),收集大量數(shù)據(jù)以便進(jìn)行分析尋找規(guī)律。多變量大樣本無(wú)疑會(huì)為研究和應(yīng)用提供了豐富的信息,但也在一定程度上增加了數(shù)據(jù)采集的工作量,更重要的是在多數(shù)情況下,許多變量之間可能存在相關(guān)性,從而增加了問(wèn)題分析的復(fù)雜性,同時(shí)對(duì)分析帶來(lái)不便。如果分別對(duì)每個(gè)指標(biāo)進(jìn)行分析,分析往往是孤立的,而不是綜合的。盲目減少指標(biāo)會(huì)損失很多信息,容易產(chǎn)生錯(cuò)誤的結(jié)論。

因此需要找到一個(gè)合理的方法,在減少需要分析的指標(biāo)的同時(shí),盡量減少原指標(biāo)包含信息的損失,以達(dá)到對(duì)所收集數(shù)據(jù)進(jìn)行全面分析的目的。由于各變量間存在一定的相關(guān)關(guān)系,因此有可能用較少的綜合指標(biāo),分別綜合存在于各變量中的各類信息。主成分分析與因子分析就屬于這類降維的方法。

問(wèn)題描述

下表是某些學(xué)生的語(yǔ)文、數(shù)學(xué)、物理、化學(xué)成績(jī)統(tǒng)計(jì):

學(xué)生編號(hào) 語(yǔ)文 數(shù)學(xué) 物理 化學(xué)
1 90 140 99 100
2 90 97 88 92
3 90 110 79 83
…… …… …… …… ……

首先,假設(shè)這些科目成績(jī)不相關(guān),也就是說(shuō)某一科目考多少分與其他科目沒(méi)有關(guān)系。那么一眼就能看出來(lái),數(shù)學(xué)、物理、化學(xué)這三門(mén)課的成績(jī)構(gòu)成了這組數(shù)據(jù)的主成分(很顯然,數(shù)學(xué)作為第一主成分,因?yàn)閿?shù)學(xué)成績(jī)拉的最開(kāi))。下面再看一組學(xué)生的數(shù)學(xué)、物理、化學(xué)、語(yǔ)文、歷史、英語(yǔ)成績(jī)統(tǒng)計(jì):

學(xué)生編號(hào) 數(shù)學(xué) 物理 化學(xué) 語(yǔ)文 歷史 英語(yǔ)
1 65 61 72 84 81 79
2 77 77 76 64 70 55
3 67 63 49 65 67 57
4 80 69 75 74 74 63
5 74 70 80 84 82 74
6 78 84 75 62 72 64
7 66 71 67 52 65 57
8 77 71 57 72 86 71
9 83 100 79 41 67 50
…… …… …… …… …… …… ……

數(shù)據(jù)太多了,以至于看起來(lái)有些凌亂!也就是說(shuō),無(wú)法直接看出這組數(shù)據(jù)的主成分,因?yàn)樵谧鴺?biāo)系下這組數(shù)據(jù)分布的很散亂。

在另一個(gè)例子中,假設(shè)數(shù)據(jù)在相應(yīng)坐標(biāo)空間中表示出來(lái)如下圖所示,也許你就能換一個(gè)觀察角度找出主成分。


6a3aa9a2e690fa67aec528dfc2d8595.png

但是,對(duì)于更高維的數(shù)據(jù),能想象其分布嗎?就算能描述分布,如何精確地找到這些主成分的軸?如何衡量你提取的主成分到底占了整個(gè)數(shù)據(jù)的多少信息?所以,我們就要用到主成分分析的處理方法。

數(shù)據(jù)降維

假設(shè)三維空間中有一系列點(diǎn),這些點(diǎn)分布在一個(gè)過(guò)原點(diǎn)的斜面上,如果你用自然坐標(biāo)系x,y,z這三個(gè)軸來(lái)表示這組數(shù)據(jù)的話,需要使用三個(gè)維度,而事實(shí)上,這些點(diǎn)的分布僅僅是在一個(gè)二維的平面上。如果我們把坐標(biāo)軸旋轉(zhuǎn)一下, 使數(shù)據(jù)所在的平面與x^`, y^`平面重合,不就只需要使用兩個(gè)維度了嗎。這樣數(shù)據(jù)的維數(shù)就降下來(lái)了。究其本質(zhì),如果把這些數(shù)據(jù)按行存儲(chǔ)成一個(gè)矩陣,那么這個(gè)矩陣的秩為2。這些數(shù)據(jù)之間是具有相關(guān)性的,這些數(shù)據(jù)的最大線性無(wú)關(guān)組只包含兩個(gè)向量。(一般來(lái)講n維空間中的n個(gè)點(diǎn)一定能在一個(gè)n-1維子空間中分析)

將上面的數(shù)據(jù)降維之后,我們可以認(rèn)為并沒(méi)有損失信息,因?yàn)樗械臄?shù)據(jù)在平面之外的第三個(gè)維度的分量都是0?,F(xiàn)在假設(shè)z^`軸有一個(gè)輕微的擾動(dòng),那么我們?nèi)匀挥蒙鲜龅亩S來(lái)表示這些數(shù)據(jù),因?yàn)槲覀兛梢哉J(rèn)為這兩個(gè)軸包含了數(shù)據(jù)的主成分。而且這些信息對(duì)于我們的分析已經(jīng)足夠了,z^`軸的擾動(dòng)很有可能是噪聲,并且具有很大的相關(guān)性。所以,綜合考慮,可以認(rèn)為數(shù)據(jù)在x^`, y^`上的投影構(gòu)成數(shù)據(jù)的主成分。

PCA的思想是將n維特征映射到k維上(k<n),這k維是全新的正交特征。這k維特征稱為主成分,是重新構(gòu)造出來(lái)的k維特征,而不是簡(jiǎn)單地從n維特征中去除其余n-k維特征。

PCA推導(dǎo)

357d394d5b6639f12f25e175372ad7b.png

首先對(duì)于二維數(shù)據(jù),如上圖所示,每個(gè)觀測(cè)點(diǎn)都是二維平面的一個(gè)點(diǎn)。如果這些數(shù)據(jù)形成一個(gè)橢圓形的點(diǎn)陣,這個(gè)橢圓有一個(gè)長(zhǎng)軸和一個(gè)短軸。在短軸方向,數(shù)據(jù)的變化很小;在極端的情況下,如果短軸退化成了一個(gè)點(diǎn),那么只有在長(zhǎng)軸的方向才能解釋這些點(diǎn)的變化。這樣二維就降維一維了。

顯然,上圖中u_1就是主成分方向,二維空間中與u_1正交的方向,就是u_2方向。則數(shù)據(jù)在u_1軸的離散程度最大(方差最大),數(shù)據(jù)在u_1上的投影代表了原始數(shù)據(jù)的絕大部分信息,即使不考慮u2,信息損失也不多。而且,u1、u2不相關(guān)。只考慮u1時(shí),二維降為一維。

橢圓的長(zhǎng)短軸相差得越大,降維也越有道理。

1、最大方差理論

在信號(hào)處理中認(rèn)為信號(hào)具有較大的方差,噪聲有較小的方差,信噪比就是信號(hào)與噪聲的方差比,越大越好。如前面的圖,樣本在u1上的投影方差較大,在u2上的投影方差較小,那么可認(rèn)為u2上的投影是由噪聲引起的。

因此我們認(rèn)為,最好的k維特征是將n維樣本點(diǎn)轉(zhuǎn)換為k維后,每一維上的樣本方差都很大。

2、最小二乘法

使用最小二乘法來(lái)確定各個(gè)主軸的方向。

對(duì)于一組給定的數(shù)據(jù)\{\vec z_1, \vec z_2, \vec z_3, \cdots, \vec z_n\}

其數(shù)據(jù)的中心為:

\vec \mu = \frac{1}{n} \sum_{i = 1}^{n} \vec z_i

數(shù)據(jù)中心化后為:

\{\vec x_1, \vec x_2, \cdots, \vec x_n\} = \{\vec z_1 - \vec \mu, \vec z_2 - \vec \mu,\cdots, \vec z_n - \vec \mu \}

設(shè)中心化后的數(shù)據(jù)在第一主軸u_1方向上分布最為離散,也就是說(shuō)在u1方向上的投影的絕對(duì)值之和最大(也可以說(shuō)方差最大),只需要求出u_1方向,設(shè)u_1為單位向量。

也就是最大化式:

\frac{1}{n} \sum_{i=1}^n(\vec x_i \cdot \vec u_i)^2 = \frac{1}{n} \sum_{i=1}^n(x_i^T u_1)^2 = \frac{1}{n} \sum_{i=1}^nu_1^Tx_ix_i^Tu_1 = \frac{1}{n} u_1^T(\sum_{i=1}^nx_ix_i^T)u_1

令: X = [x_1, x_2, \cdots, x_n]

上式 = \frac{1}{n} u_1^T XX^Tu_1

u_1^T XX^Tu_1是一個(gè)二次型,我們假設(shè)XX^T的某一個(gè)特征值為\lambda,對(duì)應(yīng)的特征向量為\xi,那么:

(XX^T)^T = XX^T

XX^T\xi = \lambda\xi

(XX^T\xi)^T\xi = (\lambda\xi)^T\xi

\xi^TXX^T\xi = \lambda\xi^T\xi

\xi^TXX^T\xi = (X^T\xi)^T(X^T\xi) = \left \| X^T\xi \right \|^2 = \lambda\xi^T\xi = \lambda \left \| \xi \right\|^2

顯然,\frac{1}{n} u_1^T XX^Tu_1是一個(gè)半正定的二次型,且有最大值。

求解最大值和最大值點(diǎn)

目標(biāo)函數(shù)可以表示成映射后的向量的二范數(shù)平方:

u_1^TXX^Tu_1^T = (X^Tu_1)^T(X^Tu_1) = <X^Tu_1^T, X^Tu_1> = (\frac{|| X^Tu_1||_2^2}{||u_1||_2})^2

所以最大化目標(biāo)函數(shù)的基本問(wèn)題就轉(zhuǎn)化成了:對(duì)于一個(gè)矩陣,它對(duì)一個(gè)向量做變換,變換前后的向量的模長(zhǎng)伸縮尺度如何才能最大?我們有矩陣代數(shù)中的定理知,向量經(jīng)矩陣映射前后的向量長(zhǎng)度之比的最大值就是這個(gè)矩陣的最大奇異值,即:

\frac{\left\|Ax\right\|}{\left\| x\right\|} \leq \sigma_1(A)

X^TX最大特征值對(duì)應(yīng)的特征向量的方向就是第一個(gè)主成分u_1的方向。

主成分所占整個(gè)信息的百分比可用下式計(jì)算:

\sqrt{\frac{\sum_{i=1}^k\sigma_i^2}{\sum_{i=1}^n\sigma_i^2}}

分母為所有奇異值的平方和,分子為前k個(gè)奇異值的平方和。

PCA實(shí)例

我們假設(shè)有如下數(shù)據(jù):

x y
2.5 2.4
0.5 0.7
2.2 2.9
1.9 2.2
3.1 3.0
2.3 2.7
2 1.6
1 1.1
1.5 1.6
1.1 0.9

第一步:分別球x,y的平均值:然后對(duì)所有的樣例,都減去對(duì)應(yīng)的均值。\overline{x} = 1.81\ \ \overline{y} = 1.91

x - \overline{x} y - \overline{y}
0.69 0.49
-1.31 -1.21
0.39 0.99
0.09 0.29
1.29 1.09
0.49 0.79
0.19 -0.31
-0.81 -0.81
-0.31 -0.31
-0.71 -1.01

第二步:求特征協(xié)方差矩陣

cov = \left( \begin{array}{ccc}.616555556 & .615444444 \\.615444444 & .716555556 \end{array}\right)

第三步:求協(xié)方差的特征值和特征向量

eigenbalues = \left( \begin{array} {ccc} .490833989&1.28402771\end{array}\right)

eigenvectors = \left(\begin{array}{ccc} -.735178656&-.677873399 \\ .677873399&-.735178656\end{array}\right)

第四步:將特征值按照從大到小的順序排序,選擇其中最大的k個(gè),然后將其對(duì)應(yīng)的k個(gè)特征向量分別作為列向量組成特征向量矩陣。

這里特征值只有兩個(gè),我們選擇其中最大的那個(gè),這里是1.28402771,對(duì)應(yīng)的特征向量為
\left( \begin{array} {ccc} .677873399&-.735178656\end{array} \right)

第五步:將樣本點(diǎn)投影到特征向量上, 這樣,就將原始樣例的n維特征變成了k維,這k維就是原始特征在k維上的投影。

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

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

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