1. PCA缺點
在上篇介紹PCA的文章中有一句話是:
PCA是一種能夠極大提升無監督特征學習速度的數據降維算法
這里很明顯的說明,PCA適用於非監督學習的數據降維,顯而易見,在進行數據降維的時候,我們並沒有考慮數據的類別信息,僅僅是針對數據的特征來進行學習.當已知數據的類別時,在某些情況下,PCA的效果將會非常差.例如:
如上圖所示,如果使用PCA進行降維,將會映射到Y軸上(接近Y軸,實際的基為[-0.00277403 -0.99999615]),此時數據將變得不可分.如下圖所示:
很明顯,此時兩類數據基本上重疊在一起,無法線性分割.PCA的核心思想是將數據投影到方差最大化的方向,但是方差最大的方向不一定使數據線性可分,PCA之后再使用分類算法將無法獲得較好的效果.
2. 線性判別式分析
Fisher’s Linear Discriminant(FLD)和Linear Discriminant Analysis(LDA)是統計學上的經典分析方法,兩種不同之處在於LDA比FLD多了一些關於變量分布和協方差的假設.為統一,不再區分FLD和LDA,統稱LDA. LDA既可以用來線性分類,也可以用來單純的對數據進行降維.目前在醫學的患者疾病分級,經濟學的市場定位,產品管理,市場研究,人臉識別以及機器學習等領域有廣泛應用.相較於FLD,LDA假設:
1. 樣本數據服從正態分布
2. 各類的協方差相等
雖然這些在實際中不一定滿足,但是LDA被證明是非常有效的降維方法,其線性模型對於噪音的魯棒性效果比較好,不容易過擬合。
2.1 二分類
首先從比較簡單的二分類開始,假設存在一組樣本數據, 並且分為兩個類別:
xz={x(1),x(2),⋯,x(m)}∈{0,1}
如果使用PCA進行降維的話,此時不需要考類別z,但是我們其實是不知道那些被拋棄的不必要特征對分類產生的影響,所以會出現上文中的缺點,丟棄的X軸方向剛好是區分兩個類別的方向.
我們的目的是讓樣本數據能夠很好的分成y所代表的的兩類,所以,我們只需要將數據映射為一維的,使得數據在一維上能夠很好的分開,相同類別的數據聚集在一起,不同類別的數據相互分開即可,此時我們即將數據降低到一維了.那怎么實現這個效果呢?
首先假設這個一維向量為w,映射后的數據:
y(i)=wTx(i)i∈[1,m]
方便起見,假設數據特征數為2,我們的目標就是找到一條直線,樣本數據映射其上后,能夠最優的分割樣本點.如下圖:
顯而易見,右側的效果更好一點,如何尋找右側的這條直線,直觀上來說,最優分割時,投影后兩類樣本的均值點相聚最遠,假設
Ni
表示對應類別
zi
的樣本數,則原始數據的均值:
μi=1Ni∑x∈zix
投影之后的均值:
μ^i=1Ni∑x∈ziwT⋅x=wT⋅ui
投影后均值點距離盡量遠,表示如下:
J(w)=|μ^1−μ^2|=|wT⋅(μ1−μ2)|(2.1)
如果只考慮均值點距離,上述公式2.1越大,越接近最佳效果,事實並非如此,如下圖:
投影到x1軸均值更大,但是分類效果並不好,投影到x2軸則能夠更好的分類數據,所以,除了考慮類間均值距離以外,還需要使類內數據盡量的聚集在一起,對於同一個類別內的數據而言,明顯x2軸數據比x1軸數據更集中,而判斷數據散列程度的度量為方差,考慮投影后類內數據的方差,如下:
S^i=∑x∈zi(wTx−u^i)2=∑x∈zi(wTx−wTμi)2=∑x∈zi(wTx−wTμi)⋅(wTx−wTμi)T=∑x∈ziwT(x−μi)⋅(x−μi)Tw
這里注意
(wTx−wTμi)
是常數,所以:
(wTx−wTμi)2=(wTx−wTμi)⋅(wTx−wTμi)T=(wTx−wTμi)T⋅(wTx−wTμi)
為了稍后的計算,我們選擇前者.定義:
Si=∑x∈zi(x−μi)⋅(x−μi)T
所以:
S^i=wTSiw
我們的目標是:
不同類別的樣本點越分開越好,同類的越聚集越好,也就是均值點間距離越大越好,散列值越小越好. 定量表示如下:
J(w)=|μ^1−μ^2|2S^1+S^2
此時,目標函數值越大,越滿足要求,以上公式就定量代表了我們的目標. 帶入參數簡化上式:
|μ^1−μ^2|2S^1+S^2hypothesisSBSW=wT(μ1−μ2)(μ1−μ2)Tw=wT(S1+S2)w=(μ1−μ2)(μ1−μ2)T=S1+S2
所以:
J(w)=wTSBwwTSWw
這里有個核心點是:
上述公式,無論w擴大多少倍數,都不會影響最終的結果。所以極值點,w的值並不唯一,此時需要固定w的取值,使:
wTSWw=1
這不會影響極值點的取值。使用拉格朗日乘子法求解帶條件的函數極值:
f(λ,w)∇wf(λ,w)=>=wTSBw+λ(1−wTSWw)=2SBw−2λSWw=0SBw=λSWw
求解上述公式的極大值,需要利用矩陣的微積分。假設
SW
可逆,則:
(S−1WSB)⋅w=λw
易知,w是
S−1WSB
的特征向量。
進一步帶入參數簡化:
SBwλw=(μ1−μ2)(μ1−μ2)Tw=(μ1−μ2)Tw
這里
λw
是一個未知的實數,所以
S−1WSBw=S−1W(μ1−μ2)λw=λw
## 標題 ##
由於w擴大任意倍數都不會影響結果,所以:
w=S−1W(μ1−μ2)
1. 這里假設
SW
可逆,但是當樣本維數較高,而樣本數較少時,這時可能不可逆,為奇異矩陣。此時可以考慮先使用PCA對樣本進行降維,然后再對降維后的數據使用LDA。
2. 求w時,並沒有求
S−1WSB
的特征向量,因為不一定是對稱矩陣,求它的特征向量時不能使用奇異值分解,使用普通方式求解特征值的方式,時間復雜度為
O(n3)
。
2.2 多分類
//todo
參考:
1. https://www.cnblogs.com/engineerLF/p/5393119.html
2. https://www.cnblogs.com/kemaswill/archive/2013/01/27/2879018.html
3. http://blog.csdn.net/zjm750617105/article/details/52104850