午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

主元分析(PCA)原理

 Fredanf 2013-06-27

主元分析(PCA)原理

分享
2010-04-13 16:22

    因?yàn)榻?jīng)常做一些圖像和信號(hào)處理的工作,要用到主元分析(Principal Components Analysis)作為工具。寫出來供自己和朋友參考。

    PCA是一種統(tǒng)計(jì)技術(shù),經(jīng)常應(yīng)用于人面部識(shí)別和圖像壓縮以及信號(hào)去噪等領(lǐng)域,是在高維數(shù)據(jù)中提取模式的一種常用技術(shù)。要了解PCA首先要了解一些相關(guān)的數(shù)學(xué)知識(shí),這里主要介紹協(xié)方差矩陣、特征值與特征矢量的概念。

1、  協(xié)方差矩陣

    協(xié)方差總是在兩維數(shù)據(jù)之間進(jìn)行度量,如果我們具有超過兩維的數(shù)據(jù),將會(huì)有多于兩個(gè)的協(xié)方差。例如對(duì)于三維數(shù)據(jù)(x, y, z維),需要計(jì)算cov(x,y),cov(y,z)和cov(z,x)。獲得所有維數(shù)之間協(xié)方差的方法是計(jì)算協(xié)方差矩陣。維數(shù)據(jù)協(xié)方差矩陣的定義為

(1)

 

這個(gè)公式告訴我們,如果我們有一個(gè)n維數(shù)據(jù),那么協(xié)方差矩陣就是一個(gè)n行n列的方矩陣,矩陣的每一個(gè)元素是兩個(gè)不同維數(shù)據(jù)之間的協(xié)方差。

    對(duì)于一個(gè)3維數(shù)據(jù)(x,y,z),協(xié)方差矩陣有3行3列,它的元素值為:

 

(2)

 

 

需要注意的是:沿著主對(duì)角線,可以看到元素值是同一維數(shù)據(jù)之間的協(xié)方差,這正好是該維數(shù)據(jù)的方差。對(duì)于其它元素,因?yàn)閏ov(a,b)=cov(b,a),所以協(xié)方差矩陣是關(guān)于主對(duì)角線對(duì)稱的。

2、特征值和特征矢量

    只要矩陣大小合適,就可以進(jìn)行兩矩陣相乘,特征矢量就是其中的一個(gè)特例??紤]圖2.1中兩個(gè)矩陣和矢量乘法。

 

2.1 一個(gè)非特征矢量和一個(gè)特征矢量的例子

2.2 一個(gè)縮放的特征矢量仍然是一個(gè)特征矢量

