主成分分析(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è)觀察角度找出主成分。

但是,對(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ù)所在的平面與平面重合,不就只需要使用兩個(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è)軸有一個(gè)輕微的擾動(dòng),那么我們?nèi)匀挥蒙鲜龅亩S來(lái)表示這些數(shù)據(jù),因?yàn)槲覀兛梢哉J(rèn)為這兩個(gè)軸包含了數(shù)據(jù)的主成分。而且這些信息對(duì)于我們的分析已經(jīng)足夠了,
軸的擾動(dòng)很有可能是噪聲,并且具有很大的相關(guān)性。所以,綜合考慮,可以認(rèn)為數(shù)據(jù)在
上的投影構(gòu)成數(shù)據(jù)的主成分。
PCA的思想是將n維特征映射到k維上(k<n),這k維是全新的正交特征。這k維特征稱為主成分,是重新構(gòu)造出來(lái)的k維特征,而不是簡(jiǎn)單地從n維特征中去除其余n-k維特征。
PCA推導(dǎo)

首先對(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)的變化。這樣二維就降維一維了。
顯然,上圖中就是主成分方向,二維空間中與
正交的方向,就是
方向。則數(shù)據(jù)在
軸的離散程度最大(方差最大),數(shù)據(jù)在
上的投影代表了原始數(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ù)
其數(shù)據(jù)的中心為:
數(shù)據(jù)中心化后為:
設(shè)中心化后的數(shù)據(jù)在第一主軸方向上分布最為離散,也就是說(shuō)在u1方向上的投影的絕對(duì)值之和最大(也可以說(shuō)方差最大),只需要求出
方向,設(shè)
為單位向量。
也就是最大化式:
令:
上式 =
是一個(gè)二次型,我們假設(shè)
的某一個(gè)特征值為
,對(duì)應(yīng)的特征向量為
,那么:
顯然,是一個(gè)半正定的二次型,且有最大值。
求解最大值和最大值點(diǎn)
目標(biāo)函數(shù)可以表示成映射后的向量的二范數(shù)平方:
所以最大化目標(biāo)函數(shù)的基本問(wèn)題就轉(zhuǎn)化成了:對(duì)于一個(gè)矩陣,它對(duì)一個(gè)向量做變換,變換前后的向量的模長(zhǎng)伸縮尺度如何才能最大?我們有矩陣代數(shù)中的定理知,向量經(jīng)矩陣映射前后的向量長(zhǎng)度之比的最大值就是這個(gè)矩陣的最大奇異值,即:
最大特征值對(duì)應(yīng)的特征向量的方向就是第一個(gè)主成分
的方向。
主成分所占整個(gè)信息的百分比可用下式計(jì)算:
分母為所有奇異值的平方和,分子為前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)的均值。
| 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é)方差矩陣
第三步:求協(xié)方差的特征值和特征向量
第四步:將特征值按照從大到小的順序排序,選擇其中最大的k個(gè),然后將其對(duì)應(yīng)的k個(gè)特征向量分別作為列向量組成特征向量矩陣。
這里特征值只有兩個(gè),我們選擇其中最大的那個(gè),這里是1.28402771,對(duì)應(yīng)的特征向量為
第五步:將樣本點(diǎn)投影到特征向量上, 這樣,就將原始樣例的n維特征變成了k維,這k維就是原始特征在k維上的投影。