目錄
在前幾篇的文章中,大管提到了PCA降維,有小夥伴私信說在實際情況中,效果不太好。那大管今天就和大家聊一聊另一種降維的方法線性判別分析 (LDA)。它目前也是機器學習領域中比較經典而且又熱門的一種算法。
還記得在PCA中是怎樣做的嗎?簡單來說,是將數據映射到方差比較大的方向上,最後用數學公式推導出矩陣的前TopN的特徵向量,這裏的方差可以理解爲數據內部的離散程度。而LDA不同於PCA的是它是一種有監督的降維方法。下面舉一個小例子來直觀的說明PCA和LDA的不同降維方法。
例子
如下圖所示爲兩類數據集:
PCA是將數據投影到方差最大的幾個相互正交的方向上,以期待保留最多的樣本信息。樣本的方差越大表示樣本的多樣性越好。x軸和y軸都不是最理想的投影,故上圖中PCA會將數據投影在紅色的軸上。
如下圖所示數據集:
若根據PCA進行降維,將會把數據映射到紅色直線上,這樣做投影確實方差最大,但是這樣做投影之後兩類數據樣本將混合在一起,將不再線性可分,甚至是不可分的。上面的這個數據集如果使用LDA降維,找出的投影方向就是黃色直線所在的方向,這樣的方法在降維之後,可以很大程度上保證了數據的線性可分的。
LDA降維
從上述例子中可以看到,LDA可以用來對數據分類進行處理。爲了說明白LDA的來龍去脈,還是以最簡單的二分類問題爲例。
假設有C1和C2兩個樣本數據集,其均值分別爲:
投影之後的類間距離爲:
將上述兩式合併,求最大間距可以表示爲:
當 ω 方向與(μ1-μ2)一致的時候,該距離達到最大值。從所舉的例子圖中也能看出,我LDA的期望是使得兩個類間的距離最大,類內的距離最小。
由於不同的類別是在同一個數據集中,所以類內距離也可以定義爲不同類的方差之和。故可以定義LDA的目標函數爲:
其中D1和D2分別爲兩個類的類內距離,分別爲:
將D1和D2分別代入,J(ω)可以表示爲:
爲了簡化上述公式,這裏定義類間距離散度SB和類內距離散度SW分別爲:
故可以將式子簡化爲:
下面使用爛大街而有效的方法最大化J(ω),對ω求偏導,並令其爲0,得到:
下面對公式稍作變化,就可以發現一個令人驚訝的結果:
將Sw乘到左邊:
我們居然把目標函數變成了求矩陣的特徵值,而投影的方向就是這個特徵值對應的特徵向量。故對於二分類問題在不考慮投影長度的情況下,我們只要求得樣本的均值和類內方差就可以計算出投影方向。
回顧PCA的過程,是不是和LDA很相似呢,但是其原理卻不一樣,對於無監督學習使用PCA,有監督學習使用LDA。
多內容下載機器學習資料請掃描下方二維碼關注小編公衆號:程序員大管