在第一個(gè)例子中,結(jié)果矢量不是原來因子矢量與整數(shù)相乘,然而在第二個(gè)例子中,結(jié)果矢量是原來因子矢量的4倍,為什么會(huì)這樣呢?該矢量是一個(gè)2維空間矢量,表示從原點(diǎn)(0,0)指向點(diǎn)(3,2)的箭矢。方矩陣因子可以看作是轉(zhuǎn)換矩陣,一個(gè)矢量左乘該轉(zhuǎn)換矩陣,意味著原始矢量轉(zhuǎn)換為一個(gè)新矢量。

    特征矢量來自于轉(zhuǎn)換特性。設(shè)想一個(gè)轉(zhuǎn)換矩陣,如果用其左乘一個(gè)矢量,映射矢量是它自身,這個(gè)矢量(以及它的所有尺度縮放)就是該轉(zhuǎn)換矩陣的特征矢量。

    特征矢量有什么特性呢?首先只有方陣才有特征矢量,而且并不是所有方陣都有特征矢量,如果一個(gè)nXn方陣有特征矢量,那么它有n個(gè)特征矢量。

    特征矢量的另外一個(gè)性質(zhì)是對(duì)特征矢量的縮放會(huì)得到縮放前同樣地結(jié)果,如圖2.2所示,這是因?yàn)槟銓?duì)矢量的縮放只是改變它的長(zhǎng)度,不會(huì)改變它的方向。最后,矩陣的所有特征矢量是正交的。這是一個(gè)非常重要的性質(zhì),因?yàn)檫@意味著你可以在這些正交矢量上表示一組數(shù)據(jù),而不僅是在x和y軸上。在下面的PCA小節(jié)內(nèi)我們將作這個(gè)工作。

    另外一個(gè)需要了解的是數(shù)學(xué)家尋找特征矢量,總喜歡尋找長(zhǎng)度為1的那一個(gè)特征矢量,這是因?yàn)槭噶康拈L(zhǎng)度不影響它是否是特征矢量,因此,為了保證特征矢量是標(biāo)準(zhǔn)的矢量,我們通常將特征矢量的長(zhǎng)度縮放為1,從而所有的特征矢量都有相同的長(zhǎng)度。

    怎樣去找到這些神秘的特征矢量呢?不幸的是,只有對(duì)相當(dāng)小維數(shù)的矩陣才有簡(jiǎn)單地方法,比如不超過3X3,對(duì)于較大維數(shù)的矩陣,需要復(fù)雜的迭代算法。

    特征值是與特征矢量極其相關(guān)的,事實(shí)上,在圖2.1中我們已經(jīng)看到了一個(gè)特征值。注意在兩個(gè)例子中,原始矢量左乘方陣后與矢量縮放數(shù)一樣。在這個(gè)例子中,縮放數(shù)為4。4就是對(duì)應(yīng)該特征矢量的特征值。不管在左乘方陣之前如何縮放特征矢量,我們總是得到該矢量的4倍(如圖2.2)。所以特征值和特征矢量總是成對(duì)出現(xiàn),當(dāng)你使用程序計(jì)算特征矢量時(shí),你總是同時(shí)得到對(duì)應(yīng)的特征值。

3、主成分分析(PCA)

    最后我們將進(jìn)行主成分分析的介紹,那么什么是主成分分析呢?它是一種在數(shù)據(jù)中辨別模式的方法,表達(dá)數(shù)據(jù)的相似與不同之處的方法。因?yàn)楦呔S數(shù)據(jù)的模式難以發(fā)現(xiàn)——圖形表述不可用,PCA是一個(gè)有力的數(shù)據(jù)分析工具。

    PCA的另外一個(gè)重要優(yōu)勢(shì)是,一旦你找到了數(shù)據(jù)的這些模式,你可以壓縮它,也就是在不丟失很多信息的基礎(chǔ)上,降低數(shù)據(jù)的維數(shù)。在下一節(jié)將會(huì)看到,這種技術(shù)被用于圖像壓縮。

本節(jié)將一步一步地帶你對(duì)一組數(shù)據(jù)進(jìn)行PCA操作。我將不具體描述該技術(shù)為什么適用,只是介紹怎樣使用該技術(shù)。

§3.1 方法

第一步:獲得數(shù)據(jù)

    在我簡(jiǎn)單的例子中,將使用我自己制作的2維數(shù)據(jù),使用2維數(shù)據(jù)的原因是我可以提供這些數(shù)據(jù)的圖形,以便直觀地觀察PCA的操作步驟。下面就是我使用的數(shù)據(jù)

x=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1]T
y=[2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]T

第二步:減去均值

    要使PCA正常工作,必須減去數(shù)據(jù)的均值。減去的均值為每一維的平均,所有的x值都要減去,同樣所有的y值都要減去,這樣處理后的數(shù)據(jù)都具有0均值。

x=[0.69, -1.31, 0.39, 0.09, 1.29, 0.49, 0.19, -0.81, -0.31, -0.71]T

y=[0.49, -1.21, 0.99, 0.29, 1.09, 0.79, -0.31, -0.81, -0.31, -1.01]T;

第三步:計(jì)算協(xié)方差矩陣

    因?yàn)閿?shù)據(jù)是2維的,它的協(xié)方差矩陣就是2X2維的,這里直接給出結(jié)果:

因?yàn)榉菍?duì)角元素是正的,我們可以期望 和 變量一起增大。

第四步:計(jì)算協(xié)方差矩陣的特征矢量和特征值

    因?yàn)閰f(xié)方差矩陣為方陣,我們可以計(jì)算它的特征矢量和特征值,它可以告訴我們數(shù)據(jù)的有用信息。我們數(shù)據(jù)的特征值和特征矢量分別為

