PCA主成分分析学习总结
大概主成分分析(Principal components analysis,以下簡(jiǎn)稱PCA)是最重要的降維方法之一。在數(shù)據(jù)壓縮消除冗余和數(shù)據(jù)噪音消除等領(lǐng)域都有廣泛的應(yīng)用。一般我們提到降維最容易想到的算法就是PCA,下面我們就對(duì)PCA的原理做一個(gè)總結(jié)。
首先考慮一個(gè)問題:對(duì)于正交屬性空間中的樣本點(diǎn),如何用一個(gè)超平面(直線的高維推廣)對(duì)所有樣本進(jìn)行恰當(dāng)?shù)谋磉_(dá)?
可以想到,若存在這樣的超平面,那么它大概具有這樣的性質(zhì):
- 最近重構(gòu)性:樣本點(diǎn)到這個(gè)超平面的距離足夠近
- 最大可分性:樣本點(diǎn)在這個(gè)超平面上的投影能盡可能的分開
基于最近重構(gòu)性和最大可分性能分別得到主成分分析的兩種等價(jià)推到,我們這里主要考慮最大可分性,并且一步一步推到出最終PCA。
1.PCA最大可分性的思想
PCA顧名思義,就是找出數(shù)據(jù)里最主要的方面,用數(shù)據(jù)里最主要的方面來代替原始數(shù)據(jù)。具體的,假如我們的數(shù)據(jù)集是 維的,共有 個(gè)數(shù)據(jù) 。我們希望將這 個(gè)數(shù)據(jù)的維度從 維降到 維,希望這 個(gè) 維的數(shù)據(jù)集盡可能的代表原始數(shù)據(jù)集。我們知道數(shù)據(jù)從 維降到 維肯定會(huì)有損失,但是我們希望損失盡可能的小。那么如何讓這 維的數(shù)據(jù)盡可能表示原來的數(shù)據(jù)呢?
我們先看看最簡(jiǎn)單的情況,也就是 , ,也就是將數(shù)據(jù)從二維降維到一維。數(shù)據(jù)如下圖。我們希望找到某一個(gè)維度方向,它可以代表這兩個(gè)維度的數(shù)據(jù)。圖中列了兩個(gè)向量方向, 和 ,那么哪個(gè)向量可以更好的代表原始數(shù)據(jù)集呢?
從直觀上也可以看出, 比 好,這就是我們所說的最大可分性。
2.基變換
一般來說,欲獲得原始數(shù)據(jù)新的表示空間,最簡(jiǎn)單的是對(duì)原始數(shù)據(jù)進(jìn)行線性變換(基變換):
其中 是樣本在新空間的表達(dá), 是基向量, 是原始樣本。我們可知選擇不同的基可以對(duì)一組數(shù)據(jù)給出不同的表示,同時(shí)當(dāng)基的數(shù)量少于原始樣本本身的維數(shù)則可達(dá)到降維的效果,矩陣表示如下:
其中, 是一個(gè)行向量,表示第個(gè)基;, 是一個(gè)列向量,表示第個(gè)原始數(shù)據(jù)記錄。特別要注意的是,這里 可以小于 ,而 決定了變換后數(shù)據(jù)的維數(shù)。也就是說,我們可以將一個(gè) 維數(shù)據(jù)變換到更低維度的空間中去,變換后的維度取決于基的數(shù)量。從原本 降維到 。因此這種矩陣相乘的表示也可以表示降維變換。
最后,上述分析同時(shí)給矩陣相乘找到了一種物理解釋:兩個(gè)矩陣相乘的意義是將右邊矩陣中的每一列列向量變換到左邊矩陣中每一行行向量為基所表示的空間中去。更抽象的說,一個(gè)矩陣可以表示一種線性變換。很多同學(xué)在學(xué)線性代數(shù)時(shí)對(duì)矩陣相乘的方法感到奇怪,但是如果明白了矩陣相乘的物理意義,其合理性就一目了然了。
3.方差
那么考慮,如何選擇一個(gè)方向或 者基才是最優(yōu)的?觀察下圖
周志華《機(jī)器學(xué)習(xí)》插圖我們將所有的點(diǎn)分別向兩條直線做投影,基于前面PCA最大可分思想,我們要找的方向是降維后損失最小,可以理解為投影后的數(shù)據(jù)盡可能的分開,那么這種分散程度可以用數(shù)學(xué)上的方差來表示,方差越大數(shù)據(jù)越分散。方差公式如下:
對(duì)數(shù)據(jù)進(jìn)行了中心化后(可以方便后面的操作):
現(xiàn)在我們已經(jīng)知道了以下幾點(diǎn):
- 對(duì)原始樣本進(jìn)行(線性變換)基變換可以對(duì)原始樣本給出不同的表示
- 基的維度小于數(shù)據(jù)的維度可以起到降維的效果
- 對(duì)基變換后新的樣本求其方差,選取使其方差最大的基
那么在下面我們來考慮一個(gè)新的問題
上面我們導(dǎo)出了優(yōu)化目標(biāo),但是這個(gè)目標(biāo)似乎不能直接作為操作指南(或者說算法),因?yàn)樗徽f要什么,但根本沒有說怎么做。所以我們要繼續(xù)在數(shù)學(xué)上研究計(jì)算方案。
4.協(xié)方差
從二維降到一維可以使用方差最大來選出能使基變換后數(shù)據(jù)分散最大的方向(基),但如果遇到高維的變換,當(dāng)完成第一個(gè)方向(基)選擇后,第二個(gè)投影方向應(yīng)該與第一個(gè)“幾乎重合在一起”,這顯然是沒有用的,因此要有其它的約束條件。我們希望兩個(gè)字段盡可能表示更多的信息,使其不存在相關(guān)性。
數(shù)學(xué)上用協(xié)方差表示其相關(guān)性:
當(dāng) 時(shí),表示兩個(gè)字段完全獨(dú)立,這也是我們的優(yōu)化目標(biāo)。
5.協(xié)方差矩陣
我們想達(dá)到的目標(biāo)與字段內(nèi)方差及字段間協(xié)方差有密切關(guān)系,假如只有 、 兩個(gè)字段,那么我們將它們按行組成矩陣 ,表示如下:
然后我們用 乘以 的轉(zhuǎn)置,并乘上系數(shù) :
可見,協(xié)方差矩陣是一個(gè)對(duì)稱的矩陣,而且對(duì)角線是各個(gè)維度的方差,而其它元素是 和 的協(xié)方差,然后會(huì)發(fā)現(xiàn)兩者被統(tǒng)一到了一個(gè)矩陣的。
6.協(xié)方差矩陣對(duì)角化
我們的目標(biāo)是使 ,根據(jù)上述推倒,可以看出我們的優(yōu)化目標(biāo) 等價(jià)于協(xié)方差矩陣對(duì)角化。即除對(duì)角線外的其它元素( 如 )化為0,并且在對(duì)角線上將元素按大小從上到下排列,這樣我們就達(dá)到了優(yōu)化目的。這樣說可能還不是很明晰,我們進(jìn)一步看下原矩陣與基變換后矩陣協(xié)方差矩陣的關(guān)系:
設(shè)原始數(shù)據(jù)矩陣 對(duì)應(yīng)的協(xié)方差矩陣為 ,而 是一組基按行組成的矩陣,設(shè) ,則 為 對(duì) 做基變換后的數(shù)據(jù)。設(shè) 的協(xié)方差矩陣為 ,我們推導(dǎo)一下 與 的關(guān)系:
可見,我們要找的 不是別的,而是能讓原始協(xié)方差矩陣對(duì)角化的 。換句話說,優(yōu)化目標(biāo)變成了尋找一個(gè)矩陣 ,滿足是一個(gè)對(duì)角矩陣,并且對(duì)角元素按從大到小依次排列,那么 的前 行就是要尋找的基,用 的前 行組成的矩陣乘以 就使得 從 維降到了 維并滿足上述優(yōu)化條件。
我們希望的是投影后的方差最大化,于是我們的優(yōu)化目標(biāo)可以寫為:
利用拉格朗日函數(shù)可以得到:
對(duì) 求導(dǎo)有 ,整理下即為:
于是,只需對(duì)協(xié)方差矩陣 進(jìn)行特征分解,對(duì)求得的特征值進(jìn)行排序,再對(duì) 取前 列組成的矩陣乘以原始數(shù)據(jù)矩陣X,就得到了我們需要的降維后的數(shù)據(jù)矩陣Y。
7.PCA算法流程
從上面兩節(jié)我們可以看出,求樣本 的 維的主成分其實(shí)就是求樣本集的協(xié)方差矩陣 的前 個(gè)特征值對(duì)應(yīng)特征向量矩陣 ,然后對(duì)于每個(gè)樣本 ,做如下變換 ,即達(dá)到降維的PCA目的。
下面我們看看具體的算法流程:
輸入: 維樣本集 ,要降維到的維數(shù) .
輸出:降維后的樣本集
1.對(duì)所有的樣本進(jìn)行中心化
2.計(jì)算樣本的協(xié)方差矩陣
3.求出協(xié)方差矩陣的特征值及對(duì)應(yīng)的特征向量
4.將特征向量按對(duì)應(yīng)特征值大小從上到下按行排列成矩陣,取前k行組成矩陣P
5.Y=PX即為降維到k維后的數(shù)據(jù)
注意:
有時(shí)候,我們不指定降維后的 的值,而是換種方式,指定一個(gè)降維到的主成分比重閾值 。這個(gè)閾值t在 之間。假如我們的 個(gè)特征值為 ,則n'可以通過下式得到:
8.PCA算法總結(jié)
這里對(duì)PCA算法做一個(gè)總結(jié)。作為一個(gè)非監(jiān)督學(xué)習(xí)的降維方法,它只需要特征值分解,就可以對(duì)數(shù)據(jù)進(jìn)行壓縮,去噪。因此在實(shí)際場(chǎng)景應(yīng)用很廣泛。為了克服PCA的一些缺點(diǎn),出現(xiàn)了很多PCA的變種,比如為解決非線性降維的KPCA,還有解決內(nèi)存限制的增量PCA方法Incremental PCA,以及解決稀疏數(shù)據(jù)降維的PCA方法Sparse PCA等。
PCA算法的主要優(yōu)點(diǎn)有:
- 僅僅需要以方差衡量信息量,不受數(shù)據(jù)集以外的因素影響?!?/li>
- 各主成分之間正交,可消除原始數(shù)據(jù)成分間的相互影響的因素。
- 計(jì)算方法簡(jiǎn)單,主要運(yùn)算是特征值分解,易于實(shí)現(xiàn)。
PCA算法的主要缺點(diǎn)有:
- 主成分各個(gè)特征維度的含義具有一定的模糊性,不如原始樣本特征的解釋性強(qiáng)。
- 方差小的非主成分也可能含有對(duì)樣本差異的重要信息,因降維丟棄可能對(duì)后續(xù)數(shù)據(jù)處理有影響。
繼續(xù)閱讀
在PCA降維過程中,當(dāng)進(jìn)行協(xié)方差矩陣上求解特征值時(shí),如果面對(duì)維度高達(dá) ,可想而知耗費(fèi)的計(jì)算量程平方級(jí)增長(zhǎng)。面對(duì)這樣一個(gè)難點(diǎn),從而引出奇異值分解(SVD),利用SVD不僅可以解出PCA的解,而且無需大的計(jì)算量。
Betten:奇異值分解(SVD)原理PCA(主成分分析)和LDA(線性判別分析)有很多的相似點(diǎn),其本質(zhì)是要將初始樣本映射到維度更低的樣本空間中,但是PCA和LDA的映射目標(biāo)不一樣:PCA是為了讓映射后的樣本具有最大的發(fā)散性;而LDA是為了讓映射后的樣本有最好的分類性能。所以說PCA是一種無監(jiān)督的降維方法,而LDA是一種有監(jiān)督的降維方法。
Betten:LDA線性判別分析參考資料
Pattern Recognition and Machine Learning
《機(jī)器學(xué)習(xí)》
主成分分析(Principal components analysis)-最大方差解釋
總結(jié)
以上是生活随笔為你收集整理的PCA主成分分析学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows上pip install
- 下一篇: 领域应用 | 人工智能+知识图谱:如何规