機器學習_學習筆記系列(52):線性判別分析(Linear Discriminant Analysis)
Linear Discriminant Analysis為一種監督是學習的演算法,其可以用來做降維,記計算資料類別的離散程度。而對於LDA的概念,我們可以用下面這張圖來看
在上面這張圖我們可以很清楚看到,我們依特定方向為基準,透過計算兩組資料的平均值和標準差,看兩者資料分布的重疊程度,並找重疊最小的那個組合。而在這邊我們可以想像成是2維空間的資料投影到1維的空間上,然後我們再利用高斯分布統計這些資料的分布情況,看兩組資料的重疊程度。
所以在分類上,可以由上圖很直觀的了解到,我們可以建立兩個高斯分布的方程式,當我們把資料x帶進去兩組方程式後,我們只要比較兩組方程式輸出的值,就可以預測此資料x屬於哪個類別。
Gaussian Function
對於兩個類別的高斯方程式我們可以寫成
其中d為x的特徵數量
如此一來,我們就可利用這兩個方程式來預測。
Projecting Vector
而這裡我們想要更進一步的把整個二維的分布圖投影到一維,所以我們必須找一個二維向量w能夠把我們的資料轉換到一維,而此LDA的最佳化問題,我們可以非常直觀的了解,對於兩群資料的平均我們當然希望離越遠越好,而變異數也是希望越小越好。所以我們的最佳化問題可以寫成
其中
OK到這裡我們已經知道cost function長什麼樣子,接下來我們就可以用微分的方式找到J最大值。而為了方便微分這裡我們對矩陣進行拆解
合併起來為
把w提出來之後接下來我們就可對cost function進行微分
所以
也就是說
看到這裡我們可以看到,若SD為非奇異矩陣,我們可以把他寫成
而因為J(w)為常數,我們可以把這個式子看成是解eigenvalue和eigenvector,如此一來就能求出我們的向量w。
Classification Line
上述我們已經有了兩個類別的Gaussian Function,所以我們可以進一步的求解分類線,而求解的方式也是非常直觀:
而這裡我們可以把他轉換成
也就是說
所以我們可以進一步整理成
而可以發現上面這個等式可以寫成
如此一來我們把點帶進去就可以畫出分割線
Example
接下來我們實際來看這個例子
我們以w=[1,0]和訓練過後的w做比較
我們可以看到經過訓練過後的w,其機率密度分布重疊的部分減少很多。接下來是畫分割線
我們可以看到用LDA我們可以迅速的運用矩陣運算計算出分割線。
Python Sample Code:
Github:
Reference:
[1] Ghojogh, B., & Crowley, M. (2019). Linear and quadratic discriminant analysis: Tutorial. arXiv preprint arXiv:1906.02590.