机器学习(三十一)——Linear Discriminant Analysis
Linear Discriminant Analysis
在《機器學習(十六)》中,我們已經討論了一個LDA,這里我們來看看另一個LDA。
Linear Discriminant Analysis是Ronald Fisher于1936年提出的方法,因此又叫做Fisher’s linear discriminant。正如之前在《知名數據集》中提到的,Iris flower Data Set也是出自該論文。
之前我們討論的PCA、ICA也好,對樣本數據來言,可以是沒有類別標簽y的。回想我們做回歸時,如果特征太多,那么會產生不相關特征引入、過度擬合等問題。我們可以使用PCA來降維,但PCA沒有將類別標簽考慮進去,屬于無監督的。
比如回到上次提出的文檔中含有“learn”和“study”的問題,使用PCA后,也許可以將這兩個特征合并為一個,降了維度。但假設我們的類別標簽y是判斷這篇文章的topic是不是有關學習方面的。那么這兩個特征對y幾乎沒什么影響,完全可以去除。
再舉一個例子,假設我們對一張100*100像素的圖片做人臉識別,每個像素是一個特征,那么會有10000個特征,而對應的類別標簽y僅僅是0/1值,1代表是人臉。這么多特征不僅訓練復雜,而且不必要特征對結果會帶來不可預知的影響,但我們想得到降維后的一些最佳特征(與y關系最密切的),怎么辦呢?
給定特征為d維的N個樣例x(i){x1(i),x2(i),…,xd(i)}x^{(i)}\{x_1^{(i)},x_2^{(i)},\dots,x_d^{(i)}\}x(i){x1(i)?,x2(i)?,…,xd(i)?},其中有N1N_1N1?個樣例屬于類別w1w_1w1?,另外N2N_2N2?個樣例屬于類別w2w_2w2?。
現在我們覺得原始特征數太多,想將d維特征降到只有一維,而又要保證類別能夠“清晰”地反映在低維數據上,也就是這一維就能決定每個樣例的類別。
我們將這個最佳的向量稱為w(d維),那么樣例x(d維)到w上的投影可以用下式來計算:
y=wTxy=w^Txy=wTx
這里得到的y值不是0/1值,而是x投影到直線上的點到原點的距離。
我們首先看看x是二維的情況,從直觀上來看,右圖比較好,可以很好地將不同類別的樣本點分離。這實際上就是LDA的思想:最大化類間方差與最小化類內方差,即減少分類內部之間的差異,而擴大不同分類之間的差異。
接下來我們從定量的角度來找到這個最佳的w。
首先我們尋找每類樣例的均值(中心點),這里i只有兩個:
μi=1Ni∑x∈ωix\mu_i=\frac{1}{N_i}\sum_{x\in \omega_i}xμi?=Ni?1?x∈ωi?∑?x
由于x到w投影后的樣本點均值為:
μi~=1Ni∑y∈ωiy=1Ni∑y∈ωiwTx=wTμi\tilde{\mu_i}=\frac{1}{N_i}\sum_{y\in \omega_i}y=\frac{1}{N_i}\sum_{y\in \omega_i}w^Tx=w^T\mu_iμi?~?=Ni?1?y∈ωi?∑?y=Ni?1?y∈ωi?∑?wTx=wTμi?
由此可知,投影后的的均值也就是樣本中心點的投影。
什么是最佳的直線(w)呢?我們首先發現,能夠使投影后的兩類樣本中心點盡量分離的直線是好的直線,定量表示就是:
J(w)=∣μ1~?μ2~∣=∣wT(μ1?μ2)∣J(w)=\mid \tilde{\mu_1}-\tilde{\mu_2} \mid=\mid w^T(\mu_1-\mu_2) \midJ(w)=∣μ1?~??μ2?~?∣=∣wT(μ1??μ2?)∣
J(w)越大越好。
但是只考慮J(w)行不行呢?不行,看下圖:
樣本點均勻分布在橢圓里,投影到橫軸x1x_1x1?上時能夠獲得更大的中心點間距J(w),但是由于有重疊,x1x_1x1?不能分離樣本點。投影到縱軸x2x_2x2?上,雖然J(w)較小,但是能夠分離樣本點。因此我們還需要考慮樣本點之間的方差,方差越大,樣本點越難以分離。
我們使用另外一個度量值,稱作散列值(scatter),對投影后的類求散列值,如下:
si~2=∑y∈ωi(y?μi~)2\tilde{s_i}^2=\sum_{y\in \omega_i}(y-\tilde{\mu_i})^2si?~?2=y∈ωi?∑?(y?μi?~?)2
從公式中可以看出,只是少除以樣本數量的方差值,散列值的幾何意義是樣本點的密集程度,值越大,越分散,反之,越集中。
而我們想要的投影后的樣本點的樣子是:不同類別的樣本點越分開越好,同類的越聚集越好,也就是均值差越大越好,散列值越小越好。正好,我們可以使用J(w)和S來度量,最終的度量公式是:
J(w)=∣μ1~?μ2~∣s1~2+s2~2J(w)=\frac{\mid \tilde{\mu_1}-\tilde{\mu_2} \mid}{\tilde{s_1}^2+\tilde{s_2}^2}J(w)=s1?~?2+s2?~?2∣μ1?~??μ2?~?∣?
接下來的事就比較明顯了,我們只需尋找使J(w)最大的w即可。
先把散列值公式展開:
si~2=∑y∈ωi(y?μi~)2=∑x∈ωi(wTx?wTμi)2=∑x∈ωiwT(x?μi)(x?μi)Tw\tilde{s_i}^2=\sum_{y\in \omega_i}(y-\tilde{\mu_i})^2=\sum_{x\in \omega_i}(w^Tx-w^T\mu_i)^2=\sum_{x\in \omega_i}w^T(x-\mu_i)(x-\mu_i)^Twsi?~?2=y∈ωi?∑?(y?μi?~?)2=x∈ωi?∑?(wTx?wTμi?)2=x∈ωi?∑?wT(x?μi?)(x?μi?)Tw
我們定義上式中間部分:
Si=∑x∈ωi(x?μi)(x?μi)TS_i=\sum_{x\in \omega_i}(x-\mu_i)(x-\mu_i)^TSi?=x∈ωi?∑?(x?μi?)(x?μi?)T
這也被稱為散列矩陣(scatter matrices)。
我們繼續定義:
SW=S1+S2S_W=S_1+S_2SW?=S1?+S2?
SWS_WSW?稱為Within-class scatter matrix。
SB=(μ1?μ2)(μ1?μ2)TS_B=(\mu_1-\mu_2)(\mu_1-\mu_2)^TSB?=(μ1??μ2?)(μ1??μ2?)T
SBS_BSB?稱為Between-class scatter matrix。
那么J(w)最終可以表示為:
J(w)=wTSBwwTSWwJ(w)=\frac{w^TS_Bw}{w^TS_Ww}J(w)=wTSW?wwTSB?w?
在我們求導之前,需要對分母進行歸一化,因為不做歸一化的話,w擴大任何倍,公式都成立,我們就無法確定w。因此,我們打算令∥wTSWw∥=1\|w^TS_Ww\|=1∥wTSW?w∥=1,那么加入拉格朗日乘子后,求導:
c(w)=wTSBw?λ(wTSWw?1)?dcdw=2SBw?2λSWw=0?SBw=λSWw?SW?1SBw=λwc(w)=w^TS_Bw-\lambda(w^TS_Ww-1)\Rightarrow \frac{\textze8trgl8bvbqc}{\textze8trgl8bvbqw}=2S_Bw-2\lambda S_Ww=0\\ \Rightarrow S_Bw=\lambda S_Ww\Rightarrow S_W^{-1}S_Bw=\lambda wc(w)=wTSB?w?λ(wTSW?w?1)?dwdc?=2SB?w?2λSW?w=0?SB?w=λSW?w?SW?1?SB?w=λw
可見,w實際上就是矩陣SW?1SBS_W^{-1}S_BSW?1?SB?的特征向量。
因為:
SBw=(μ1?μ2)(μ1?μ2)TwS_Bw=(\mu_1-\mu_2)(\mu_1-\mu_2)^TwSB?w=(μ1??μ2?)(μ1??μ2?)Tw
其中,后面兩項的積是一個常數,記做λw\lambda_wλw?,則:
SW?1SBw=SW?1(μ1?μ2)λw=λwS_W^{-1}S_Bw=S_W^{-1}(\mu_1-\mu_2)\lambda_w=\lambda wSW?1?SB?w=SW?1?(μ1??μ2?)λw?=λw
由于對w擴大縮小任何倍不影響結果,因此可以約去兩邊的未知常數λ,λw\lambda,\lambda_wλ,λw?,得到:
w=SW?1(μ1?μ2)w=S_W^{-1}(\mu_1-\mu_2)w=SW?1?(μ1??μ2?)
至此,我們只需要求出原始樣本的均值和方差就可以求出最佳的方向w。
上述結論雖然來自2維,但對于多維也是成立的。大特征值所對應的特征向量分割性能最好。由于SW?1SBS_W^{-1}S_BSW?1?SB?不一定是對稱陣,因此得到的K個特征向量不一定正交,這也是與PCA不同的地方。
PCA選擇樣本點投影具有最大方差的方向,LDA選擇分類性能最好的方向。
使用LDA的一些限制:
1.LDA至多可生成C-1維子空間。C為類別數。
LDA降維后的維度區間在[1,C-1],與原始特征數n無關,對于二值分類,最多投影到1維。
2.LDA不適合對非高斯分布樣本進行降維。
上圖中紅色區域表示一類樣本,藍色區域表示另一類,由于是2類,所以最多投影到1維上。不管在直線上怎么投影,都難使紅色點和藍色點內部凝聚,類間分離。
3.LDA在樣本分類信息依賴方差而不是均值時,效果不好。
上圖中,樣本點依靠方差信息進行分類,而不是均值信息。LDA不能夠進行有效分類,因為LDA過度依靠均值信息。
對LDA稍加擴展就得到了《圖像處理理論(一)》中的Otsu法。Otsu法實際上是一維離散域的LDA。
此外,對于二值分類問題,最小二乘法和Fisher線性判別分析是一致的。
參考:
https://mp.weixin.qq.com/s/u-6nPrb4r9AS2gtrl5s-FA
LDA(Linear Discriminant Analysis)算法介紹
http://www.cnblogs.com/jerrylead/archive/2011/04/21/2024384.html
線性判別分析(Linear Discriminant Analysis)(一)
http://www.cnblogs.com/jerrylead/archive/2011/04/21/2024389.html
線性判別分析(Linear Discriminant Analysis)(二)
t-SNE
概述
t-SNE(t-distributed stochastic neighbor embedding)是用于降維的一種機器學習算法,是由Laurens van der Maaten和Geoffrey Hinton在08年提出來。此外,t-SNE 是一種非線性降維算法,非常適用于高維數據降維到2維或者3維,進行可視化。
論文:
《Visualizing Data using t-SNE》
以下是幾種常見的降維算法:
1.主成分分析(線性)
2.t-SNE(非參數/非線性)
3.薩蒙映射(非線性)
4.等距映射(非線性)
5.局部線性嵌入(非線性)
6.規范相關分析(非線性)
7.SNE(非線性)
8.最小方差無偏估計(非線性)
9.拉普拉斯特征圖(非線性)
PCA的相關內容參見《機器學習(十四)》。
總結
以上是生活随笔為你收集整理的机器学习(三十一)——Linear Discriminant Analysis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习(二十八)——SOM, Grou
- 下一篇: 数学狂想曲(七)——莱洛三角形