什么是降維?
在統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)和信息論中,降維是將n維降為k維的過程,其中k<n。
數(shù)據(jù)降維
數(shù)據(jù)可視化:
一維數(shù)據(jù):
在這里,我們經(jīng)常把維度稱為特征。例如,我們用一個(gè)一維數(shù)組開始繪制數(shù)軸上的值。
二維數(shù)據(jù):
現(xiàn)在,我們有一個(gè)二維數(shù)組,并開始在彼此正交的X和Y軸上繪制數(shù)據(jù)。
三維數(shù)據(jù):
現(xiàn)在,我們將使用3D數(shù)組,并在X,Y和Z軸上進(jìn)行繪制。
我們可以看到,隨著維度的增加,對我們而言,數(shù)據(jù)的可視化變得越來越困難。
n維數(shù)據(jù):
對于N- d數(shù)據(jù),我們需要N個(gè)維度,無法再對其進(jìn)行可視化。因此,為了可視化3D以上的任何數(shù)據(jù),我們將使用降維技術(shù)將其降為2維或3維。
降維的本質(zhì):
在高維數(shù)據(jù)的微觀層次上分析每一個(gè)維度是不可能的。我們可能需要幾天或幾個(gè)月的時(shí)間來進(jìn)行有意義的分析,這些分析需要大量的時(shí)間、金錢和人力。訓(xùn)練一個(gè)高維的數(shù)據(jù)會給我們帶來如下問題:
降維的組成部分:
降維有兩個(gè)主要的組成部分,我們將在這里詳細(xì)討論
1)特征選擇:
大多數(shù)情況下,這些特征與我們的問題無關(guān)。例如,我們正在訓(xùn)練一個(gè)預(yù)測人身高的機(jī)器學(xué)習(xí)模型,我們擁有特征(體重,膚色,痣,婚姻狀況,性別)的數(shù)據(jù)。我們可以看到膚色、痣和婚姻狀況等特征與人的身高沒有關(guān)系。因此,我們需要找到一種解決方案,以找到對我們的任務(wù)最有用的特征。我們可以通過以下方式實(shí)現(xiàn):
特征選擇涉及到尋找原始數(shù)據(jù)的子集,使它們的信息損失最小。它有以下三種策略:
2)特征投影:
特征投影又稱特征提取,是將高維空間中的數(shù)據(jù)轉(zhuǎn)換為低維空間中的數(shù)據(jù)。數(shù)據(jù)轉(zhuǎn)換可以是線性的,也可以是非線性的。
對于線性變換,我們應(yīng)用主成分分析(PCA)和線性判別分析(LDA);對于非線性變換,我們應(yīng)用T-SNE。
1、PCA介紹
PCA主要用作探索性數(shù)據(jù)分析(EDA)中的工具和用于建立預(yù)測模型的工具。它通常用于可視化群體之間的遺傳距離和相關(guān)性。PCA可以通過數(shù)據(jù)協(xié)方差(或相關(guān))矩陣的特征值分解或數(shù)據(jù)矩陣的奇異值分解來完成。
2、PCA的工作方法:
為了更好地理解PCA的原理,讓我們使用2D數(shù)據(jù)。
最終,我們得到了下面的擬合(高度擬合),它解釋了特征的最大方差。
最佳擬合線
PCA如何找到最佳擬合線的呢?
讓我們從一個(gè)點(diǎn)開始。
為了確定直線與數(shù)據(jù)的匹配程度,PCA將數(shù)據(jù)投射到它上。
i)可以測量從數(shù)據(jù)到直線的距離,并試圖找到一條最小化這些距離的直線。
ii)或者可以試著找到一條直線,使投影點(diǎn)到原點(diǎn)的距離最大化。
數(shù)學(xué)直覺:
為了理解這種技術(shù)背后的數(shù)學(xué)原理,讓我們回到我們的單數(shù)據(jù)點(diǎn)概念。
將數(shù)據(jù)投影到線上之后,我們將得到一個(gè)直角三角形。根據(jù)畢達(dá)哥拉斯定理,我們得到A2=B2+C2。
我們可以看到B和C彼此成反比。這意味著如果B變大,則c必須變小,反之亦然。
因此PCA既可以最小化到直線的距離,也可以最大化從投影點(diǎn)到原點(diǎn)的距離。
從投影點(diǎn)到原點(diǎn)的最大距離更容易計(jì)算。因此,PCA會找到最佳擬合線,以使從投影點(diǎn)到原點(diǎn)的距離平方的總和最大。
距離平方和的最大值
pca的成本函數(shù)
注意:這里我們采用距離的平方,以便負(fù)值不會抵消正值。
現(xiàn)在我們得到了最佳擬合線y = mx + c。這稱為PC1(主成分1)。假設(shè)比例為4:1,這意味著我們在X軸上移動4個(gè)單位,在Y軸上移動1個(gè)單位,這說明數(shù)據(jù)大部分分布在X軸上。
根據(jù)畢達(dá)哥拉斯定理,a2=b2+c2=>a2=42+12=> sqrt(17)=> 4.12,但是數(shù)據(jù)是按比例縮放的,因此我們將每一邊除以4.12,以獲得單位向量。即
F1 = 4 / 4.12 = 0.97
F2 = 1 / 4.12 = 0.242
我們剛剛計(jì)算的單位向量稱為特征向量或PC1,特征的比例(0.97:0.242)稱為loading scores。
SS(PC1的距離)= PC1的特征值。
sqrt(PC1的特征值)= PC1的奇異值。
現(xiàn)在我們對其他特征做同樣的事情來得到主成分。為了投影數(shù)據(jù),現(xiàn)在我們將旋轉(zhuǎn)軸,使PC1與x軸平行(水平)。
旋轉(zhuǎn)軸,使PC1變?yōu)樗?/p>
根據(jù)主成分投影數(shù)據(jù)
我們可以使用在PCA中計(jì)算的特征值來計(jì)算方差。
假設(shè)我們得到方差:PC1 = 0.83和PC2 = 0.17
現(xiàn)在,如果要將數(shù)據(jù)從2D轉(zhuǎn)換為1D,我們選擇feature1作為最終的1D,因?yàn)樗采w了83%。
這就是主成分分析的工作原理,它根據(jù)主成分的方差估計(jì)需要消除的特征,從而進(jìn)行降維。
3、優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn) :
缺點(diǎn):
4、通過python代碼段在MNIST數(shù)據(jù)集上進(jìn)行PCA:
可以從kaggle 下載data(train.csv)(https://www.kaggle.com/c/digit-recognizer/data)
加載mnist數(shù)據(jù)
mnist圖像的維度表示
作為預(yù)處理步驟,我們對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,以使平均值移至原點(diǎn),并且所有數(shù)據(jù)均位于單位正方形中。
PCA有兩種應(yīng)用方式,一種是尋找特征向量,另一種是使用sklearn實(shí)現(xiàn)。在大多數(shù)情況下,這兩種實(shí)現(xiàn)都會得到類似的結(jié)果。
方法1:
我們將得到協(xié)方差矩陣,該協(xié)方差矩陣用于求特征值和特征向量。
在將數(shù)據(jù)轉(zhuǎn)換為二維之后,我們將使用這兩個(gè)特征來實(shí)現(xiàn)數(shù)據(jù)的可視化。
利用特征向量進(jìn)行主成分分析
方法:2
我們將使用sklearn的PCA實(shí)現(xiàn)。
PCA的Sklearn實(shí)現(xiàn)
通過sklearn進(jìn)行主成分分析
讓我們看看每個(gè)特征解釋的方差百分比。
由每個(gè)特征解釋的方差百分比
如果我想保留80%的數(shù)據(jù)信息,那么我可以將維度減少到110。
1、簡介:
LDA是器學(xué)習(xí)和統(tǒng)計(jì)、模式識別中預(yù)處理步驟中最常用的降維技術(shù)。 此算法的目標(biāo)是將數(shù)據(jù)集投影到具有類別可分的低維空間,以避免過度擬合并降低機(jī)器計(jì)算量。
2、LDA的工作方式:
PCA和LDA都是線性約簡技術(shù),但與PCA不同的是,LDA側(cè)重于最大化兩個(gè)組的可分性。
LDA使用特征來創(chuàng)建一個(gè)新軸,并嘗試將數(shù)據(jù)投射到一個(gè)新軸上,以最大限度地分離兩個(gè)類。這就是為什么LDA是一種監(jiān)督學(xué)習(xí)算法,因?yàn)樗媚繕?biāo)值來尋找新的軸。
PCA試圖找到方差最大的成分,而LDA則試圖找到新的軸
i)最大化類的可分離性
ii)最小化類之間的方差。
通過最小化方差,我們可以很好地分離各個(gè)組的聚類。 與最大化組的平均值一樣重要。
LDA根據(jù)最大化下列公式的準(zhǔn)則找到新的坐標(biāo)軸
LDA的成本函數(shù)
2個(gè)類以上的LDA:
在這種情況下,如果數(shù)據(jù)有2個(gè)以上的組,LDA會找出整個(gè)數(shù)據(jù)的平均值和各個(gè)組之間的中心,它試圖最大化從中心平均值到各個(gè)組平均值的距離。為了更好地理解,請看以下3個(gè)類的數(shù)據(jù)。
我們可以找到一個(gè)能將這三組分開的平面。
算法:
3、LDA的擴(kuò)展
當(dāng)分布的平均值是共享的(具有高方差的組)時(shí),線性判別分析會失敗,因?yàn)長DA不可能找到使兩個(gè)類線性分離的新軸。當(dāng)數(shù)據(jù)不是線性可分的時(shí)候,LDA也會失敗。在這種情況下,我們可以使用非線性判別分析。
4、在IRIS數(shù)據(jù)集上LDA的Python Sklearn實(shí)現(xiàn)
讓我們使用IRIS數(shù)據(jù)集
像PCA一樣,LDA也可以使用sklearn實(shí)現(xiàn)。使用LDA,我們已將數(shù)據(jù)從4維減少到2維。
為了了解PCA和LDA工作的區(qū)別,讓我們看看下面的圖。PCA試圖使方差最大化,而LDA則試圖使三個(gè)類別的可分離性最大化。
在PCA中,他們的數(shù)據(jù)有一些重疊,很難找到一條線把兩組分開。LDA可以幫助我們將這三個(gè)組分開,因?yàn)樗麄兊臄?shù)據(jù)重疊較少。
1、T-SNE簡介:
T-SNE是Laurens van der Maaten和Geoffrey Hinton(深度學(xué)習(xí)之父)開發(fā)的一種經(jīng)常用于可視化的機(jī)器學(xué)習(xí)算法。它是一種非線性降維技術(shù),非常適合在二維或三維的低維空間中嵌入高維數(shù)據(jù)進(jìn)行可視化。它以二維或三維點(diǎn)對每個(gè)高維對象進(jìn)行建模,使得相似的對象由附近的點(diǎn)建模,而不相似的對象則由遠(yuǎn)處的點(diǎn)建模。
T-SNE被廣泛應(yīng)用于可視化領(lǐng)域,包括計(jì)算機(jī)安全研究、音樂分析、癌癥研究、生物信息學(xué)和生物醫(yī)學(xué)信號處理。它經(jīng)常被用于可視化高級表示的人工神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)。
2、工作方式
在進(jìn)行數(shù)學(xué)直覺之前,讓我們學(xué)習(xí)T-SNE涉及的一些術(shù)語。
鄰域:點(diǎn)的鄰域定義為幾何上相互接近的點(diǎn)的聚類。
嵌入:嵌入是通過創(chuàng)建xi1將高維空間中的點(diǎn)投影到低維空間中的過程。
隨機(jī):
首先,T-SNE以這樣的方式在幾對高維對象上構(gòu)建概率分布,即相似的對象被拾取的可能性很高,而相異的點(diǎn)被拾取的可能性非常小。這就是為什么將T-SNE稱為隨機(jī)(概率)的原因。
T-SNE構(gòu)造了多對高維對象的概率分布,使得相似的對象被選中的概率很高,而不相似的點(diǎn)被選中的概率極小。這就是為什么T-SNE被稱為隨機(jī)(概率)。
T-SNE定義了在低維圖中的點(diǎn)上的相似概率分布,相對于圖中點(diǎn)的位置,它使兩個(gè)分布之間的Kullback-Leibler散度(KL散度)最小化。請注意,雖然原始算法使用對象之間的歐氏距離作為其相似度度量的基礎(chǔ),但這應(yīng)該根據(jù)需要進(jìn)行更改。
T-SNE的成本函數(shù)是
3、處理擁擠問題:
擁擠是指我們在較小的空間中嘗試項(xiàng)目點(diǎn)的情況,由于空間不足,所有內(nèi)容都變得混亂。
T分布:
高斯分布
通過使用高斯分布,所有低相似度值都落在曲線的尾部區(qū)域,我們可以看到尾部的空間很小,不像曲線兩端的T分布那么高。最終,低相似度值與不同聚類的其他低相似度值混合在一起。為了克服這個(gè)問題,傳統(tǒng)的SNE算法被T-SNE代替,其中T表示T分布。
高斯分布與T分布
4、優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn):
缺點(diǎn):
Barnes-Hut SNE (BHTSNE)
這項(xiàng)技術(shù)是在2014年引入的,與T-SNE非常相似,但是有一些細(xì)微的變化。該算法利用了天文學(xué)家常用的Barnes-Hut算法進(jìn)行N body模擬來近似對應(yīng)點(diǎn)間的力。
與標(biāo)準(zhǔn)T-SNE(O(N log N))相比,這些算法帶來了實(shí)質(zhì)性的計(jì)算優(yōu)勢,遠(yuǎn)優(yōu)于二次時(shí)間復(fù)雜度??梢允褂胹klearn manifold.TSNE庫輕松地實(shí)現(xiàn),方法是使用method ='barnes-hut'屬性。
5、通過python代碼段在MNIST數(shù)據(jù)集上進(jìn)行T-SNE:
我們已經(jīng)看到了PCA在MNIST上的工作方式?,F(xiàn)在,讓我們嘗試使用相同的數(shù)據(jù)集進(jìn)行T-SNE。與PCA不同,T-SNE具有兩個(gè)參數(shù):Perplexity和n_iter。我們將嘗試使用這些參數(shù)的不同值來擬合數(shù)據(jù)。
使用perplexity = 30,n_iter = 1000
使用perplexity =50,n_iter = 1000
使用perplexity = 2,n_iter = 1000
我們可以看到perplexity降低后,數(shù)據(jù)會與所有聚類混合。因此,選擇正確的參數(shù)值始終很重要。
使用perplexity = 100,n_iter = 1000
perplexity= 100在我們的數(shù)據(jù)上運(yùn)行良好。但是請注意,我們只在5000個(gè)數(shù)據(jù)點(diǎn)上嘗試了T-SNE,因?yàn)樗臅r(shí)間復(fù)雜性,這會花費(fèi)大量時(shí)間。
通過數(shù)據(jù)歸一化,我們可以將數(shù)據(jù)從無限范圍轉(zhuǎn)換為范圍的有限集。
降維之前需要數(shù)據(jù)歸一化:
假設(shè)有兩個(gè)特征,其中一個(gè)特征的值范圍是1到10(市場每小時(shí)的購買者數(shù)量),而另一個(gè)特征的值范圍是50到1000(市場的訪問者數(shù)量)??赡苊啃r(shí)的訪客數(shù)是>>每小時(shí)的買家數(shù)。
因?yàn)橄馪CA這樣的技術(shù)是基于方差最大化的,如果我們在使用PCA尋找特征向量之前不進(jìn)行歸一化,他們會更關(guān)注大值維度,特征向量不會捕捉其他維度中的信息。
因此,特征歸一化用于擺脫公斤,厘米,毫米,升等刻度。在歸一化后,我們將所有數(shù)據(jù)繪制在一個(gè)單位正方形內(nèi)。
數(shù)據(jù)歸一化技術(shù):
數(shù)據(jù)可以通過多種方式進(jìn)行轉(zhuǎn)換。一些最常用的技術(shù)是:
X =數(shù)據(jù)點(diǎn)
Xmin =最小數(shù)據(jù)點(diǎn)
Xmax =最大數(shù)據(jù)點(diǎn)
當(dāng)我們知道數(shù)據(jù)的近似上界和下界很少或沒有離群值值時(shí),我們將使用這種技術(shù)。當(dāng)我們知道我們的數(shù)據(jù)在整個(gè)范圍內(nèi)大致均勻分布時(shí)也使用此技術(shù)??s放后,所有值將位于[0,1]范圍內(nèi)。
2.Feature Clipping
當(dāng)數(shù)據(jù)包含極端異常值時(shí),這些技術(shù)將某個(gè)值之上或之下的特征值限制為一個(gè)固定值。例如,將高度超過120cm的所有值裁剪為正好120cm。這意味著我們將這些值壓縮到一個(gè)固定的范圍。
3.Log Scaling:
當(dāng)數(shù)據(jù)的分布遵循冪律或是帕雷托分布時(shí),即一個(gè)值有很多點(diǎn)而其他值很少時(shí),使用它。
4. Z分?jǐn)?shù)或標(biāo)準(zhǔn)化:
標(biāo)準(zhǔn)化后,均值將轉(zhuǎn)換為0,標(biāo)準(zhǔn)差將轉(zhuǎn)換為1。當(dāng)離群值很少時(shí)(不是極端到需要剪裁),它是很有用的。
處理成千上萬的特征是任何數(shù)據(jù)科學(xué)家必備的技能。我們每天生成的數(shù)據(jù)量是空前的,我們需要找到不同的方法來弄清楚如何使用它們。