【机器学习】机器学习之线性判别分析(LDA)
目錄
- 一、線性判別分析介紹
- 二、線性判別分析原理
- 1. 類內散度矩陣(within-class scatter matrix)
- 2. 類間散度矩陣(between-class scatter matrix)
- 3. 廣義瑞利商(generalized Rayleigh quotiet)
- 三、sklearn庫實現線性判別分析LDA
- 四、總結
- 五、參考
一、線性判別分析介紹
??線性判別分析(Linear Discriminant Analysis,簡稱 LDALDALDA)是一種經典的線性學習方法,亦稱"Fisher 判別分析"。
??線性判別分析思想:給定訓練樣本集,設法將樣例投影到一條直線上。使得同類樣例的投影點盡可能接近、異類樣例的投影點盡可能遠;在對新樣本進行分類時,將其投影到該直線上,再根據投影點的位置來確定新樣本的類別。
二、線性判別分析原理
??給定數據集 D={(xi,yi)}i=1m,yi∈{0,1}D= \{(\pmb{x_i} , y_i) \}^m_{i=1},y_i\in\{ 0,1\}D={(xi??xi???xi?,yi?)}i=1m?,yi?∈{0,1} ,令XiX_iXi?、μi\pmb{\mu_i}μi??μi???μi?、∑i\pmb{\sum_i}∑i??∑i???∑i? 分別表示 i∈{0,1}i\in\{0,1\}i∈{0,1} 類示例的集合、均值向量、協方差矩陣。若將數據投影到直線 ω\pmb{\omega}ωωω 上,則兩類樣本的中心在直線上的投影分別為 ωTμ0\pmb{\omega^T\mu_0}ωTμ0??ωTμ0???ωTμ0? 和 ωTμ1\pmb{\omega^T\mu_1}ωTμ1??ωTμ1???ωTμ1? ;若將所有樣本點都投影到直線上,則兩類樣本的協方差分別為 ωT∑0ω\pmb{\omega^T\sum_0\omega}ωT∑0?ω?ωT∑0?ω??ωT∑0?ω 和 ωT∑1ω\pmb{\omega^T\sum_1\omega}ωT∑1?ω?ωT∑1?ω??ωT∑1?ω 。由于直線處于一維空間,因此 ωTμ0\pmb{\omega^T\mu_0}ωTμ0??ωTμ0???ωTμ0?、ωTμ1\pmb{\omega^T\mu_1}ωTμ1??ωTμ1???ωTμ1? 、ωT∑0ω\pmb{\omega^T\sum_0\omega}ωT∑0?ω?ωT∑0?ω??ωT∑0?ω 和 ωT∑1ω\pmb{\omega^T\sum_1\omega}ωT∑1?ω?ωT∑1?ω??ωT∑1?ω 均為實數。
??要使得同類樣例的投影點盡可能接近,所以應讓同類樣例投影點的協方差盡可能小,即ωT∑0ω+ωT∑1ω\pmb{{\omega^T\sum_0\omega}+{\omega^T\sum_1\omega}}ωT∑0?ω+ωT∑1?ω?ωT∑0?ω+ωT∑1?ω??ωT∑0?ω+ωT∑1?ω 盡可能小。
??要使得異類樣例的投影點盡可能地遠,則讓類中心之間的距離盡可能大,即 ∣∣ωTμ0?ωTμ1∣∣22||\pmb{\omega^T\mu_0}-\pmb{\omega^T\mu_1||_2^2}∣∣ωTμ0??ωTμ0???ωTμ0??ωTμ1?∣∣22??ωTμ1?∣∣22???ωTμ1?∣∣22? 盡可能大。同時考慮二者,則需要得到的最大化目標為:
J=∣∣ωTμ0?ωTμ1∣∣22ωT∑0ω+ωT∑1ω=ωT(μ0?μ1)(μ0?μ1)TωωT(∑0+∑1)ω\begin{aligned} \pmb{J} &= \frac{||\omega^T\mu_0 - \omega^T\mu_1||_2^2}{{\omega^T\sum_0\omega}+\omega^T\sum_1\omega}\\ &= \frac{\omega^T(\mu_0 - \mu_1)(\mu_0-\mu_1)^T\omega}{\omega^T(\sum_0+\sum_1)\omega}\\ \end{aligned}JJJ?=ωT∑0?ω+ωT∑1?ω∣∣ωTμ0??ωTμ1?∣∣22??=ωT(∑0?+∑1?)ωωT(μ0??μ1?)(μ0??μ1?)Tω??
1. 類內散度矩陣(within-class scatter matrix)
??類內散度矩陣用來判斷同類樣例的投影點之間的距離。
Sw=∑0+∑1=∑x∈X0(x?μ0)(x?μ0)T+∑x∈X1(x?μ1)(x?μ1)T\begin{aligned} S_w &= \sum_0 + \sum_1 \\ &= \sum_{x\in X_0} (x-\mu_0)(x-\mu_0)^T +\sum_{x\in X_1} (x-\mu_1)(x-\mu_1)^T \end{aligned}Sw??=0∑?+1∑?=x∈X0?∑?(x?μ0?)(x?μ0?)T+x∈X1?∑?(x?μ1?)(x?μ1?)T?
2. 類間散度矩陣(between-class scatter matrix)
??類間散度矩陣用來判斷異類樣例的投影點之間的距離。
Sb=(μ0?μ1)(μ0?μ1)TS_b = (\mu_0-\mu_1)(\mu_0-\mu_1)^TSb?=(μ0??μ1?)(μ0??μ1?)T
3. 廣義瑞利商(generalized Rayleigh quotiet)
??廣義瑞利商(generalized Rayleigh quotiet)就是 LDALDALDA欲最大化的目標。
??使用類內散度矩陣和類間散度矩陣將最大化目標改寫為:
J=ωTSbωωTSwω\pmb{J} = \frac{\omega^TS_b\omega}{\omega^TS_w\omega}\\ JJJ=ωTSw?ωωTSb?ω?
??LDALDALDA 可從貝葉斯決策理論的角度來闡釋,并可證明,當兩類數據同先驗、滿足高斯分布且協方差相等時,LDALDALDA可達到最優分類。
三、sklearn庫實現線性判別分析LDA
四、總結
?? LDA算法既可以用來降維,也可以用來分類,但是目前來說,主要還是用于降維,和PCA類似,LDA降維基本也不用調參,只需要指定降維到的維數即可。
五、參考
Python機器學習筆記:線性判別分析(LDA)算法
總結
以上是生活随笔為你收集整理的【机器学习】机器学习之线性判别分析(LDA)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS9 xcode7 You must
- 下一篇: 这些Transfomer问题你都会,你就