【深度学习】数据降维方法总结
引言:
機(jī)器學(xué)習(xí)領(lǐng)域中所謂的降維就是指采用某種映射方法,將原高維空間中的數(shù)據(jù)點(diǎn)映射到低維度的空間中。降維的本質(zhì)是學(xué)習(xí)一個(gè)映射函數(shù) f : x->y,其中x是原始數(shù)據(jù)點(diǎn)的表達(dá),目前最多使用向量表達(dá)形式。 y是數(shù)據(jù)點(diǎn)映射后的低維向量表達(dá),通常y的維度小于x的維度(當(dāng)然提高維度也是可以的)。f可能是顯式的或隱式的、線性的或非線性的。
目前大部分降維算法處理向量表達(dá)的數(shù)據(jù),也有一些降維算法處理高階張量表達(dá)的數(shù)據(jù)。之所以使用降維后的數(shù)據(jù)表示是因?yàn)?/span>:①在原始的高維空間中,包含有冗余信息以及噪音信息,在實(shí)際應(yīng)用例如圖像識別中造成了誤差,降低了準(zhǔn)確率;而通過降維,我們希望減少冗余信息所造成的誤差,提高識別(或其他應(yīng)用)的精度。?②又或者希望通過降維算法來尋找數(shù)據(jù)內(nèi)部的本質(zhì)結(jié)構(gòu)特征。
在很多算法中,降維算法成為了數(shù)據(jù)預(yù)處理的一部分,如PCA。事實(shí)上,有一些算法如果沒有降維預(yù)處理,其實(shí)是很難得到很好的效果的。
-
數(shù)據(jù)降維的目的
數(shù)據(jù)降維,直觀地好處是維度降低了,便于計(jì)算和可視化,其更深層次的意義在于有效信息的提取綜合及無用信息的擯棄。
-
數(shù)據(jù)降維的方法
主要的方法是線性映射和非線性映射方法兩大類。
一、線性映射
線性映射方法的代表方法有:PCA(Principal Component Analysis),LDA(Discriminant Analysis)
1.1 ?主成分分析算法(PCA)
主成分分析(PCA) 是最常用的線性降維方法,它的目標(biāo)是通過某種線性投影,將高維的數(shù)據(jù)映射到低維的空間中表示,并期望在所投影的維度上數(shù)據(jù)的方差最大,以此使用較少的數(shù)據(jù)維度,同時(shí)保留住較多的原數(shù)據(jù)點(diǎn)的特性。?是將原空間變換到特征向量空間內(nèi),數(shù)學(xué)表示為AX = γX。
為什么要用協(xié)方差矩陣來特向分解呢??
協(xié)方差矩陣表征了變量之間的相關(guān)程度(維度之間關(guān)系)。?
對數(shù)據(jù)相關(guān)性矩陣的特向分解,意味著找到最能表征屬性相關(guān)性的特向(最能表征即誤差平方最小)。PCA一開始就沒打算對數(shù)據(jù)進(jìn)行特向分解,而是對數(shù)據(jù)屬性的相關(guān)性進(jìn)行分析,從而表示出最能代表屬性相關(guān)性的特向,然后將原始數(shù)據(jù)向這些特向上投影。所以,有的地方說PCA去相關(guān)。?
通俗的理解,如果把所有的點(diǎn)都映射到一起,那么幾乎所有的信息(如點(diǎn)和點(diǎn)之間的距離關(guān)系)都丟失了,而如果映射后方差盡可能的大,那么數(shù)據(jù)點(diǎn)則會分散開來,以此來保留更多的信息。可以證明,PCA是丟失原始數(shù)據(jù)信息最少的一種線性降維方式。(實(shí)際上就是最接近原始數(shù)據(jù),但是PCA并不試圖去探索數(shù)據(jù)內(nèi)在結(jié)構(gòu))
設(shè)?n?維向量w為目標(biāo)子空間的一個(gè)坐標(biāo)軸方向(稱為映射向量),最大化數(shù)據(jù)映射后的方差,有:
其中?m?是數(shù)據(jù)實(shí)例的個(gè)數(shù),xi 是數(shù)據(jù)實(shí)例?i?的向量表達(dá), x拔是所有數(shù)據(jù)實(shí)例的平均向量。定義W 為包含所有映射向量為列向量的矩陣,經(jīng)過線性代數(shù)變換,可以得到如下優(yōu)化目標(biāo)函數(shù):
其中tr表示矩陣的跡,A是數(shù)據(jù)協(xié)方差矩陣。
容易得到最優(yōu)的W是由數(shù)據(jù)協(xié)方差矩陣前?k?個(gè)最大?的特征值對應(yīng)的特征向量作為列向量構(gòu)成的。這些特征向量形成一組正交基并且最好地保留了數(shù)據(jù)中的信息。
PCA的輸出就是Y = W*X,由X的原始維度降低到了k維。
PCA追求的是在降維之后能夠最大化保持?jǐn)?shù)據(jù)的內(nèi)在信息,并通過衡量在投影方向上的數(shù)據(jù)方差的大小來衡量該方向的重要性。但是這樣投影以后對數(shù)據(jù)的區(qū)分作用并不大,反而可能使得數(shù)據(jù)點(diǎn)揉雜在一起無法區(qū)分。這也是PCA存在的最大一個(gè)問題,這導(dǎo)致使用PCA在很多情況下的分類效果并不好。具體可以看下圖所示,若使用PCA將數(shù)據(jù)點(diǎn)投影至一維空間上時(shí),PCA會選擇2軸,這使得原本很容易區(qū)分的兩簇點(diǎn)被揉雜在一起變得無法區(qū)分;而這時(shí)若選擇1軸將會得到很好的區(qū)分結(jié)果。
PCA優(yōu)缺點(diǎn):
優(yōu)點(diǎn):1.最小誤差 2.提取了主要信息
缺點(diǎn):PCA將所有的樣本(特征向量集合)作為一個(gè)整體對待,去尋找一個(gè)均方誤差最小意義下的最優(yōu)線性映射投影,而忽略了類別屬性,而它所忽略的投影方向有可能剛好包含了重要的可分性信息。
1.2 線性判別分析(LDA)
判別分析(Discriminant Analysis) 所追求的目標(biāo)與PCA不同,不是希望保持?jǐn)?shù)據(jù)最多的信息,而是希望數(shù)據(jù)在降維后能夠很容易地被區(qū)分開來。后面會介紹LDA的方法,是另一 種常見的線性降維方法。另外一些非線性的降維方法利用數(shù)據(jù)點(diǎn)的局部性質(zhì),也可以做到比較好地區(qū)分結(jié)果,例如LLE,Laplacian Eigenmap等。以后會介紹。
LDA是一種有監(jiān)督的(supervised)線性降維算法。與PCA保持?jǐn)?shù)據(jù)信息不同,核心思想:往線性判別超平面的法向量上投影,是的區(qū)分度最大(高內(nèi)聚,低耦合)。LDA是為了使得降維后的數(shù)據(jù)點(diǎn)盡可能地容易被區(qū)分!
假設(shè)原始數(shù)據(jù)表示為X,(m*n矩陣,m是維度,n是sample的數(shù)量)
既然是線性的,那么就是希望找到映射向量a, 使得 a‘X后的數(shù)據(jù)點(diǎn)能夠保持以下兩種性質(zhì):
1、同類的數(shù)據(jù)點(diǎn)盡可能的接近(within class)
2、不同類的數(shù)據(jù)點(diǎn)盡可能的分開(between class)
所以呢還是上次PCA用的這張圖,如果圖中兩堆點(diǎn)是兩類的話,那么我們就希望他們能夠投影到軸1去(PCA結(jié)果為軸2),這樣在一維空間中也是很容易區(qū)分的。
?PCA與LDA的區(qū)別:
主成分分析(Principal Component Analysis,PCA)可以找擁有最大方差的那個(gè)軸。雖然這樣的轉(zhuǎn)換是從最佳重建角度考慮的,但是他沒有把標(biāo)簽問題考慮進(jìn)去。想象一個(gè)情況,對于圖片分類樣本而言,如果變化是基于外部來源,比如光照。軸的最大方差不一定包含任何有鑒別性的信息,因此此時(shí)的分類是不可能的。而線性判別分析(Linear Discriminant Analysis,LDA)的特定類投影方法被提出來解決人臉識別問題。其中一個(gè)基本的想法就是,使類內(nèi)方差最小的同時(shí),使類外方差最大。二、非線性映射
非線性映射方法的代表方法有:核方法(核+線性),二維化和張量化(二維+線性),流形學(xué)習(xí)(ISOMap,LLE,LPP)
2.1 ?基于核的非線性降維
代表方法有:KPCA,KFDA。?
KPCA的基本思想:通過Kernel trick將PCA投影的過程通過內(nèi)積的形式表達(dá)出來。將高維向量?(x)與對應(yīng)特向β?(x)與對應(yīng)特向β的內(nèi)積轉(zhuǎn)換成低維的核函數(shù)表示。?
2.2 ?流形學(xué)習(xí)
流形學(xué)習(xí)的主要算法有:ISOMap(等距映射)、LE(拉普拉斯特征映射)、LLE(局部線性嵌入)。?
流形:直線或者曲線是一維流形,平面或者曲面是二維流形,更高維之后是多維流形。一個(gè)流形好比是?d?維的空間,是一個(gè)?m?維空間(m>n)被扭曲之后的空間。流形并不是一個(gè)“形狀”,而是一個(gè)“空間”?
流形學(xué)習(xí)的假設(shè):數(shù)據(jù)采樣于某一流形上。
2.2.1 ?ISOMap(等距特征映射)
ISOMap是一種非迭代的全局優(yōu)化算法。ISOMap對MDS(Multidimensional Scaling-多維尺度分析)進(jìn)行改造,用測地線距離(曲線距離)作為空間中兩點(diǎn)距離,原來是用歐氏距離,從而將位于某維流形上的數(shù)據(jù)映射到一個(gè)歐氏空間上。?
ISOMap將數(shù)據(jù)點(diǎn)連接起來構(gòu)成一個(gè)鄰接Graph來離散地近似原來流形,而測地距離則相應(yīng)地通過Graph上的最短路徑來近似了。?
比如:我們將球體曲面映射到二維平面上。?
此博客寫得通俗易懂:http://blog.pluskid.org/?p=533?
幾點(diǎn)注意:?
1)ISOMap適用的流形:適合于內(nèi)部平坦的低維流形,不適合于學(xué)習(xí)有較大內(nèi)在曲率的流形。?
2)近鄰數(shù)的選擇:近鄰數(shù)應(yīng)足夠大以便能夠減少在路徑長度和真實(shí)測地距離之間的不同,但要小到能夠預(yù)防“短路”現(xiàn)象。?
3)所構(gòu)造圖的連通性:要求所構(gòu)造的圖示連通的,否則有兩種處理辦法,一種是放寬臨界點(diǎn)選擇的限制,另一種是對于每一連通部分分別使用ISOMap算法,得到不同部分的降維結(jié)果。?
數(shù)據(jù)到底是否分布于一個(gè)流形上?這是個(gè)暫時(shí)難以回答的問題。?
MDS是一種降維方法,它在降維時(shí)使得降維之后的兩點(diǎn)間的歐氏距離盡量保持不變(用歐氏距離矩陣來表示高維向量的兩兩之間的相似度,尋找同樣數(shù)量的映射維度的向量,使得映射維度下兩兩間距離約等于原高維下兩兩間距離,變?yōu)榱藘?yōu)化問題)。維基百科對MDS的介紹https://en.wikipedia.org/wiki/Multidimensional_scaling
2.2.2 ?LLE(局部線性嵌入)
前提假設(shè):數(shù)據(jù)沒有形成一個(gè)封閉的超曲面,局部數(shù)據(jù)點(diǎn)是線性的。?
LLE(Locally Linear Embedding-局部線性嵌入)是一種非線性降維算法,它能夠使降維后的數(shù)據(jù)較好地保持原有?流形結(jié)構(gòu)?。LLE用局部線性反映全局的非線性的算法,并能夠使降維的數(shù)據(jù)保持原有數(shù)據(jù)的拓?fù)浣Y(jié)構(gòu)。(在流形上使用局部線性,并用有限局部樣本的互相線性表示,得到幾何特性的構(gòu)造權(quán)重矩陣,在低維下找到滿足高維時(shí)樣本間構(gòu)造權(quán)重的樣本集)?
使用LLE將三維數(shù)據(jù)(b)映射到二維(c)之后,映射后的數(shù)據(jù)仍能保持原有的數(shù)據(jù)流形(紅色的點(diǎn)互相接近,藍(lán)色的也互相接近),說明LLE有效地保持了數(shù)據(jù)原有的流行結(jié)構(gòu)。
但是LLE在有些情況下也并不適用,如果數(shù)據(jù)分布在整個(gè)封閉的球面上,LLE則不能將它映射到二維空間,且不能保持原有的數(shù)據(jù)流形。那么我們在處理數(shù)據(jù)中,首先假設(shè)數(shù)據(jù)不是分布在閉合的球面或者橢球面上。
LLE算法認(rèn)為每一個(gè)數(shù)據(jù)點(diǎn)都可以由其近鄰點(diǎn)的線性加權(quán)組合構(gòu)造得到。算法的主要步驟分為三步:
LLE詳細(xì)步驟如下:?
1.計(jì)算或者尋找數(shù)據(jù)點(diǎn)xi的臨近數(shù)據(jù)點(diǎn)。?
假設(shè)數(shù)據(jù)局部為平面,故可以用線性組合表示xi,其誤差為:?
其中wij表示線性重構(gòu)xi時(shí)的貢獻(xiàn)比例。?
找到每個(gè)樣本點(diǎn)的K個(gè)最近鄰點(diǎn)。?
2.計(jì)算構(gòu)造權(quán)重并重構(gòu)數(shù)據(jù)?
通過約束計(jì)算wij,使得不在該樣本點(diǎn)的K個(gè)最近鄰點(diǎn)中的構(gòu)造權(quán)重都為0.?
重構(gòu)權(quán)重使得重構(gòu)的數(shù)據(jù)點(diǎn)與臨近點(diǎn)間的旋轉(zhuǎn)、縮放、平移特性保持不變,即幾何特性不依賴于特定的參考框架。?
3.由重構(gòu)樣本向低維映射。(求低維嵌入)?
設(shè)zz是低維空間,找到同樣數(shù)量的低維映射樣本,使得:?
最小。(不去關(guān)心?,直接找zi)?
流形學(xué)習(xí)優(yōu)缺點(diǎn):?
優(yōu)點(diǎn):1)假設(shè)流形的存在,部分解決了高維數(shù)據(jù)分布的問題。?
缺點(diǎn):1)假設(shè)流形的存在,不能總是適合數(shù)據(jù)特點(diǎn)。
三、小結(jié)
降維方法?__ 屬性選擇:過濾法、包裝法、嵌入法;?
?|_ 映射方法? __線性映射方法:PCA、FDA等?
|__非線性映射方法:?
|__核方法:KPCA、KFDA等?
|__二維化:?
|__流形學(xué)習(xí):ISOMap、LLE、LPP等。?
|__其他方法:神經(jīng)網(wǎng)絡(luò)和聚類?
?
降維可以方便數(shù)據(jù)可視化+數(shù)據(jù)分析+數(shù)據(jù)壓縮+數(shù)據(jù)提取等。?
各個(gè)降維方法效果圖展示:?
轉(zhuǎn)載于:https://www.cnblogs.com/guoyaohua/p/8855636.html
總結(jié)
以上是生活随笔為你收集整理的【深度学习】数据降维方法总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git + Maven + Jenkin
- 下一篇: 人工智能热门图书(深度学习、Tensor