首先搞清楚什么叫判別分析?Discriminant Analysis就是根據研究對象的各種特征值判別其類型歸屬問題的一種多變量統計分析方法。
根據判別標准不同,可以分為距離判別、Fisher判別、Bayes判別法等。比如在KNN中用的就是距離判別,當然這里的“距離”又有好幾種:歐氏距離、街區距離、甚至可以用皮爾森相關系數等。朴素貝葉斯分類用的就是Bayes判別法。本文要講的線性判別分析就是用是Fisher判別式。
根據判別函數的形式,可以分為線性判別和非線性判別。
LDA和PCA比較
兩者都是為了在對原始數據降維之后進行分類。PCA是無監督的方式,它沒有分類標簽,降維之后需要采用K-Means或自組織映射網絡等無監督的算法進行分類。LDA是有監督的方式,它先對訓練數據進行降維,然后找出一個線性判別函數。
兩類線性判別分析
給定N個特征為d維的樣例$x^{(i)}\{x_1^{(i)},x_2^{(i)},...,x_d^{(i)}\}$,其中有N1個樣例屬於類別w1,另外N2個樣例屬於類別w2。現在我們要將原始數據降低到只有一維,降維函數(或者叫投影函數)是:$y=w^Tx$,最后我們就依靠每個樣例對應的y值來判別它屬於哪一類。
形象的圖求如下

我們就是要找到這個最佳的w,使得樣例映射到y后最易於區分。
定義每類樣例的均值點:$u_i=\frac{1}{N_i}\sum_{x\in{w_i}}x$
樣例投影到y后有均值點為:$\tilde{u_i}=\frac{1}{N_i}\sum_{x\in{w_i}}{w^Tx}=w^Tu_i$
我們希望投影后兩類樣例中心盡量地分離,即
$|\tilde{u_1}-\tilde{u_2}|=|w^T(u_1-u_2)|$越大越好。
同時我們希望投影之后類內部的方差$\tilde{s_i}^2=\sum_{y\in{w_i}}(y-\tilde{u_i})^2$越小越好。
由於得到我們的目標函數:
$$max\qquad{J(w)}=\frac{|\tilde{u_1}-\tilde{u_2}|^2}{\tilde{s_1}^2+\tilde{s_2}^2}\qquad(1)$$
又是個最優化問題。最終解得
$w=(s_1+s_2)^{-1}(u_1-u_2)$,s1和s2分別中原始樣例的方差。
這就是Fisher在1936年提出的線性判別分析。
如果$y=w^Tx-w^Tu>0$(u是所有樣本的均值),就屬於類別C1,否則就屬於類別C2。
實際上使用線性回歸得到的直線方向就是二值分類中LDA求得的直線方向。
多類線性判別分析
假設有C個類別,降以一維已經不能滿足分類要求了,我們需要k個基向量來做投影,W=[w1|w2|...|wk] 。樣本點在這k維投影后的結果為[y1,y2,...,yk],且有$y_i=w_i^Tx\qquad{y}=W^Tx$。
$S_w=\sum_{i=1}^C{S_{wi}}$
$S_{wi}=\sum_{x\in{w_i}}(x-u_i)(x-u_i)^T$
$S_B=\sum_{i=1}^C{N_i(u_i-u)(u_i-u)^T}$
$u=\frac{1}{N}\sum_{\forall{x}}x=\frac{1}{N}\sum_{x\in{w_i}}N_iu_i$
同樣是求一個類似於(1)式的最優化問題,我們得到
$S_w^{-1}S_Bw_i=\lambda{w_i}$
即wi是矩陣$S_w^{-1}S_B$的特征向量。首先求出$S_w^{-1}S_B$的特征值,然后取其前k個特征向量組成W即可,因為特征值大的對應的特征向量分割性好。另外SB的秩至多為C-1,所以$S_w^{-1}S_B$不為0的特征值至多有C-1個,所以k最大為C-1。
由於$S_w^{-1}S_B$不一定是對稱矩陣,因此k個特征向量不一定正交,這也是與PCA不同的地方。求$S_w^{-1}S_B$的特征向量不能采用奇異值分解的方式,而因該采用更通用的求一般方陣特征向量的方式。特征值的求法有很多,求一個D * D的矩陣的時間復雜度是$O(D^3)$, 也有一些求Top k的方法,比如說冪法,它的時間復雜度是$O(D^2 * k)$。
那降維之后又如何根據y值來判別分類呢?取[y1,y2,...,yk]中最大的那個就是所屬的分類。這么說對於有C個類別的分類問題,我們最多只能分出C-1個類別來?
使用LDA的限制
- LDA至多可生成C-1維子空間
- LDA不適合對非高斯分布的樣本進行降維
- LDA在樣本分類信息依賴方差而不是均值時,效果不好。
- LDA可能過度擬合數據。
