【机器学习基础】数学推导+纯Python实现机器学习算法27:LDA线性判别分析
Python機器學習算法實現
Author:louwill
Machine Learning Lab
? ? ?
? ? 線性判別分析(Linear Discriminant Analysis,LDA)是一種經典的線性分類方法。注意機器學習中還有一種用于NLP主題模型建模的潛在狄利克雷分布(Latent Dirichlet Allocation)也簡稱為LDA,大家在學習的時候注意區分。不同于上一講談到的PCA降維使用最大化方差的思想,LDA的基本思想是將數據投影到低維空間后,使得同一類數據盡可能接近,不同類數據盡可能疏遠。所以,LDA是一種有監督的線性分類算法。
LDA原理與推導
下圖描述了PCA和LDA直觀上的區別。
我們來看LDA的基本原理推導。給定數據集,其中、、分別表示為第類數據的集合、均值向量和協方差矩陣。假設將上述數據投影到直線上,則兩類樣本的中心投射到直線上的投影分別為和,考慮所有樣本投射情況下,兩類樣本的協方差分別為和。由于直線為一維空間,上述值均為實數。
現在我們的優化目標是使同類樣本的投影點盡可能相近,異類樣本投影點盡可能遠離。要讓同類樣本的投影點盡可能相近,我們可以使同類樣本投影點的協方差盡可能的小,即盡可能小。異類樣本投影點盡可能遠離,可以使得類中心點之間的距離盡可能大,即盡可能大。同時考慮這兩個優化目標的情況下,我們可以定義最大化目標函數:
定義類內散度矩陣:定義類間散度矩陣:
則上述優化目標可改寫為:
上式即為LDA最終要優化的目標。現在問題在于我們要如何求出。這里可以令,則上述優化式可表示為:
?
?
根據條件約束優化求解的拉格朗日乘子法,上式等于:
令
并代入到可得:
考慮到矩陣數值解的穩定性,我們可以對其進行奇異值分解,即:
最后求其逆即可得到。
根據上述推導,我們可以整理LDA完整的算法流程為:
對數據按類別分組
分別計算每組樣本的均值和協方差
計算類間散度矩陣
計算均值差
SVD方法計算類間散度矩陣的逆
根據計算。
計算投影后的數據點
讀者還可以自行考慮將LDA推廣到多分類情況,這里不再展開推導。
LDA基本實現
? ?按照前述LDA算法流程,我們可以給基于numpy來實現一個簡單的LDA模型?;娟P? ? ?鍵點包括計算分組均值與協方差、類間散度矩陣和SVD分解等。具體實現過程如下代? ? ?碼所示:
本文只給出二分類的LDA的推導和基本實現,讀者可自行將其推廣到多分類的情形,這里不做過多展開。sklearn中為LDA算法提供了sklearn.lda.LDA接口可供調用,實際應用時直接調用該接口即可。
參考資料:
周志華 機器學習?
往期精彩:
數學推導+純Python實現機器學習算法19:PCA降維
數學推導+純Python實現機器學習算法18:奇異值分解SVD
數學推導+純Python實現機器學習算法17:XGBoost
數學推導+純Python實現機器學習算法16:Adaboost
數學推導+純Python實現機器學習算法15:GBDT
數學推導+純Python實現機器學習算法14:Ridge嶺回歸
數學推導+純Python實現機器學習算法13:Lasso回歸
數學推導+純Python實現機器學習算法12:貝葉斯網絡
數學推導+純Python實現機器學習算法11:樸素貝葉斯
數學推導+純Python實現機器學習算法10:線性不可分支持向量機
數學推導+純Python實現機器學習算法8-9:線性可分支持向量機和線性支持向量機
數學推導+純Python實現機器學習算法7:神經網絡
數學推導+純Python實現機器學習算法6:感知機
數學推導+純Python實現機器學習算法5:決策樹之CART算法
數學推導+純Python實現機器學習算法4:決策樹之ID3算法
數學推導+純Python實現機器學習算法3:k近鄰
數學推導+純Python實現機器學習算法2:邏輯回歸
數學推導+純Python實現機器學習算法1:線性回歸
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群請掃碼進群:總結
以上是生活随笔為你收集整理的【机器学习基础】数学推导+纯Python实现机器学习算法27:LDA线性判别分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python基础】必知必会的8个Pyt
- 下一篇: KDD CUP 2020之Debiasi