我們可以看到這些矢量都是單位矢量,也就是它們的長(zhǎng)度為1,這對(duì)于PCA是非常重要的,幸運(yùn)的是,大多數(shù)數(shù)學(xué)程序包,當(dāng)你計(jì)算特征矢量時(shí),總是會(huì)得到單位特征矢量。

第五步:選擇成分組成模式矢量

現(xiàn)在可以進(jìn)行數(shù)據(jù)壓縮降低維數(shù)了。如果你觀察上一節(jié)中的特征矢量和特征值,會(huì)注意到那些特征值是十分不同的。事實(shí)上,可以證明對(duì)應(yīng)最大特征值的特征矢量就是數(shù)據(jù)的主成分。在我們的例子中,對(duì)應(yīng)大特征值的特征矢量就是那條穿過數(shù)據(jù)中間的矢量,它是數(shù)據(jù)維數(shù)之間最大的關(guān)聯(lián)。

一般地,從協(xié)方差矩陣找到特征矢量以后,下一步就是按照特征值由大到小進(jìn)行排列,這將給出成分的重要性級(jí)別。現(xiàn)在,如果你喜歡,可以忽略那些重要性很小的成分,當(dāng)然這會(huì)丟失一些信息,但是如果對(duì)應(yīng)的特征值很小,你不會(huì)丟失很多信息。如果你已經(jīng)忽略了一些成分,那么最后的數(shù)據(jù)集將有更少的維數(shù),精確地說,如果你的原始數(shù)據(jù)是n維的,你選擇了前p個(gè)主要成分,那么你現(xiàn)在的數(shù)據(jù)將僅有p維。

現(xiàn)在要做的是你需要組成一個(gè)模式矢量,這只是幾個(gè)矢量組成的矩陣的一個(gè)有意思的名字而已,它由你保持的所有特征矢量構(gòu)成,每一個(gè)特征矢量是這個(gè)矩陣的一列。

對(duì)于我們的數(shù)據(jù)集,因?yàn)橛袃蓚€(gè)特征矢量,因此我們有兩個(gè)選擇。我們可以用兩個(gè)特征矢量組成模式矢量:

我們也可以忽略其中較小特征值的一個(gè)特征矢量:

下一節(jié)我們將會(huì)看到它們的結(jié)果。

x=[-0.828, 1.778, -0.992, -2.742, -1.676, -0.913, 0.099, 1.145, 0.438,1.224]T

第六步:獲得新數(shù)據(jù)

這是PCA最后一步,也是最容易的一步。一旦你選擇了須要保留的成分(特征矢量)并組成了模式矢量,我們簡(jiǎn)單地對(duì)其進(jìn)行轉(zhuǎn)置,并將其左乘原始數(shù)據(jù)的轉(zhuǎn)置:

其中rowFeatureVector是由特征矢量作為列組成的矩陣的轉(zhuǎn)置,因此它的行就是原來的特征矢量,而且對(duì)應(yīng)最大特征值的特征矢量在該矩陣的最上一行。rowdataAdjust是減去均值后的數(shù)據(jù),即數(shù)據(jù)項(xiàng)目在每一列中,每一行就是一維。FinalData是最后得到的數(shù)據(jù),數(shù)據(jù)項(xiàng)目在它的列中,維數(shù)沿著行。

這將給我們什么結(jié)果呢?這將僅僅給出我們選擇的數(shù)據(jù)。我們的原始數(shù)據(jù)有兩個(gè)軸(x和y),所以我們的原始數(shù)據(jù)按這兩個(gè)軸分布。我們可以按任何兩個(gè)我們喜歡的軸表示我們的數(shù)據(jù)。如果這些軸是正交的,這種表達(dá)將是最有效的,這就是特征矢量總是正交的重要性。我們已經(jīng)將我們的數(shù)據(jù)從原來的xy軸表達(dá)變換為現(xiàn)在的單個(gè)特征矢量表達(dá)。如果我們已經(jīng)忽略了一些特征矢量,則新數(shù)據(jù)將會(huì)用我們保留的矢量表達(dá)。

§3.2 恢復(fù)原來的數(shù)據(jù)

4、寫的累了,就這樣吧。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多