⑴ 葫蘆書第四章——降維
在機器學習中,數據通常需要被表示為向量形式以輸入模型進行訓練。但眾所周知,對高維向量進行處理和分析時,會極大地消耗系統資源,甚至產生維度災難(相關筆記記錄於 這里 )。因此,用一個低維度的向量表示原始高維度的特徵就顯得尤為重要。
在機器學習領域中,我們對原始數據進行特徵提取,有時會得到比較高維的特徵向量。在這些向量所處的高維空間中,包含很多的冗餘和雜訊。我們希望通過降維的方式來尋找數據內部的特性,從而提升特徵表達能力,降低訓練復雜度。主成分分析(PCA)作為降維中最經典的方法,屬於一種 線性、非監督、全局的降維演算法 。
1、所謂主成分,就是把原特徵進行線性組合後得到新的特徵,此特徵盡可能多地保留了原特徵的方差。
2、設一組參數 ,記原特徵為 ,新特徵為 ,根據定義,我們要讓 的方差盡可能大,即 這就是我們的目標函數。
3、具體的求解過程要藉助特徵值分解。
(a)是二維空間中經過中心化的一組數據,我們很容易看出主成分所在的軸(以下稱為主軸)的大致方向,即(b)中黃線所處的軸。因為在黃線所處的軸上,數據分布得更為分散,這也意味著數據在這個方向上方差更大。
我們不難引出 PCA的目標,即最大化投影方差,也就是讓數據在主軸上投影的方差最大 。對於給定的一組數據點 ,其中所有向量均為列向量,中心化後的表示為 ,其中 。我們知道,向量內積在幾何上表示為第一個向量投影到第二個向量上的長度,因此向量 在 (單位方向向量)上的投影坐標可以表示為 。所以目標是找到一個投影方向 ,使得 在 上的投影方差盡可能大。易知,投影之後均值為0( ),因此投影後方差可以表示為:
其中 其實就是協方差矩陣,我們將其寫為 ,另外,由於 是單位向量,因此 ,因此我們要求解一個最大化問題:
引入拉格朗日乘子並對 求導令其等於0,便可以推出 ,此時:
不難看出, 投影後的方差就是協方差矩陣的特徵值。我們要找到最大的方差也就是協方差矩陣最大的特徵值,最佳投影方向就是最大特徵值所對應的特徵向量。次佳投影方向位於最佳投影方向的正交空間中,是第二大特徵值對應的特徵向量,以此類推。至此,我們得到了PCA的求解方法:
1)對樣本數據進行中心化處理。
2)求樣本協方差矩陣。
3)對協方差矩陣進行特徵值分解,將特徵值從大到小排列。
4)取特徵值前 大對應的特徵向量 通過以下映射將 維樣本映射到 維:
定義降維後的信息佔比為:
可以。從線性回歸的角度切入,最佳投影方向對應的直線應該使得各點到此直線的距離的平方和最小。關於這個目標和最大方差目標的等價性,我在 這里 已經說明過了。
從求解直線的思路出發,很容易聯想到數學中的線性回歸問題,其目標也是求解一個線性函數使得對應直線能夠更好地擬合樣本點集合。如果我們從這個角度定義PCA的目標,那麼問題就會轉化為一個回歸問題。
數據集中每個點 到 維超平面 的距離為:
其中 表示 在超平面 上的投影向量。若該超平面 由 個標准正交基 構成,則有線代知識可知, 可由這組基線性表示:
其中 表示 在 方向上投影的長度。因此 實際上就是 在 這組標准正交基下的坐標。而PCA要優化的目標是:
將上式中每個距離展開:
可以看到,第一項與選取的 無關,是一個常數,將 代入第二項第三項得到:
因為當 時, ,因此上式可寫為:
於是:
這等價於求解帶約束的優化問題:
如果我們對 中的 個基 依次求解,就會發現 和最大方差理論的方法完全等價 。
線性判別分析(Linear Discriminant Analysis, LDA)是一種 有監督學習演算法 ,同時經常被用來對數據進行降維。
相比於PCA,LDA可以作為一種有監督的降維演算法。在PCA中沒有考慮數據的標簽(類別),只是把原數據映射到一些方差比較大的方向上而已。
假設用不同的顏色標注 兩個不同類別的數據,如圖所示。根據PCA演算法,數據應該映射到方差最大的那個方向,亦即 軸方向。但是, 兩個不同類別的數據就會完全混合在一起,很難區分開。所以,使用PCA演算法進行降維後再進行分類的效果會非常差。但是如果使用LDA演算法,數據會映射到 軸方向。
1、要想降維過程中不損失類別信息,一個簡單的想法就是降維後兩類樣本點之間的距離越遠越好,這樣才能將兩類樣本區分開來。
2、在這樣的目標下,假設樣本在目標超平面上的投影,並考察兩類樣本投影的均值點,求解一個超平面,使得這兩個均值點之間的距離最大。
LDA首先是為了分類服務的,因此只要找到一個投影方向 ,使得投影後的樣本盡可能按照原始類別分開 。 我仍不妨從一個簡單的二分類問題出發,有 兩個類別的樣本,兩類的均值分別為 ,我們希望投影之後兩類之間的距離盡可能大,距離表示為:
和 表示兩類中心在 方向上的投影向量,即 ,因此需要優化的問題為:
容易發現當 方向與 一致的時候,該距離達到最大值,例如對圖(a)的黃棕兩種類別的樣本點進行降維時, 若按照最大化兩類投影中心距離的准則,會將樣本點投影到下方的黑線上。但是原本可以被線性劃分的兩類樣本經過投影後有了一定程度的重疊,這顯然不能使我們滿意。我們希望得到的投影結果如圖(b)所示,雖然兩類的中心在投影之後的距離有所減小,但確使投影之後樣本的可區分性提高了。
仔細觀察兩種投影方式的區別,可以發現,在圖(b)中,投影後的樣本點似乎在每一類中分布得更為集中了,用數學化的語言描述就是每類內部的方差比(a)中更小。這就引出了 LDA的中心思想一一最大化類間距離和最小化類內距離 。
在前文中我們已經找到了使得類間距離盡可能大的投影方式,現在只需要同時優化類內方差,使其盡可能小。我們將整個數據集的類內方差定義為各個類分別的方差之和,將目標函數定義為類間距離和類內距離的比值,於是引出我們需要最大化的目標:
真中 為單位向量, 分別表示兩類投影後的方差:
因此 可以寫成:
定義類間散度矩陣為:
類內散度矩陣為:
則有:
我們要最大化 ,只需對 求偏導,並令導數等於零:
於是得出:
在二分類中 和 是兩個數,令 ,於是:
即:
從這里我們可以看出,我們最大化的目標對應了一個矩陣的特徵值。 於是LDA降維變成了一個求矩陣特徵向量的問題。 就對應矩陣 最大的特徵值,而投影方向就是這個特徵值對應的特徵向量 。
對於二分類這一問題,由於 ,因此 的方向始終與 一致,若只考慮 的方向而不考慮長度,可得 。
1、LDA和PCA最顯著的區別就是前者是有監督方法而後者是無監督方法,因此在應用中,對於數據中有標簽的應該使用LDA,對於數據中無標簽的則使用PCA。
2、數學推導上,兩者的區別在於,PCA並未考慮類之間的距離(因為PCA並未用到標簽信息),而是僅僅考慮了降維後數據的方差,從這個角度來說,PCA相當於在LDA中將所有數據當成一類去處理的特殊情形。因此我們可以看到兩者的數學推導也十分相似,最終目標都歸為求解一個矩陣的特徵值分解。
首先將LDA拓展到多類高維的情況以和問題PCA的求解對應。假設有 個類別,並需要最終將特徵降維至 維。我們要找到一個 維投影超平面 使得投影後的樣本點滿足LDA的目標一一最大化類間距菌和最小化類內距離。
回顧兩個散度矩陣,類內散度矩陣 在類別數增加時仍滿足定義。而之前兩類問題的類間散度矩陣 在類別增加後就無法按照原始定義。
考慮三類樣本的情況, 分別表示棕綠黃三類樣本的中心, 表示這三個中心的均值(也即全部樣本的中心), 表示第 類的類內散度。我們可以定義一個新的矩陣 表示全局整體的散度,稱為全局散度矩陣:
如果把全局散度定義為類內散度與類間散度之和,即 ,那麼類間散度矩陣可表示為:
其中 是第 個類別中的樣本個數, 是總的類別個數。根據LDA的原理,可以將最大化的目標定義為:
剩下的求解過程與之前二分類LDA相同。
至此我們得到了與PCA步驟類似,但具有多個類別標簽高維數據的LDA求解方法:
1)計算數據集中每個類別樣本的均值向量 ,及總體均值向量 。
2)計算類內散度矩陣 和全局散度矩陣 ,得到類間散度矩陣 。
3)對矩陣 進行特徵值分解,將特徵值從大到小排列。
4)取特徵值前 大的特徵值對應的特徵向量 ,通過以下映
射將 維樣本映射到 維:
從PCA和LDA兩種降維方法的求解過程來看,它們確實有著很大的相似性,但對應的原理卻有所區別。首先從目標出發, PCA選擇的是投影後數據方差最大的方向。由於它是無監督的,因此PCA假設方差越大,信息量越多,用主成分來表示原始數據可以去除冗餘的維度,達到降維。而LDA選擇的是投影後類內方差小、類間方差大的方向,其用到了類別標簽信息。為了找到數據中具有判別性的維度,使得原始數據在這些方向上投影後,不同類別盡可能區分開 。
舉一個簡單的例子,在語音識別中,我們想從一段音頻中提取出人的語音信號,這時可以使用PCA先進行降維,過濾掉一些固定頻率(方差較小)的背景雜訊。但如果我們的需求是從這段音頻中區分出聲音屬於哪個人,那麼我們應該使用LDA對數據進行降維,使每個人的語音信號具有區分性。
從應用的角度,我們可以掌握一個基本的原則一一 對無監督的任務使用PCA進行降維,對有監督的則應用LDA 。
⑵ 從Word2vec可視化演算法t-SNE談起
剛好最近經常看一些word2vec的文章,在最後往往看到作者說用t-SNE可視化結果,也即把高維度的數據降維並可視化。很奇怪作者為何不用PCA或者LDA,深挖下去挖出了一個未曾了解過的 可視化演算法領域
降維,所有人都知道就是把特徵維度降低後並力求保留有用的信息。
說起降維,大部分人知道PCA(Principal Components Analysis)
說起降維,部分人知道LDA(Linear Discriminant Analysis)
說起降維,少部分人知道一般分為線性降維和非線性降:
1,線性降維:PCA(Principal Components Analysis)
LDA(Linear Discriminant Analysis)
MDS(Classical Multidimensional Scaling)
2,非線性降維:
Isomap(Isometric Mapping)
LLE(Locally Linear Embedding)
LE(Laplacian Eigenmaps)
t-SNE(t-Distributed Stochastic Neighbor Embedding)
大家可能對線性降維中的一些方法比較熟悉了,但是對非線性降維並不了解,非線性降維中用到的方法大多屬於 流形學習 范疇,本文主要通過聊聊怎麼使用其中的 t-SNE 來入門下 流形學習 。
我們的少部分人知道t-SNE演算法已經成為了 Scikit-learn 的功能模塊,主要用於可視化和理解高維數據。在此文中,將學習其基本演算法核心思想,並結合些例子演示如何使用 Scikit-learn 來調用 t-SNE 。
1)t-SNE是什麼?
t-SNE字面上的理解是t分布與SNE結合,所以問題變成了SNE是什麼,為何要和t分布結合。
SNE: 即stochastic neighbor embedding,由Hinton於2002年提出的可視化演算法:在高維空間相似的數據點,映射到低維空間距離也是相似的。
t-SNE: 2008年Maaten 和Hinton結合t分布改進了SNE,解決了SNE棘手的問題之一:擁擠問題,即不同類別邊緣不清晰,當然t-SNE還有其他缺點,如大數派拍據可視化有點吃力。
2)首先使用Iris dataset可視化說明t-SNE與PCA的線性與非線性可視化:
如下圖所示:類別只有三類的情況下,我們看到t-SNE和PCA都可以較好的分類並進行可視化。
我們注意到PCA在sklearn使用decomposition模塊,而t-SNE使用manifold模塊,那manifold模塊(翻譯成流形學習)的功能是什麼呢,首先得了解什麼是流形學習:
流形學習為拓撲學與機器學習的結合,可以用來對高維數據降維,如果將維度降到2維或3維,我們就能將原始數據可視化,從而對數據的分布有直觀的了解,發現一些可能租前存在的規律。
流形弊羨清學習的前提假設,即某些高維數據,實際是一種低維的流形結構嵌入在高維空間中。流形學習的目的是將其映射回低維空間中,揭示其本質。如下圖所示:右圖為左圖的降維後的展示,是不是更直觀,更「流形」。(圖片來源知乎)
Manifold learning is an approach to non-linear dimensionality rection。傳統的線性降維(PCA,LDA)會經常學不到重要的非線性數據特徵,也即官網所說: it learns the high-dimensional structure of the data from the data itself, without the use of predetermined classifications,主要流行演算法如下圖所示:
3)當維度較高時,且數據較稀缺的時候我們比較下PCA和t-SNE的可視化效果
我們使用sklearn關於20newsgroups,如官網介紹:
The 20 newsgroups dataset comprises around 18000 newsgroups posts on 20 topics split in two subsets: one for training (or development) and the other one for testing (or for performance evaluation).
我們可以通過設置參數subset調用對應的訓練或測試數據或者全部數據
subset='train'
subset='test'
subset='all'
理解所使用的實驗數據,我們發現數據非常稀缺,稀缺度為0.42%
通過help(TSNE)我們發現其往往會根據稀缺程度來決定選擇PCA還是truncatedSVD先降維至50維。由上可知,數據非常稀缺,擇TruncatedSVD先降維至50維,我們發現t-SNE可視化效果要明顯好於PCA。
參考:
從SNE到t-SNE再到LargeVis
http://bindog.github.io/blog/2016/06/04/from-sne-to-tsne-to-largevis?utm_source=tuicool&utm_medium=referral
http://nbviewer.jupyter.org/urls/gist.githubusercontent.com/AlexanderFabisch/1a0c648de22eff4a2a3e/raw//t-SNE.ipynb
⑶ 線性判別分析(LDA)
線性判別分析(Linear Discriminant Analysis,簡稱LDA)是一種經典的有監督數據降維方法。LDA的主要思想是將一個高維空間中的數據投影到一個較低維的空間中,且投影後要保證各個類別的類內方差小而類間均值差別大,這意味著同一類的高維數皮念據投影到低維空間後相同類別的聚在一起,而不同類別之間相距較遠。如下圖將二維數據投影到一維直線上:
上圖提供了兩種方式,哪一種投影方式更好呢?從圖上可以直觀的看出右邊的比左邊的投影後分類的效果好,因此右邊的投影方式是一種更好地降維方式。
上圖直觀的給出了LDA分類的主要思想,下圖通過數學公式來推導如何得到這個最佳的投影方式。
為了方便解釋LDA的原理,我們以二分類為仔沒例。
假設現有數據集 D = {(x 1 , y 1 ), (x 1 , y 1 ), ... ,(x m , y m )},其中任意樣本x i 為n維向量。定義N j 為第j類樣本的個數,X j 為第j類樣本的集合,而μ j 為第j類樣本的均值向量,Σ𝑗(𝑗=0,1)為第j類樣本的"方差"。
因此,原始均值μ j 和投影後的均值μ' j 的表達式為分別為:
而"方差"則為:
根據上面LDA主要思想的描述我們的目標就是要投影後最大化類間均值差同時最小化類內方差大小。因此目標函數如下:
上式中,分子表示不同類別均值之差,分母表示不同類別方差之和,因此我們的目標就是最大化J(w)即可。
其中,對於分母:
對於分子:
對J(w)的求解過程如下:
輸入:數據集 D = {(x 1 , y 1 ), (x 1 , y 1 ), ... ,(x m , y m )},任意樣本x i 為n維向量,y i ∈{C1, C2, ... , Ck},共k個類別。現在要將其降維到d維;
輸出:燃戚困降維後的數據集D'。
參考:
線性判別分析LDA原理總結
史上最好的LDA(線性判別分析)教程
⑷ 降維演算法之LDA(線性判別降維演算法)--有監督
LDA在模式識別領域( 比如人臉識別,艦艇識別等圖形圖像識別領域 )中有非常廣泛的應用,因此我們有必要了解下它的演算法原理。
不同於PCA方差最大化理論, LDA演算法的思想是將數據投影到低維空間之後,使得同一類數據盡可能的緊湊,不同類的數據盡可能的分散 。因此,LDA演算法是一種有監督的機器學習演算法。同時,LDA有如下兩個假設:(1)原始數據根據樣本均值進行分類。(2)不同類的數據擁吵衡態有相同的協方差矩陣。當然,在實際情況中,不可能滿足以上兩個假設。但是 當數據主要是由均值來區分的時候,LDA一般都可以取得很好的效果 。
(1)計算類內散度矩陣
(2)計算類間散度矩陣
(3)計算矩陣
(4)對矩陣 進行特徵分解,計算最大的d個最大的特徵值對應的特徵向量組成W。
(5)計算投影後的數據點
以上就是使用LDA進行降維的演算法流程。實際上LDA除了可以用於降維以外,還可以用於分類。 一個常見的LDA分類基本思想是假設各個類別的樣本數據符合高斯分布 , 這樣利用LDA進行投影後,可以利用極大似然估計計算各個累唄投影數據的均值和方差,進而得到該類別高斯分布的概率密度函數 。當一個新的樣本到來後,我們可以將它投影,然後將投影後的樣本特徵分別帶入各個類別的高斯分布概率密度函數,計算它屬於這個類別的概率,最大的概率對應的類別即為預測類別。LDA應用於分類現在似乎也不是那麼流行。
class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)
參數:
(1)solver: str類型,默認值為"svd",
svd:使用奇異值分解求解,不用計算協方差矩陣,適用於特徵數量很大的情形,無法使用參數收縮(shrinkage)。
lsqr:最小平方QR分解,可以結合shrinkage使用。
eigen:特徵值分解,可以結合shrinkage使用。
(2)shrinkage: str or float類型,默認值為None
是否使用參數收縮
None:不使用參數收縮
auto:str,使用Ledoit-Wolf lemma
浮點數:自定義收縮比例。
(3)components:int類型,需要保留的特徵個數,小於等於n-1
屬性:
(1)covariances_:每個類的協方差矩陣,shape = [n_features, n_features]
(2)means_:類均值,shape = [n_features, n_feateures]
(3)priors_:歸一升源化的先驗概率。
(4)rotations_:LDA分析得到的主軸,shape = [n_features, n_component]
(5)scalings_:數組列表,每個高斯分布的方差σ
特點:
降維之後的維數最多為類別數-1。所以當數據維度很高,但是類別數少的時候,演算法並不適用 。LDA演算法既可以用來降維,又可以用來分類。但是目前來說,主要還是用於降維。在我們 進行圖像攔雀識別相關的數據分析時,LDA是一個有力的工具 。
優點:
(1) LDA在樣本分類信息依賴均值而不是方差的時候,比PCA之類的演算法較優 。
(2)在降維過程中可以使用類別的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類別先驗知識。
缺點:
(1)LDA不適合非高斯分布樣本進行降維,PCA也存在這個問題。
(2)LDA降維最多降到類別數K-1的維數,如果我們降維的維度大於k-1,則不能使用LDA。 當然目前有一些LDA的進化版演算法可以繞過這個問題 。
(3) LDA在樣本分類信息依賴方差而不是均值的時候,降維效果不好 。
(4)LDA可能過度擬合數據。
二者都有 降維 的作用。
1.左 邊是PCA,屬於無監督方法 ,當數據沒有標簽時可以用它。 右邊是LDA,屬於監督學習方法 。考慮了數據的分類信息,這樣數據在低維空間上就可以分類了,減少了很多的運算量。
2. PCA主要是從特徵的協方差角度考慮,追求的是在降維之後能夠最大化保持數據的內在信息 。它不考慮分類信息,因此降低維度後,信息損失降到最低,但分類上可能會變得更加困難。 LDA追求的是降維後的數據點盡可能容易被區分 。降維後的樣本數據在新的維度空間有最大的類間距離和最小的類內方差,數據在低維空間有最佳的可分離性。
3. PCA降維後的維度數目是和數據維度相關的 ,原始數據是n維,那麼PCA後維度為1、2~n維。 LDA後的維度數目是和類別的個數相關的 ,原始數據是n維,一共有C個類別,那麼LDA後維度為1、2~C-1維。
4. PCA投影的坐標系都是正交的 。 LDA關注分類能力,不保證投影到的坐標系是正交的 。
⑸ 降維是什麼意思
意思如下:
維,在幾何學上指空間獨立而互相正交的方位數,通常的空間有三維,平面或曲面有二維,直線或曲線只有一維。
在商業領域,企業的競爭力可以體現在若干個維度的累加上,這些維度包括核心技術、成本優勢、管理優勢、人才優勢、地域優勢等多個方面。
降維就是把競爭對手拉入到一個更低維度的競爭模式中,讓對手因為失去原有的競爭力而無所適從。
降維方法
降維方法分為線性和非線性降維,非線性降維又分為基於核函數和基於特徵值的方法。
1、線性降維方法:PCA 、ICA LDA、LFA、LPP(LE的線性表示)
2、非線性降維方法:
(1)基於核函數的非線性降維方法:KPCA 、KICA、KDA
(2)基於特徵值的非線性降維方法(流型學習):ISOMAP、LLE、LE、LPP、LTSA、MVU
方法介紹
1、LLE(Locally Linear Embedding)演算法(局部線性嵌入):
每一個數據點都可以由其近鄰點的線性加權組合構造得到。
演算法的主要步驟分為三步:
(1)尋找每個樣本點的k個近鄰點(k是一個預先給定的值);
(2)由每個樣本點的近鄰點計算出該樣本點的局部重建權值矩陣;
(3)由該樣本點的局部重建權值矩陣和其近鄰點計算出該樣本點的輸出值,定義一個誤差函數。
⑹ 三種常用降維方法的思想總結
LDA降維和PCA的不同是LDA是有監督的降維,其原理是將特徵映射到低維上,原始數據的類別也能清晰的反應在低維的數據上,也就是低維的數據也可以用來判別分類。
我們先看看二維的情況,我們希望找到一個向量,使得數據點映射到這個向量上後,兩個類間的距離盡可能,兩個類內的樣本的距離盡可能小。這樣就得到了一個目標函數,分子是投影後兩個類間均值的差的平方,我們希望這個值盡可能大,分母是投影後的類的散列值的和,是少除以樣本數量的方差,進一步化簡分子得到投影向量的轉置乘以投影前的類均值差向量的外積再乘以投影向量,分母是投影向量的轉置乘以投影前的類間散列矩陣的和再乘以投影向量,此時我們需要求使得目標函數最小的投影向量,由於投影向量擴大或縮小多少倍,目標函數值不變,那麼我們可以讓分母的模長為1,此時可以使用拉格朗日乘子法,最後求得:當類間散列矩陣的和存在逆矩陣時,投影向量就是類間散列矩陣的和的逆矩陣和投影前的類均值差向量的外積的特徵向量。進一步的,我們化簡等式左邊得到類間散列矩陣的逆矩陣乘以投影前類間均值向量的差乘以一個常數,那麼由於投影向量可以放縮常數倍不影響結果,我們約掉兩邊的常數,得到投影向量等於投影前類均值向量的差左乘散列矩陣的逆矩陣,這就是fisher提出的判別分析
PCA是將原始樣本投影到低維的空間上,使得樣本的絕大部分信息得以保留,並且特徵的維度降低使得模型不易過擬合。思想是:對於原始空間中的m維向量而言,找到k個投影向量使得這m維向量投影到這k個投影向量上的方差最大,保留原始的樣本信息最多,我們首先可以看看找第一個向量,使得在這個方向上的投影方差最大。步驟如下:
1.在投影之前,我們對數據做中心化處理,使得原始數據均值為0
2.計算中心化後的樣本的協方差矩陣,這是個m*m維的矩陣,m表示原始特徵的數目。第i行第j列的元素表示數據中第i列和第j列的協方差
3.計算協方差矩陣的特徵值和特徵向量,特徵向量是單位向量,模長為1,
4.選擇帶有最大特徵值的k個特徵向量
5.計算k個最大特徵值對應的k個特徵,對於每一個特徵,都是用原數據矩陣(n行m列)乘以對應的特徵向量(m行1列,m是原始變數的數目):因此最後的特徵有n行一列,表示每個樣本一個特徵值
對數據進行中心化和歸一化,然後將其投影到某個向量上,計算這一維上的數據點的方差,經過化簡就是投影向量的轉置乘以原始數據的協方差矩陣再乘以投影向量,前提是這個投影向量是單位向量,然後我們令這個方差λ最大,得到最大方差時對應的那個投影向量就是第一個主成分,那麼這個向量如何求解呢?因為這個投影向量是單位向量,那麼等式兩邊左乘以投影向量,得到了λu=Σu,則說明這個投影向量u的方向其實就是這個協方差矩陣的特徵向量,那麼最大方差λ對應的就是Σ的最大特徵值對應的特徵向量的方向,就是第一主成分的方向,第二大特徵值對應的特徵向量就是第二主成分的方向
數據的中心化並不是必要的,但是卻方便了表示和計算,PCA是計算樣本協方差矩陣的,因此中心化或者中心化並不改變特徵向量的方向或者特徵值的大小,因此即使不中心化,PCA一樣的起作用,然而如果你中心化數據了,那麼樣本的協方差矩陣的數學表示就會得以簡化,如果你的數據點就是你的數據矩陣的列,那麼協方差矩陣就表示為xx',多麼簡便啊!技術上,PCA是包括數據中心化這一步的,但是那隻是為了計算協方差矩陣,然後對協方差矩陣做特徵值分解,得到各個特徵值和特徵向量
數據的歸一化也不是必須的,如果某些變數有很大或者很小的方差,那麼PCA將會傾向於這些大的方差的變數,例如如果你增加了一個變數的方差,也許這個變數對第一個主成分會從很小的影響到起主導性的作用,因此如果你想要PCA獨立於這樣的變化,歸一化可以做到,當然,如果你的變數在那個規模上很重要,那麼你可以不歸一化,歸一化在PCA中是很重要的,因為PCA是一個方差最大化的實驗,它就是投影你的原始數據到方差最大化的方向上
(1)如果原始的特徵是高度相關的,PCA的結果是不穩定的;
(2)新的特徵是原始特徵的線性組合,所以缺乏解釋性。
(3)原始數據不一定要是多元高斯分布的,除非你使用這個技術來預測性的建模去計算置信區間
矩陣乘法的作用是線性變換,對一個向量乘以一個矩陣,可以使得這個向量發生伸縮、切變和旋轉。我們都知道對稱矩陣的特徵向量是相互正交的,給定一個對稱矩陣M,可以找到一些這樣的正交向量v,使得Mv=λv,即這個矩陣M對向量做了拉伸變換,λ是拉伸的倍數。那麼對於普通的矩陣呢,才能讓一個原來就是相互垂直的網格平面(orthogonal grid), 線性變換成另外一個網格平面同樣垂直呢?
對於一個正交矩陣,其對應的變換叫做正交變換,這個變換的作用是不改變向量的尺寸和向量間的夾角。正交變換中的旋轉變換只是將變換向量用另一組正交基表示,在這個過程中並沒有對向量做拉伸,也不改變向量的空間位置,只是將原坐標系旋轉得到新的坐標系,那麼這個旋轉矩陣怎麼求呢?對於二維空間中的某個向量而言,其經過旋轉變換的結果就是從用一組坐標系表示到用另外一組坐標系表示,新的坐標系下的坐標各個分量相當於是原坐標系下的坐標的各個分量在新的坐標系的兩個正交基下的投影,或者是相當於將原來的二維向量經過旋轉到了新的坐標,因此相當於對向量左乘一個旋轉矩陣,求出這個矩陣就是旋轉變換的矩陣。剛剛說正交變換不改變向量的空間位置是絕對的,但是坐標是相對的,從原來的坐標系的基向量位置看這個二維向量,到從新的坐標系下看這個向量的坐標是變化的
矩陣乘以一個向量的結果仍是同維數的一個向量。因此,矩陣乘法對應了一個變換,把一個向量變成同維數的另一個向量。
對特定的向量,經過一種方陣變換,經過該變換後,向量的方向不變(或只是反向),而只是進行伸縮變化(伸縮值可以是負值,相當於向量的方向反向)?這就是相當於特徵向量的定義
特徵向量的幾何含義是:特徵向量通過方陣A變換只進行伸縮,而保持特徵向量的方向不變。特徵值表示的是這個特徵到底有多重要,類似於權重,而特徵向量在幾何上就是一個點,從原點到該點的方向表示向量的方向。
一個變換(或者說矩陣)的特徵向量就是這樣一種向量,它經過這種特定的變換後保持方向不變,只是進行長度上的伸縮而已。特徵值分解則是對旋轉和縮放兩種效應的歸並。因為特徵值分解中的A為方陣,顯然是不存在投影效應的。或者說,我們找到了一組基(特徵向量們),在這組基下,矩陣的作用效果僅僅是縮放。即矩陣A將一個向量從x這組基的空間旋轉到x這組基的空間上,並在每個方向進行了縮放,由於前後兩組基都是x,即沒有進行旋轉和投影。
詳細分析特徵值分解的過程:首先由於特徵向量是正交的,特徵向量組成的矩陣是正交方陣,兩邊同時右乘以這個方陣的逆矩陣,可以得到矩陣A的表達式為A=UΛU',兩邊同時右乘一個向量,相當於對這個向量左乘矩陣A,對向量做旋轉或拉伸的變換。這個變換的過程分為三個映射:第一個是將向量x進行了旋轉,它將x用新的坐標系來表示;第二個變換是拉伸變化,對x的每一維分量都進行了特徵值大小的拉伸或縮小變換;第三個是對x做第一個變換的逆變換,因為是第一個矩陣的逆矩陣,也是旋轉變換。在第二個拉伸變換中,可以看出,如果矩陣A不是滿秩的,即有的特徵值為0,那麼這里相當於將x映射到了m維空間的子空間(m是矩陣A的維數m*m),此時矩陣A是一個正交投影矩陣,它將m維向量x映射到了它的列空間。如果A是二維的,那麼可以在二維平面上可以找到一個矩形,使得這個矩形經過A變換後還是矩形
在特徵值分解中,矩陣A要求是方陣,那麼對於一個任意的矩陣m*n,能否找到一組正交基使得經過它變換後還是正交基?這就是SVD的精髓所在
A=UΣU',我們來分析矩陣A的作用: 首先是旋轉 ,U的列向量是一組標准正交基,V也是,這表示我們找到了兩組基。A的作用是將一個向量從V這組正交基向量空間旋轉到U這組正交基向量空間; 其次是縮放 ,當V對向量x做了旋轉以後,相當於把向量x旋轉使其用V這組正交基表示坐標,然後Σ對向量x的每個分量做了縮放,縮放的程度就是Σ的主對角線上的元素,是奇異值; 最後是投影 ,如果U的維數小於V的維數,那麼這個過程還包含了投影
現在的目的是找一組正交基,使得經過A矩陣變換後仍然是一組正交基,假設已經找到這樣一組正交基,那麼對這組正交基經過A變換,如何使其仍然是一組正交基呢?只要使得原來的正交基是A'A的特徵向量即可,|AVi|就是A'A的特徵值的開方,也就是奇異值,然後我們求AVi的單位向量Ui,這些Ui也都是正交的,那麼我們就找到了兩組正交基使得從V這組正交基變換到U這組正交基,V稱作右奇異向量,U稱作左奇異向量,AVi的模是奇異值,我們對V1,...,Vk進行擴充Vk+1,..,Vn(Vk+1,..,Vn是Ax=0的零空間)使得V1,...,Vn是n維空間中的一組正交基,對U1,...,Uk進行擴充Uk+1,...,Um,使得U1,..,Um是m維空間中的一組正交基,這個k值是矩陣A的秩,當A是滿秩時,分解後的矩陣相乘等於A,k越接近於n,則分解後的矩陣相乘結果越接近於A
對矩陣A的映射過程分析:如果在n維空間中找到一個超矩形,使其都落在A'A的特徵向量的方向上,那麼經過A變換後的形狀仍為超矩形。Vi是A'A的特徵向量,Ui是AA'的特徵向量,也是AVi的單位向量,σ是A'A的特徵值的開方,根據這個公式可以計算出矩陣A的奇異值分解矩陣
SVD是將一個相互垂直的網格變換到另外一個相互垂直的網格,按照上面的對於U,V的定位,可以實現用矩陣A將一個向量變換的過程,首先將向量x寫成用V這組正交基表示的形式,然後用矩陣A左乘向量x,並帶入AVi=σiUi,最後可以得到A的分解式,不是矩陣分解式,而是向量分解式,可以看出,如果有的奇異值很小甚至為0,那麼本來有n項相加,就最後只有奇異值不為0的項相加了,假如有k項相加,那麼k越接近於n最後A分解的結果越接近於A
(1)可以用來減少元素的存儲
(2)可以用來降噪:去掉奇異值小的項,奇異值小的我們認為是含有樣本重要信息很少,都是雜訊,因此就把這些信息少的給去掉了
(3)數據分析:比如說我們有一些樣本點用於建模,我們通過SVD將數據裡面的奇異值小的都去掉了,最後得到了分解後的數據,用來做分析,更加准確
我們知道PCA裡面,我們對變數進行降維實際上就相當於對數據矩陣Am*n右乘一個矩陣Pn*r,就得到了Am*r,表示每個樣本的特徵向量只有r維的,和這個矩陣P代表了r個列向量是數據矩陣A的協方差矩陣n*n的最大的r的特徵值對應r個特徵向量,都是n維的。和SVD相比,將SVD的表達式兩邊同時右乘一個Vn*r,這樣等式右邊就Vr*n和Vn*r相乘是單位向量,因為Vn*r是A'A的r個特徵向量,是前r個不為0的特徵值對應的特徵向量,且由於A'A是對稱的,那麼各個特徵向量之間是正交的,這樣就得到了剛剛PCA推導出來的公式
同理,對數據矩陣Am*n左乘一個矩陣Pr*m,就得到了Ar*n,表示每個特徵對應的樣本只有r個,矩陣P代表了r個m維向量,每個向量是讓每個特徵對應的樣本向量所要投影的方向向量。和SVD相比,將SVD兩邊同時左乘以一個矩陣Ur*m,就得到了Ar*n,即在行方向上進行了降維,等式右邊是Ur*m和Um*r相乘為單位向量,因為Um*r是AA'的特徵向量,是AA'的前r個不為0的特徵值對應的特徵向量,是m維的,由於AA'是對稱矩陣,那麼各個特徵向量之間是正交的,這樣就得到了剛剛PCA推導出來的公式
可以看出:
--PCA幾乎可以說是對SVD的一個包裝,如果我們實現了SVD,那也就實現了PCA了
--而且更好的地方是,有了SVD,我們就可以得到兩個方向的PCA,如果我們對A』A進行特徵值的分解,只能得到一個方向的PCA。
⑺ 數據降維是什麼意思_數據降維的方法有哪些
數據降維是將數據進行降維處理的意思。
降維,通過單幅圖像數據的高維化,將單幅圖像轉化為高維空間中的數據集合,對其進行非線性降維。尋求其高維數據流形本徵結構的一維表示向量,將其作為圖像數據的特徵表達向量。降維處理是將高維數據化為低維度迅派數據的操作。一般來說,化學過程大都是一個多變數的變化過程,一般的化學數據也都是多變數數據。
(7)線性降維的典型分析方法是擴展閱讀:
數據降維運用:
通過單幅圖像數據的高維化,將單幅圖像轉化為高維空間中的數據集合,對其進行非線性降維,尋求其高維數據流形本徵結構的一維表示向量,將畝禪賀其作為圖像數據的特徵表達向量。從而將高維圖像識別問題轉化為特徵表達向量的識別問題,大大降低了計算的復雜程度,減少了冗餘信息所造成的識別誤差,提高了識別的精度。
通過指紋圖像的實例說明,將非線性降維方法(如LaplacianEigenmap方法)應用於圖像數據識別問題,在實際中是可行的,在計算上是簡單的,可大大改善常用方法(如K-近鄰方法)的效能,獲得更好的識別效果。此外,該方襲基法對於圖像數據是否配準是不敏感的,可對不同大小的圖像進行識別,這大大簡化了識別的過程。
⑻ 降維的方法主要有
在分析高維數據時,降維(Dimensionality rection,DR)方法是我們不可或缺的好幫手。
作為數據去噪簡化的一種方法,它對處理大多數現代生物數據很有幫助。在這些數據集中,經常存在著為單個樣本同時收集數百甚至數百萬個測量值的情況。
由於「維度災難」(curse of dimensionality)的存在,很多統計方法難以應用到高維數據上。雖然收集到的數據點很多,但是它們會散布在一個龐大的、幾乎不可能進行徹底探索的高維空間中。
通過降低數據的維度,你可以把這個復雜棘手的問題變得簡單輕松。除去噪音但保存了所關注信息的低維度數據,對理解其隱含的結構和模式很有幫助。原始的高維度數據通常包含了許多無關或冗餘變數的觀測值。降維可以被看作是一種潛在特徵提取的方法。它也經常用於數據壓縮、數據探索以及數據可視化。
雖然在標準的數據分析流程中已經開發並實現了許多降維方法,但它們很容易被誤用,並且其結果在實踐中也常被誤解。
本文為從業者提供了一套有用的指南,指導其如何正確進行降維,解釋其輸出並傳達結果。
技巧1:選擇一個合適的方法
當你想從現有的降維方法中選擇一種進行分析時,可用的降維方法的數量似乎令人生畏。事實上,你不必拘泥於一種方法;但是,你應該意識到哪些方法適合你當前的工作。
降維方法的選擇取決於輸入數據的性質。比如說,對於連續數據、分類數據、計數數據、距離數據,它們會需要用到不同的降維方法。你也應該用你的直覺和相關的領域知識來考慮收集到的數據。通常情況下,觀測可以充分捕獲臨近(或類似)數據點之間的小規模關系,但並不能捕獲遠距離觀測之間的長期相互作用。對數據的性質和解析度的考慮是十分重要的,因為降維方法可以還原數據的整體或局部結構。一般來說,線性方法如主成分分析(Principal Component Analysis, PCA)、對應分析(Correspondence Analysis, CA)、多重對應分析(Multiple Correspondence Analysis, MCA)、經典多維尺度分析(classical multidimensional scaling, cMDS)也被稱為主坐標分析(Principal Coordinate Analysis, PCoA) 等方法,常用於保留數據的整體結構;而非線性方法,如核主成分分析(Kernel Principal Component Analysis, Kernel PCA)、非度量多維尺度分析(Nonmetric Multidimensional Scaling, NMDS)、等度量映射(Isomap)、擴散映射(Diffusion Maps)、以及一些包括t分布隨機嵌入(t-Distributed Stochastic Neighbor Embedding, t-SNE)在內的鄰近嵌入技術,更適合於表達數據局部的相互作用關系。NE技術不會保留數據點之間的長期相互作用關系,其可視化報告中的非臨近觀測組的排列並沒有參考價值。因此,NE的圖表不應該被用於數據的大規模結構的推測
⑼ 用sklearn進行降維的七種方法
在實際的應用中,有時候我們會遇到數據的維度太少,我們需要新生成新的維度,可以用我們之前的分享( 如何自動化進行特徵工程 );有時候維度太多,這時候我們就需要降維了。降維的方法有許多,我們這里介紹了sklearn中介紹的7種,供大家學習和收藏。
主成分分析(PCA)用於將多維的數據集分解為一組具有最大方差的連續正交分量。在sklearn這個包中,PCA是一個transformer對象,使用fit方法可以選擇前n個主成分,並且用於投射到新的數據中。
PCA有兩種實現方式,一種是特徵值分解去實現,一種是奇異值分解去實現。特徵值分解是一個提取矩陣特徵很不錯的方法,但是它只是對方陣而言的,如果不使用SVD,PCA只會尋找每個特徵的中心,但並不會對數據進行縮放(scaled)。使用參數whiten=True ,可以將數據投射到奇異空間中,並且將每個組分縮放到方差為1,這個對於後續分析中,假設每個特徵是isotropy 是很有幫助的,例如SVM和Kmeans聚類。
PCA不僅僅是對高維數據進行降維,更重要的是經過降維去除了雜訊,發現了數據中的模式。PCA把原先的n個特徵用數目更少的m個特徵取代,新特徵是舊特徵的線性組合,這些線性組合最大化樣本方差,盡量使新的m個特徵互不相關。
SVD是一種矩陣分解法,把一個大矩陣分解成易於處理的形式,這種形式可能是兩個或多個矩陣的乘積。
參數
例子2:獲取每個主成分與特徵的關系
PCA雖然很有用,但是需要將數據全部都存入內存,因此當當要分解的數據集太大,會導致內存很大。這時候,增量主成分分析(IPCA)通常用作主成分分析(PCA)的替代,可以通過部分計算的方式,獲得跟PCA一樣的結果。
IPCA使用與輸入數據樣本數無關的內存量為輸入數據建立低秩近似。它仍然依賴於輸入數據功能,但更改批量大小可以控制內存使用量。
該函數,增加了一個batch_size的參數,用來控制批次,其餘都一樣,至此不再贅述。
實例
對於大型矩陣的分解,我們往往會想到用SVD演算法。然而當矩陣的維數與奇異值個數k上升到一定程度時,SVD分解法往往因為內存溢出而失敗。因此,Randomized SVD演算法,相比於SVD,它更能適應大型矩陣分解的要求,且速度更快。
此外,在某些場景下,我們期望丟掉某些lower sigular values,來達到減少噪音,保留盡可能多的方差,從而達到更好的預測效果。比如人臉的識別,如果是64X64的像素,那麼整個維度有4096個。我們利用這個方法,可以保留重要的維度,從而利於後續的分析。
使用 svd_solver='randomized' 可以實現隨機化的SVD,來去掉部分的奇異矩陣。
主成分分析(Principal Components Analysis, PCA)適用於數據的線性降維。而核主成分分析(Kernel PCA,KPCA)可實現數據的非線性降維,用於處理線性不可分的數據集。kernel的選擇有 {'linear', 'poly', 'rbf', 'sigmoid', 'cosine', 'precomputed'},默認是'linear'。
詳細說明見官方說明,與普通的PCA差不多。
SparsePCA 期望找到一組可以最優地重構數據的稀疏主成分。稀疏性的大小由參數alpha給出的L1懲罰系數來控制。Mini-batch sparse PCA是sparsePCA的變種,提高了速度,但是降低了精度。
主成分分析(PCA)的缺點是,該方法提取的成分是一種密集表達式,即用原始變數的線性組合表示時,它們的系數是非零的。這可能會使解釋模型變得困難。在許多情況下,真實的基礎分量可以更自然地想像為稀疏向量;例如,在人臉識別中,主成分會只包含部分的圖像,映射到人臉的某些部分。稀疏主成分產生了一種更簡潔的、可解釋的表示,清楚地強調是哪些原始特徵導致了樣本之間的差異。
通過調節alpha來調整懲罰度,alpha越大,越導致許多系數為0。
TruncatedSVD是普通SVD的一個變種,只計算用戶指定的前K個奇異值。TSVD通常用於語義分析中,是LSA的其中的一部分,可以解決一詞多義和一義多詞的問題。
LSA潛在語義分析的目的,就是要找出詞(terms)在文檔和查詢中真正的含義,也就是潛在語義,從而解決上節所描述的問題。具體說來就是對一個大型的文檔集合使用一個合理的維度建模,並將詞和文檔都表示到該空間,比如有2000個文檔,包含7000個索引詞,LSA使用一個維度為100的向量空間將文檔和詞表示到該空間,進而在該空間進行信息檢索。而將文檔表示到此空間的過程就是SVD奇異值分解和降維的過程。降維是LSA分析中最重要的一步,通過降維,去除了文檔中的「噪音」,也就是無關信息(比如詞的誤用或不相關的詞偶爾出現在一起),語義結構逐漸呈現。相比傳統向量空間,潛在語義空間的維度更小,語義關系更明確。
使用例子如下:
用事先預定義好的字典來對矩陣進行稀疏化編碼,達到降維和簡化的目的。就像人類的所有語言都是由單片語成一樣,因此使用已知的詞典可以減少維度;其次,稀疏化可以減少計算的成本,讓後續的計算更快。
這個對象沒有fit的方法,transformation方法會將數據表示為盡可能少的字典原子的線性組合。可以用transform_method來控制初始化參數,有以下幾種:
使用的函數為sklearn.decomposition.DictionaryLearning,會找到一個可以將fitted data足夠好稀疏化的字典。
將數據表示為一個overcomplete的字典這個過程,同大腦處理數據的過程類似。這個方法在圖像補丁的字典學習已被證明在諸如圖像完成、修復和去噪以及監督識別任務的圖像處理任務中給出良好的結果。
使用函數為sklearn.decomposition.MiniBatchDictionaryLearning,是一種快速的,但是精確度降低的版本,適應於大數據集合。
默認情況下,MiniBatchDictionaryLearning將數據分成小批量,並通過在指定次數的迭代中循環使用小批量,以在線方式進行優化。但是,目前它沒有退出迭代的停止條件。也可以用partial_fit來實現小批次的fit。
從變數中提取共性因子。
因子分析要求原有變數間具有較強的相關性,否則,因子分析無法提取變數間的共性特徵,如果相關系數小於0.3,則變數間的共線性較小,不適合因子分析;因子分析得到因子和原變數的關系,因此能夠對因子進行解釋。
因子分析可以產生與 PCA 相似的特徵(載荷矩陣的列)。不過,不能對這些特徵做出任何一般性的說明(例如他們是否正交)。
使用的函數為sklearn.decomposition.FactorAnalysis。
使用的函數為sklearn.decomposition.FastICA,ICA可以提取出一系列的主成分,彼此最大的獨立。因此,ICA一般不用於降維,而用於區分疊加信號。ICA不考慮noise,為了使模型正確,必須使用whitening,可以使用whiten這個參數。
ICA 通常用於分離混合信號(稱為盲源分離的問題),也可以作為一種非線性降維方法,可以找到具有一些稀疏性的特徵。
主成分分析假設源信號間彼此非相關,獨立成分分析假設源信號間彼此獨立。
主成分分析認為主元之間彼此正交,樣本呈高斯分布;獨立成分分析則不要求樣本呈高斯分布。
非負矩陣分解,顧名思義就是,將非負的大矩陣分解成兩個非負的小矩陣。在數據矩陣不包含負值的情況下,應用NMF而不是PCA或其變體。
NMF可以產生可以代表數據的主成分,從而可以來解釋整個模型。
參數init,可以用來選擇初始化的方法,不同的方法對結果會有不同的表現。
在PCA處理中,假使將特徵降維為600個,那麼降維後的每個人臉都包含了600個特徵(所以我們看到降維後的人臉有種「伏地魔」的感覺 ,這是因為降維處理相當於刪去了部分細節特徵,導致一部分信息丟失,在圖片中最直觀的體現就是變模糊)。而在NMF的處理中,這1000個特徵相當於是被分離了。相當於,一張人臉是由鼻子、耳朵等這些獨立的特徵疊加出來的。
LDA是文檔主題生成模型,對離散數據集(如文本語料庫)的集合的生成概率模型。它也是一個主題模型,用於從文檔集合中發現抽象主題。LDA是一種非監督機器學習技術,可以用來識別大規模文檔集(document collection)或語料庫(corpus)中潛藏的主題信息。
sklearn.decomposition.LatentDirichletAllocation是用於進行LDA的函數。
1、 https://www.jianshu.com/p/1adef2d6dd88
2、 https://www.jianshu.com/p/e574e91070ad
3、 https://scikit-learn.org/stable/moles/decomposition.html#decompositions
4、 https://shankarmsy.github.io/posts/pca-sklearn.html
5、 https://mp.weixin.qq.com/s/Tl9ssjmGdeyNrNuIReo1aw
6、 https://www.cnblogs.com/eczhou/p/5433856.html
7、 https://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html#sphx-glr-auto-examples-applications-plot-face-recognition-py
8、 https://blog.csdn.net/fkyyly/article/details/84665361 LSA(Latent semantic analysis)
9、 https://blog.csdn.net/fjssharpsword/article/details/74964127
10、 https://www.jianshu.com/p/e90900a3d03a
⑽ LDA和PCA降維總結
線性判別分析(Linear Discriminant Analysis,LDA)是一種經典的降維方法。和主成分分析PCA不考慮樣本類別輸出的無監督降維技術不同,LDA是一種監督學習的降維技術,數據集的每個樣本有類別輸出。
LDA分類思想簡單總結如下:
如果用一句話概括LDA思想,即「投影後類內方差最小,類間方差最大」。
假設有紅、藍兩類數據,這些數據特徵均為二維,如下圖所示。我們的目標是將這些數據投影到一維,讓每一類相近的數據的投影點盡可能接近,不同類別數據盡可能遠,即圖中紅色和藍色數據中心之間的距離盡可能大。
左圖和右圖是兩種不同的投影方式。
左圖思路:讓不同類別的平均點距離最遠的投影方式。
右圖思路:讓同類別的數據挨得最近的投影方式。
從上圖直觀看出,右圖紅色數據和藍色數據在各自的區域來說相對集中,根據數據分布直方圖也可看出,所以右圖的投影效果好於左圖,左圖中間直方圖部分有明顯交集。
以上例子是基於數據是二維的,分類後的投影是一條直線。如果原始數據是多維的,則投影後的分類面是一低維的超平面。
輸入:數據集 ,其中樣本 是n維向量, ,降維後的目標維度 。定義
為第 類樣本個數;
為第 類樣本的集合;
為第 類樣本的均值向量;
為第 類樣本的協方差矩陣。
其中
假設投影直線是向量 ,對任意樣本 ,它在直線 上的投影為 ,兩個類別的中心點 , 在直線 的投影分別為 、 。
LDA的目標是讓兩類別的數據中心間的距離 盡量大,與此同時,希望同類樣本投影點的協方差 、 盡量小,最小化 。
定義
類內散度矩陣
類間散度矩陣
據上分析,優化目標為
根據廣義瑞利商的性質,矩陣 的最大特徵值為 的最大值,矩陣 的最大特徵值對應的特徵向量即為 。
LDA演算法降維流程如下:
輸入:數據集 ,其中樣本 是n維向量, ,降維後的目標維度 。
輸出:降維後的數據集 。
步驟:
PCA可解決訓練數據中存在數據特徵過多或特徵累贅的問題。核心思想是將m維特徵映射到n維(n < m),這n維形成主元,是重構出來最能代表原始數據的正交特徵。
假設數據集是m個n維, 。如果 ,需要降維到 ,現在想找到某一維度方向代表這兩個維度的數據。下圖有 兩個向量方向,但是哪個向量才是我們所想要的,可以更好代表原始數據集的呢?
從圖可看出, 比 好,為什麼呢?有以下兩個主要評價指標:
如果我們需要降維的目標維數是其他任意維,則:
下面以基於最小投影距離為評價指標推理:
假設數據集是m個n維, ,且數據進行了中心化。經過投影變換得到新坐標為 ,其中 是標准正交基,即 , 。
經過降維後,新坐標為 ,其中 是降維後的目標維數。樣本點 在新坐標系下的投影為 ,其中 是 在低維坐標系裡第 j 維的坐標。
如果用 去恢復 ,則得到的恢復數據為 ,其中 為標准正交基組成的矩陣。
考慮到整個樣本集,樣本點到這個超平面的距離足夠近,目標變為最小化 。對此式進行推理,可得:
在推導過程中,分別用到了 ,矩陣轉置公式 , , 以及矩陣的跡,最後兩步是將代數和轉為矩陣形式。
由於 的每一個向量 是標准正交基, 是數據集的協方差矩陣, 是一個常量。最小化 又可等價於
利用拉格朗日函數可得到
對 求導,可得 ,也即 。 是 個特徵向量組成的矩陣, 為 的特徵值。 即為我們想要的矩陣。
對於原始數據,只需要 ,就可把原始數據集降維到最小投影距離的 維數據集。
基於最大投影方差的推導,這里就不再贅述,有興趣的同仁可自行查閱資料。
輸入: 維樣本集 ,目標降維的維數 。
輸出:降維後的新樣本集 。
主要步驟如下:
降維的必要性 :
降維的目的 :
應用PCA演算法前提是假設存在一個線性超平面,進而投影。那如果數據不是線性的呢?該怎麼辦?這時候就需要KPCA,數據集從 維映射到線性可分的高維 ,然後再從 維降維到一個低維度 。
KPCA用到了核函數思想,使用了核函數的主成分分析一般稱為核主成分分析(Kernelized PCA, 簡稱KPCA)。
假設高維空間數據由 維空間的數據通過映射 產生。
維空間的特徵分解為:
其映射為
通過在高維空間進行協方差矩陣的特徵值分解,然後用和PCA一樣的方法進行降維。由於KPCA需要核函數的運算,因此它的計算量要比PCA大很多。