第1章:降維簡介:
什麼是降維?
在統計學、機器學習和信息論中,降維是將n維降為k維的過程,其中k 數據可視化: 一維數據: 在這裡,我們經常把維度稱為特徵。例如,我們用一個一維數組開始繪製數軸上的值。 二維數據: 現在,我們有一個二維數組,並開始在彼此正交的X和Y軸上繪製數據。 三維數據: 現在,我們將使用3D數組,並在X,Y和Z軸上進行繪製。 我們可以看到,隨著維度的增加,對我們而言,數據的可視化變得越來越困難。 n維數據: 對於N- d數據,我們需要N個維度,無法再對其進行可視化。因此,為了可視化3D以上的任何數據,我們將使用降維技術將其降為2維或3維。 降維的本質: 在高維數據的微觀層次上分析每一個維度是不可能的。我們可能需要幾天或幾個月的時間來進行有意義的分析,這些分析需要大量的時間、金錢和人力。訓練一個高維的數據會給我們帶來如下問題: 降維的組成部分: 降維有兩個主要的組成部分,我們將在這裡詳細討論 1)特徵選擇: 大多數情況下,這些特徵與我們的問題無關。例如,我們正在訓練一個預測人身高的機器學習模型,我們擁有特徵(體重,膚色,痣,婚姻狀況,性別)的數據。我們可以看到膚色、痣和婚姻狀況等特徵與人的身高沒有關係。因此,我們需要找到一種解決方案,以找到對我們的任務最有用的特徵。我們可以通過以下方式實現: 特徵選擇涉及到尋找原始數據的子集,使它們的信息損失最小。它有以下三種策略: 2)特徵投影: 特徵投影又稱特徵提取,是將高維空間中的數據轉換為低維空間中的數據。數據轉換可以是線性的,也可以是非線性的。 對於線性變換,我們應用主成分分析(PCA)和線性判別分析(LDA);對於非線性變換,我們應用T-SNE。
第2章:主成分分析
1、PCA介紹
PCA主要用作探索性數據分析(EDA)中的工具和用於建立預測模型的工具。它通常用於可視化群體之間的遺傳距離和相關性。PCA可以通過數據協方差(或相關)矩陣的特徵值分解或數據矩陣的奇異值分解來完成。
2、PCA的工作方法:
為了更好地理解PCA的原理,讓我們使用2D數據。
- 首先我們對數據進行歸一化處理,使平均值移動到原點,所有數據都在一個單位正方形中。
- 現在我們將試著用一條線來擬合數據。為此,我們將嘗試用一條隨機的線。現在我們將旋轉這條直線,直到它最適合數據為止。
最終,我們得到了下面的擬合(高度擬合),它解釋了特徵的最大方差。
PCA如何找到最佳擬合線的呢?
讓我們從一個點開始。
為了確定直線與數據的匹配程度,PCA將數據投射到它上。
i)可以測量從數據到直線的距離,並試圖找到一條最小化這些距離的直線。
ii)或者可以試著找到一條直線,使投影點到原點的距離最大化。
數學直覺:
為了理解這種技術背後的數學原理,讓我們回到我們的單數據點概念。
將數據投影到線上之後,我們將得到一個直角三角形。根據畢達哥拉斯定理,我們得到A²=B²+C²。
我們可以看到B和C彼此成反比。這意味著如果B變大,則c必須變小,反之亦然。
因此PCA既可以最小化到直線的距離,也可以最大化從投影點到原點的距離。
從投影點到原點的最大距離更容易計算。因此,PCA會找到最佳擬合線,以使從投影點到原點的距離平方的總和最大。
注意:這裡我們採用距離的平方,以便負值不會抵消正值。
現在我們得到了最佳擬合線y = mx + c。這稱為PC1(主成分1)。假設比例為4:1,這意味著我們在X軸上移動4個單位,在Y軸上移動1個單位,這說明數據大部分分佈在X軸上。
根據畢達哥拉斯定理,a²=b²+c²=>a²=4²+1²=> sqrt(17)=> 4.12,但是數據是按比例縮放的,因此我們將每一邊除以4.12,以獲得單位向量。即
F1 = 4 / 4.12 = 0.97
F2 = 1 / 4.12 = 0.242
我們剛剛計算的單位向量稱為特徵向量或PC1,特徵的比例(0.97:0.242)稱為loading scores。
SS(PC1的距離)= PC1的特徵值。
sqrt(PC1的特徵值)= PC1的奇異值。
現在我們對其他特徵做同樣的事情來得到主成分。為了投影數據,現在我們將旋轉軸,使PC1與x軸平行(水平)。
我們可以使用在PCA中計算的特徵值來計算方差。
假設我們得到方差:PC1 = 0.83和PC2 = 0.17
現在,如果要將數據從2D轉換為1D,我們選擇feature1作為最終的1D,因為它覆蓋了83%。
這就是主成分分析的工作原理,它根據主成分的方差估計需要消除的特徵,從而進行降維。
3、優點和缺點:
優點 :
- 它刪除了相關特徵。
- 提高了模型效率。
- 減少過度擬合。
- 改善可視化效果。
缺點:
- PCA是一種線性算法,對於多項式或其他複雜函數來說效果不佳。我們可以找到一些如何使用核PCA來處理此類數據的方法。
- 在PCA之後,如果我們不選擇正確的維數來消除,我們可能會丟失很多信息。
- 由於原始特徵轉換為不像原始特徵那樣可讀的主成分,因此可解釋性較低。
- 它保留全局形狀而不是局部形狀。
4、通過python代碼段在MNIST數據集上進行PCA:
可以從kaggle 下載data(train.csv)(https://www.kaggle.com/c/digit-recognizer/data)
作為預處理步驟,我們對數據進行標準化處理,以使平均值移至原點,並且所有數據均位於單位正方形中。
PCA有兩種應用方式,一種是尋找特徵向量,另一種是使用sklearn實現。在大多數情況下,這兩種實現都會得到類似的結果。
方法1:
我們將得到協方差矩陣,該協方差矩陣用於求特徵值和特徵向量。
在將數據轉換為二維之後,我們將使用這兩個特徵來實現數據的可視化。
方法:2
我們將使用sklearn的PCA實現。
讓我們看看每個特徵解釋的方差百分比。
如果我想保留80%的數據信息,那麼我可以將維度減少到110。
第3章:線性判別分析(LDA):
1、簡介:
LDA是器學習和統計、模式識別中預處理步驟中最常用的降維技術。 此算法的目標是將數據集投影到具有類別可分的低維空間,以避免過度擬合併降低機器計算量。
2、LDA的工作方式:
PCA和LDA都是線性約簡技術,但與PCA不同的是,LDA側重於最大化兩個組的可分性。
LDA使用特徵來創建一個新軸,並嘗試將數據投射到一個新軸上,以最大限度地分離兩個類。這就是為什麼LDA是一種監督學習算法,因為它利用目標值來尋找新的軸。
PCA試圖找到方差最大的成分,而LDA則試圖找到新的軸
i)最大化類的可分離性
ii)最小化類之間的方差。
通過最小化方差,我們可以很好地分離各個組的聚類。 與最大化組的平均值一樣重要。
LDA根據最大化下列公式的準則找到新的座標軸
2個類以上的LDA:
在這種情況下,如果數據有2個以上的組,LDA會找出整個數據的平均值和各個組之間的中心,它試圖最大化從中心平均值到各個組平均值的距離。為了更好地理解,請看以下3個類的數據。
我們可以找到一個能將這三組分開的平面。
算法:
- 計算數據集中不同類別的d維平均向量。
- 計算散點矩陣(類間和類內散點矩陣)。
- 計算散點矩陣的特徵向量(e1,e2,…,ed)和相應的特徵值(λ1,λ2,…,λd)。
- 通過減少特徵值對特徵向量進行排序,並選擇特徵值最大的k個特徵向量以形成ad×k維矩陣W(其中每列代表一個特徵向量)。
- 使用此d×k特徵向量矩陣將樣本轉換到新的子空間上。Y = X×W(其中X是代表n個樣本的x維矩陣,y是新子空間中變換後的n×k維樣本)。
3、LDA的擴展
當分佈的平均值是共享的(具有高方差的組)時,線性判別分析會失敗,因為LDA不可能找到使兩個類線性分離的新軸。當數據不是線性可分的時候,LDA也會失敗。在這種情況下,我們可以使用非線性判別分析。
- QDA:每個類都使用自己的方差估計值(如果有多個輸入變量,則為協方差)。
- FDA:使用輸入的非線性組合(例如樣條曲線)。
- RDA:將正則化引入方差(實際上是協方差)的估計中,以緩和不同變量對LDA的影響。
4、在IRIS數據集上LDA的Python Sklearn實現
讓我們使用IRIS數據集
像PCA一樣,LDA也可以使用sklearn實現。使用LDA,我們已將數據從4維減少到2維。
為了瞭解PCA和LDA工作的區別,讓我們看看下面的圖。PCA試圖使方差最大化,而LDA則試圖使三個類別的可分離性最大化。
在PCA中,他們的數據有一些重疊,很難找到一條線把兩組分開。LDA可以幫助我們將這三個組分開,因為他們的數據重疊較少。
第4章:T-SNE
1、T-SNE簡介:
T-SNE是Laurens van der Maaten和Geoffrey Hinton(深度學習之父)開發的一種經常用於可視化的機器學習算法。它是一種非線性降維技術,非常適合在二維或三維的低維空間中嵌入高維數據進行可視化。它以二維或三維點對每個高維對象進行建模,使得相似的對象由附近的點建模,而不相似的對象則由遠處的點建模。
T-SNE被廣泛應用於可視化領域,包括計算機安全研究、音樂分析、癌症研究、生物信息學和生物醫學信號處理。它經常被用於可視化高級表示的人工神經網絡學習。
2、工作方式
在進行數學直覺之前,讓我們學習T-SNE涉及的一些術語。
鄰域:點的鄰域定義為幾何上相互接近的點的聚類。
嵌入:嵌入是通過創建xi¹將高維空間中的點投影到低維空間中的過程。
隨機:
首先,T-SNE以這樣的方式在幾對高維對象上構建概率分佈,即相似的對象被拾取的可能性很高,而相異的點被拾取的可能性非常小。這就是為什麼將T-SNE稱為隨機(概率)的原因。
T-SNE構造了多對高維對象的概率分佈,使得相似的對象被選中的概率很高,而不相似的點被選中的概率極小。這就是為什麼T-SNE被稱為隨機(概率)。
T-SNE定義了在低維圖中的點上的相似概率分佈,相對於圖中點的位置,它使兩個分佈之間的Kullback-Leibler散度(KL散度)最小化。請注意,雖然原始算法使用對象之間的歐氏距離作為其相似度度量的基礎,但這應該根據需要進行更改。
T-SNE的成本函數是
3、處理擁擠問題:
擁擠是指我們在較小的空間中嘗試項目點的情況,由於空間不足,所有內容都變得混亂。
T分佈:
通過使用高斯分佈,所有低相似度值都落在曲線的尾部區域,我們可以看到尾部的空間很小,不像曲線兩端的T分佈那麼高。最終,低相似度值與不同聚類的其他低相似度值混合在一起。為了克服這個問題,傳統的SNE算法被T-SNE代替,其中T表示T分佈。
4、優點和缺點:
優點:
- 與PCA不同,T-SNE是一種非線性約簡技術,這意味著它可以很好地處理任何多項式或非線性數據。
- T-SNE能夠保留局部和全局結構,而PCA則嘗試將高維投影到低維,以解釋數據中的大部分方差。因此,它只關心全局結構。
- T-SNE被廣泛用於可視化任務。
缺點:
- T-SNE具有二次時間和空間複雜度。
- 在處理大型機器學習數據集時,不建議使用T-SNE。
- T-SNE是一種非參數映射方法,這意味著它沒有將給定點映射到低維空間的顯式函數。T-SNE根據該點的鄰域將該點嵌入到低維中。因此,當一個測試數據點出現時,由於之前沒有出現,我們需要再次訓練整個T-SNE算法進行嵌入,由於它的二次時間複雜度,這種方法很少被使用。
Barnes-Hut SNE (BHTSNE)
這項技術是在2014年引入的,與T-SNE非常相似,但是有一些細微的變化。該算法利用了天文學家常用的Barnes-Hut算法進行N body模擬來近似對應點間的力。
與標準T-SNE(O(N log N))相比,這些算法帶來了實質性的計算優勢,遠優於二次時間複雜度。可以使用sklearn manifold.TSNE庫輕鬆地實現,方法是使用method ='barnes-hut'屬性。
5、通過python代碼段在MNIST數據集上進行T-SNE:
我們已經看到了PCA在MNIST上的工作方式。現在,讓我們嘗試使用相同的數據集進行T-SNE。與PCA不同,T-SNE具有兩個參數:Perplexity和n_iter。我們將嘗試使用這些參數的不同值來擬合數據。
使用perplexity = 30,n_iter = 1000
使用perplexity =50,n_iter = 1000
使用perplexity = 2,n_iter = 1000
我們可以看到perplexity降低後,數據會與所有聚類混合。因此,選擇正確的參數值始終很重要。
使用perplexity = 100,n_iter = 1000
perplexity= 100在我們的數據上運行良好。但是請注意,我們只在5000個數據點上嘗試了T-SNE,因為它的時間複雜性,這會花費大量時間。
第5章:數據歸一化:
通過數據歸一化,我們可以將數據從無限範圍轉換為範圍的有限集。
降維之前需要數據歸一化:
假設有兩個特徵,其中一個特徵的值範圍是1到10(市場每小時的購買者數量),而另一個特徵的值範圍是50到1000(市場的訪問者數量)。可能每小時的訪客數是>>每小時的買家數。
因為像PCA這樣的技術是基於方差最大化的,如果我們在使用PCA尋找特徵向量之前不進行歸一化,他們會更關注大值維度,特徵向量不會捕捉其他維度中的信息。
因此,特徵歸一化用於擺脫公斤,釐米,毫米,升等刻度。在歸一化後,我們將所有數據繪製在一個單位正方形內。
數據歸一化技術:
數據可以通過多種方式進行轉換。一些最常用的技術是:
- Linear Scaling或者min-max Scaler:
X =數據點
Xmin =最小數據點
Xmax =最大數據點
當我們知道數據的近似上界和下界很少或沒有離群值值時,我們將使用這種技術。當我們知道我們的數據在整個範圍內大致均勻分佈時也使用此技術。縮放後,所有值將位於[0,1]範圍內。
2.Feature Clipping
當數據包含極端異常值時,這些技術將某個值之上或之下的特徵值限制為一個固定值。例如,將高度超過120cm的所有值裁剪為正好120cm。這意味著我們將這些值壓縮到一個固定的範圍。
3.Log Scaling:
當數據的分佈遵循冪律或是帕雷託分佈時,即一個值有很多點而其他值很少時,使用它。
4. Z分數或標準化:
標準化後,均值將轉換為0,標準差將轉換為1。當離群值很少時(不是極端到需要剪裁),它是很有用的。
最後
處理成千上萬的特徵是任何數據科學家必備的技能。我們每天生成的數據量是空前的,我們需要找到不同的方法來弄清楚如何使用它們。
"閱讀更多 不靠譜的貓 的文章