機器學習技法 之 線性判別分析(Linear Discriminat Analysis)

線性判別分析(Linear Discriminat Analysis)

PCA找尋的投影向量力求找到使得特徵點方差較大(也就是說散的比較開),與PCA所找尋的投影向量不同,LAD所找尋的投影向量具有下面兩種特性:

  1. 映射後不同類數據之間的中心點(均值點)相距較遠
  2. 映射後同類數據之間方差較小(分佈比較集中)

類似於一種聚類分析,但是卻是一種監督學習算法。而PCA屬於一種無監督學習算法。

那麼將LDA的主軸與PCA的主軸畫出如下:

在這裏插入圖片描述

可以看出實際上數據在映射在 LDA 的主軸上可分性更高。

在下面的正文中的一些數學符號的表示:

L: number of classes ni: number of samples in class in: number of all samples x(i): the  -th sample in class iPi: the prior probability of class i \begin{aligned} L & : \text { number of classes } \\ n _ { i } & : \text { number of samples in class } i \\ n & : \text { number of all samples } \\ x _ { \ell } ^ { ( i ) } & : \text { the } \ell \text { -th sample in class } i \\ P _ { i } & : \text { the prior probability of class } i \end{aligned}

類間分散矩陣(Between-class Scatter Matrix)

那麼所有的樣本點 x(i)x _ { \ell } ^ { ( i ) } 在方向 ee 上的投影爲:

{eTx1(1),,eTxn1(1),eTx1(2),,eTxn2(2),,eTx(i),,eTx1(L),,eTxnL(L)} \left\{ e ^ { T } x _ { 1 } ^ { ( 1 ) } , \ldots , e ^ { T } x _ { n _ { 1 } } ^ { ( 1 ) } , e ^ { T } x _ { 1 } ^ { ( 2 ) } , \ldots , e ^ { T } x _ { n _ { 2 } } ^ { ( 2 ) } , \ldots , e ^ { T } x _ { \ell } ^ { ( i ) } , \ldots , e ^ { T } x _ { 1 } ^ { ( L ) } , \ldots , e ^ { T } x _ { n _ { L } } ^ { ( L ) } \right\}

投影之後的中心點爲:

mi=1ni=1nieTx(i)=eT{1ni=1nix(i)}=eTmi m _ { i } = \frac { 1 } { n _ { i } } \sum _ { \ell = 1 } ^ { n _ { i } } \boldsymbol { e } ^ { T } \boldsymbol { x } _ { \ell } ^ { ( i ) } = \boldsymbol { e } ^ { T } \left\{ \frac { 1 } { n _ { i } } \sum _ { \ell = 1 } ^ { n _ { i } } \boldsymbol { x } _ { \ell } ^ { ( i ) } \right\} = \boldsymbol { e } ^ { T } \boldsymbol { m } _ { i }

其中 mi=1ni=1nix(i)\boldsymbol { m } _ { i } = \frac { 1 } { n _ { i } } \sum _ { \ell = 1 } ^ { n _ { i } } \boldsymbol { x } _ { \ell } ^ { ( i ) } 實際上就是投影之前的中心,所以投影之後的中心則是原數據中心得投影。

那麼不同類中心之間的平方距離(歐氏距離):

12i=1Lj=1LPiPjmimj=12i=1Lj=1LPiPj(mimj)(mimj)T=12i=1Lj=1LPiPj(eTmieTmj)(eTmieTmj)T=12i=1Lj=1LPiPjeT(mimj)(mimj)Te=eT(12i=1Lj=1LPiPj(mimj)(mimj)T)SbLDAe \begin{aligned} &\frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \left| \kern-0.15em \left| m _ { i } - m _ { j } \right| \kern-0.15em \right| \\ = &\frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } (m _ { i } - m _ { j })(m _ { i } - m _ { j })^T \\ = &\frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } (e ^ { T } \boldsymbol m _ { i } - e ^ { T } \boldsymbol m _ { j })(e ^ { T } \boldsymbol m _ { i } - e ^ { T } \boldsymbol m _ { j })^T \\ = &\frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } e ^ { T } ( \boldsymbol m _ { i } - \boldsymbol m _ { j })(\boldsymbol m _ { i } - \boldsymbol m _ { j })^T e \\ = &e ^ { T } \underbrace{\left( \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \left( \boldsymbol { m } _ { i } - \boldsymbol { m } _ { j } \right) \left( \boldsymbol { m } _ { i } - \boldsymbol { m } _ { j } \right) ^ { T } \right)}_{S^{LDA}_b} e \\ \end{aligned}

其中 SbLDAS^{LDA}_b 代表了類間分散矩陣(Between-class Scatter Matrix),其中下標 bb 代表的 between。

加入每一類的比例是認爲這個距離也就是說拉的有多開,跟這兩類數據的佔比有關。

下面要證明:

SbLDA=12i=1Lj=1LPiPj(mimj)(mimj)T=i=1LPi(mim)(mim)T S _ { b } ^ { L D A } = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \left( \boldsymbol { m } _ { i } - \boldsymbol { m } _ { j } \right) \left( \boldsymbol { m } _ { i } - \boldsymbol { m } _ { j } \right) ^ { T } = \sum _ { i = 1 } ^ { L } P _ { i } \left( \boldsymbol { m } _ { i } - \boldsymbol { m } \right) \left( \boldsymbol { m } _ { i } - \boldsymbol { m } \right) ^ { T }

其中 m\boldsymbol { m } 代表了全部樣本點的中心(均值):

m=1ni=1L=1nix(i) \boldsymbol { m } = \frac { 1 } { n } \sum _ { i = 1 } ^ { L } \sum _ { \ell = 1 } ^ { n _ { i } } \boldsymbol { x } _ { \ell } ^ { ( i ) }

直接換項不容易,所以這裏將兩邊進行整理轉換然後使得轉換後等式相等。

先進行左邊的等式轉換:

SbLDA=12i=1Lj=1LPiPj(mimj)(mimj)T=12i=1Lj=1LPiPj(mimiTmimjTmjmiT+mjmjT)=12i=1Lj=1LPiPjmimiT12i=1Lj=1LPiPjmimjT12i=1Lj=1LPiPjmjmiT+12i=1Lj=1LPiPjmjmjT=12i=1LPimimiT(j=1LPj)12(i=1LPimi)(j=1LPjmjT)12(j=1LPjmj)(i=1LPimiT)+12(i=1LPi)j=1LPjmjmjT \begin{aligned} S _ { b } ^ { L D A } & = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \left( \boldsymbol { m } _ { i } - \boldsymbol { m } _ { j } \right) \left( \boldsymbol { m } _ { i } - \boldsymbol { m } _ { j } \right) ^ { T } \\ & = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \left( \boldsymbol { m } _ { i } \boldsymbol { m } _ { i }^ { T } -\boldsymbol { m } _ { i } \boldsymbol { m } _ { j }^ { T } - \boldsymbol { m } _ { j } \boldsymbol { m } _ { i }^ { T } + \boldsymbol { m } _ { j } \boldsymbol { m } _ { j }^ { T } \right)\\ & = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \boldsymbol { m } _ { i } \boldsymbol { m } _ { i }^ { T } - \frac { 1 } { 2 }\sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \boldsymbol { m } _ { i } \boldsymbol { m } _ { j }^ { T } - \frac { 1 } { 2 }\sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \boldsymbol { m } _ { j } \boldsymbol { m } _ { i }^ { T } + \frac { 1 } { 2 }\sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \boldsymbol { m } _ { j } \boldsymbol { m } _ { j }^ { T } \\ & = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } P _ { i} \boldsymbol { m } _ { i } \boldsymbol { m } _ { i }^ { T } \left( \sum _ { j = 1 } ^ { L } P _ { j } \right) -\frac { 1 } { 2 } \left(\sum _ { i = 1 } ^ { L } P _ { i} \boldsymbol { m } _ { i }\right) \left(\sum _ { j = 1 } ^ { L } P _ { j } \boldsymbol { m } _ { j }^ { T } \right) -\frac { 1 } { 2 } \left(\sum _ { j = 1 } ^ { L } P _ { j } \boldsymbol { m } _ { j } \right) \left(\sum _ { i = 1 } ^ { L } P _ { i} \boldsymbol { m } _ { i } ^ { T } \right)+ \frac { 1 } { 2 } \left( \sum _ { i = 1 } ^ { L } P _ { i } \right) \sum _ { j = 1 } ^ { L } P _ { j} \boldsymbol { m } _ { j } \boldsymbol { m } _ { j }^ { T } \end{aligned}

其中所有概率相加爲一:

(j=1LPj)=(i=1LPi)=1 \left( \sum _ { j = 1 } ^ { L } P _ { j } \right) = \left( \sum _ { i = 1 } ^ { L } P _ { i } \right) = 1

同時:

Pimi=ninx1(i)+x2(i)++xni(n)ni=1n{x1(i)+x2(i)++xni(n)} \begin{aligned} P _ { i } \boldsymbol m _ { i } & = \frac { n _ { i } } { n } \frac { x ^ { ( i ) }_ { 1 } + x ^ { ( i ) } _ { 2 } + \cdots + x _ { n _i } ^ { ( n ) } } { n _ { i } } \\& = \frac { 1 } { n } \left\{ x ^ { ( i ) }_ { 1 } + x ^ { ( i ) } _ { 2 } + \cdots + x _ { n _i } ^ { ( n ) } \right\} \end{aligned}

那麼:

i=1LPimi=i=1L1n{x1(i)+x2(i)++xni(n)}=1n{x1(1)++xn1(1)+x1(2)++xn2(2)++x1(i)++xni(i)}=1ni=1L=1nix(i)=m \begin{aligned} \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m _ { i } & = \sum _ { i = 1 } ^ { L } \frac { 1 } { n } \left\{ x ^ { ( i ) }_ { 1 } + x ^ { ( i ) } _ { 2 } + \cdots + x _ { n _i } ^ { ( n ) } \right\} \\& = \frac { 1 } { n } \left\{ x ^ { ( 1 ) }_ { 1 } + \cdots + x _ { n _ { 1 } } ^ { ( 1 ) } + x ^ { ( 2 ) }_ { 1 }+ \cdots + x _ { n _ { 2 } } ^ { ( 2 ) } + \cdots + x _ { 1 } ^ { ( i ) } + \cdots + x _ { n _ { i } } ^ { ( i ) } \right\} \\ &= \frac { 1 } { n } \sum _ { i = 1 } ^ { L } \sum _ { \ell = 1 } ^ { n _ { i } } \boldsymbol { x } _ { \ell } ^ { ( i ) } = \boldsymbol { m } \end{aligned}

所以做如下改寫:

SbLDA=12i=1LPimimiT(j=1LPj)12(i=1LPimi)(j=1LPjmjT)12(j=1LPjmj)(i=1LPimiT)+12(i=1LPi)j=1LPjmjmjT=12i=1LPimimiT12mmT12mmT+12j=1LPjmjmjT=i=1LPimimiTmmT \begin{aligned} S _ { b } ^ { L D A } & = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } P _ { i} \boldsymbol { m } _ { i } \boldsymbol { m } _ { i }^ { T } \left( \sum _ { j = 1 } ^ { L } P _ { j } \right) -\frac { 1 } { 2 } \left(\sum _ { i = 1 } ^ { L } P _ { i} \boldsymbol { m } _ { i }\right) \left(\sum _ { j = 1 } ^ { L } P _ { j } \boldsymbol { m } _ { j }^ { T } \right) -\frac { 1 } { 2 } \left(\sum _ { j = 1 } ^ { L } P _ { j } \boldsymbol { m } _ { j } \right) \left(\sum _ { i = 1 } ^ { L } P _ { i} \boldsymbol { m } _ { i } ^ { T } \right)+ \frac { 1 } { 2 } \left( \sum _ { i = 1 } ^ { L } P _ { i } \right) \sum _ { j = 1 } ^ { L } P _ { j} \boldsymbol { m } _ { j } \boldsymbol { m } _ { j }^ { T } \\ & = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } P _ { i} \boldsymbol { m } _ { i } \boldsymbol { m } _ { i }^ { T } -\frac { 1 } { 2 } \boldsymbol { m } \boldsymbol { m } ^T -\frac { 1 } { 2 } \boldsymbol { m } \boldsymbol { m } ^T+ \frac { 1 } { 2 } \sum _ { j = 1 } ^ { L } P _ { j} \boldsymbol { m } _ { j } \boldsymbol { m } _ { j }^ { T } \\ & = \sum _ { i = 1 } ^ { L } P _ { i} \boldsymbol { m } _ { i } \boldsymbol { m } _ { i }^ { T } -\boldsymbol { m } \boldsymbol { m } ^T \end{aligned}

現在進行右邊的等式轉換:

i=1LPi(mim)(mim)T=1=1LPimimiTi=1LPimimTi=1LPimmiT+i=1LPimmT=i=1LPimimiT(i=1LPimi)mTm(i=1LPimiT)+(i=1LPi)mmT=i=1LPimimiTmmTmmT+mmT=i=1LPimimiTmmT \begin{aligned} & \sum _ { i = 1 } ^ { L } P _ { i } \left( \boldsymbol { m } _ { i } - \boldsymbol { m } \right) \left( \boldsymbol { m } _ { i } - \boldsymbol { m } \right) ^ { T }\\ = & \sum _ { 1 = 1 } ^ { L } P _ { i } \boldsymbol m _ { i } \boldsymbol m _ { i } ^T- \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m _ { i } \boldsymbol m ^ T- \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m \boldsymbol m _ { i } ^T + \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m \boldsymbol m ^ T \\ = & \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m _ i \boldsymbol m _ { i } ^T - \left( \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m _ { i } \right) \boldsymbol m ^T- \boldsymbol m \left( \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m _ { i } ^T\right) + \left(\sum _ { i = 1 } ^ { L } P _ { i } \right) \boldsymbol m \boldsymbol m ^ T \\ = & \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m _ i \boldsymbol m _ { i } ^T - \boldsymbol m \boldsymbol m ^T- \boldsymbol m \boldsymbol m ^T + \boldsymbol m \boldsymbol m ^ T \\ = & \sum _ { i = 1 } ^ { L } P _ { i } \boldsymbol m _ i \boldsymbol m _ { i } ^T - \boldsymbol m \boldsymbol m ^T \end{aligned}

所以兩者相等。即:
SbLDA=12i=1Lj=1LPiPj(mimj)(mimj)T=i=1LPi(mim)(mim)T S _ { b } ^ { L D A } = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \left( \boldsymbol { m } _ { i } - \boldsymbol { m } _ { j } \right) \left( \boldsymbol { m } _ { i } - \boldsymbol { m } _ { j } \right) ^ { T } = \sum _ { i = 1 } ^ { L } P _ { i } \left( \boldsymbol { m } _ { i } - \boldsymbol { m } \right) \left( \boldsymbol { m } _ { i } - \boldsymbol { m } \right) ^ { T }

類內分散矩陣(Within-class Scatter Matrix)

全部類的方差之和爲:

i=1LPi=1ni(eTx(i)mi)2=i=1LPil=1ni(eTxl(i)eTmi)2=i=1LPil=1ni(eTxl(i)eTmi)(eTxl(i)eTmi)T=eT{i=1LPil=1ni(xi(i)mi)(xi(i)mi)TSwLDA}e \begin{aligned} & \sum _ { i = 1 } ^ { L } { P } _ { i } \sum _ { \ell = 1 } ^ { n _ { i } } \left( e ^ { T } { x } _ { \ell } ^ { ( i ) } - m _ { i } \right) ^ { 2 } \\ = & \sum _ { i = 1 } ^ { L } P _ { i } \sum _ { l = 1 } ^ { n _ { i } } \left( e ^ { T } x _ { l } ^ { ( i ) } - e ^ { T} \boldsymbol m _ { i } \right) ^ { 2 } \\ = & \sum _ { i = 1 } ^ { L } P _ { i } \sum _ { l = 1 } ^ { n _ { i } } \left( e ^ { T} x _ { l } ^ { ( i ) } - e ^ { T} \boldsymbol m _ { i } \right) \left( e ^ { T} x _ { l } ^ { ( i ) } - e ^ { T} \boldsymbol m _ { i } \right) ^ T \\ = & e^ { T} \left\{ \underbrace { \sum _ { i = 1 } ^ { L } P _ { i } \sum _ { l = 1 } ^ { n _ { i } } \left( x _ { i } ^ { ( i ) } - \boldsymbol m _ { i } \right) \left( x _ { i } ^ { ( i ) } - \boldsymbol m _ { i } \right) ^ { T } }_{\boldsymbol { S } _ { w } ^ { L D A }}\right\} e \end{aligned}

其中 SwLDA\boldsymbol S^{LDA}_w 代表了類間分散矩陣(Within-class Scatter Matrix),其中下標 ww 代表的 within。

SwLDA=i=1LPi=1ni(x(i)mi)(x(i)mi)T \boldsymbol { S } _ { w } ^ { L D A } = \sum _ { i = 1 } ^ { L } P _ { i } \sum _ { \ell = 1 } ^ { n _ { i } } \left( \boldsymbol { x } _ { \ell } ^ { ( i ) } - \boldsymbol { m } _ { i } \right) \left( \boldsymbol { x } _ { \ell } ^ { ( i ) } - \boldsymbol { m } _ { i } \right) ^ { T }

希望類(組)間距離越大越好:

12i=1Lj=1LPiPj(mimj)2=eT(i=1LPi(mim)(mim)T)e=eTSbLDAe \frac { 1 } { 2 } \sum _ { i = 1 } ^ { L } \sum _ { j = 1 } ^ { L } P _ { i } P _ { j } \left( m _ { i } - m _ { j } \right) ^ { 2 } = e ^ { T } \left( \sum _ { i = 1 } ^ { L } P _ { i } \left( \boldsymbol { m } _ { i } - \boldsymbol { m } \right) \left( \boldsymbol { m } _ { i } - \boldsymbol { m } \right) ^ { T } \right) e = e^T \boldsymbol { S } _ { b } ^ { L D A } e

希望類(組)間距離越小越好:

i=1LPi=1ni(eTx(i)mi)2=eT(i=1LPi=1ni(x(i)mi)(x(i)mi)T)e=eTSwLDAe \sum _ { i = 1 } ^ { L } P _ { i } \sum _ { \ell = 1 } ^ { n _ { i } } \left( e ^ { T } x _ { \ell } ^ { ( i ) } - m _ { i } \right) ^ { 2 } = e ^ { T } { \left( \sum _ { i = 1 } ^ { L } P _ { i } \sum _ { \ell = 1 } ^ { n _ { i } } \left( x _ { \ell } ^ { ( i ) } - m _ { i } \right) \left( x _ { \ell } ^ { ( i ) } - m _ { i } \right) ^ { T } \right) } e = e^ T \boldsymbol { S } _ { w } ^ { L D A } e

所以兩個不能分開來看,所以選擇目標函數的表示爲:

e=argmaxeRdeTSbLDAeeTSwLDAe e = \arg \max _ { e \in R ^ { d } } \frac { e ^ { T } S _ { b } ^ { L D A } e } { e ^ { T } S _ { w } ^ { L D A } e }

來保證分子最大,分母最小,也就是說 組間距離/組內距離 越大越好。

現在引入一個概念:Rayleigh Quotient

r(e)=eTSbLDAeeTSwLDAe r ( { e } ) = \frac { { e } ^ { T } { S } _ { b } ^ { L D A } { e } } { { e } ^ { T } { S } _ { w } ^ { L D A } { e } }

那麼凸最優解,就是求導爲零:

r(e)=1(eTSwLDAe)2{(eTSwLDAe)(2SbLDAe)(eTSbLDAe)(2SwLDAe)}=0=1eTSwLDAe{12SbLDAeeTSbLDAeeTSwLDAe2SWLDAe0} \begin{aligned} \nabla r ( \boldsymbol { e } ) & = \frac { 1 } { \left( \boldsymbol { e } ^ { T } \boldsymbol { S } _ { w } ^ { L D A } \boldsymbol { e } \right) ^ { 2 } } \left\{ \left( \boldsymbol { e } ^ { T } \boldsymbol { S } _ { w } ^ { L D A } \boldsymbol { e } \right) \left( 2 \boldsymbol { S } _ { b } ^ { L D A } \boldsymbol { e } \right) - \left( \boldsymbol { e } ^ { T } \boldsymbol { S } _ { b } ^ { L D A } \boldsymbol { e } \right) \left( 2 \boldsymbol { S } _ { w } ^ { L D A } \boldsymbol { e } \right) \right\} = 0\\ & = \frac { 1 } { e ^ { T } S _ { w } ^ { LDA } e } \left\{\underbrace {1 \cdot 2 S _ { b } ^ { L D A } e - \frac { e ^ { T} S _ { b } ^ { L D A } e } { e ^ { T} S _ { w } ^ { L D A} e } 2 S _ { W } ^ { L D A } e}_{0} \right\} \end{aligned}

也就是說

SbLDAe=eTSbLDAeeTSwLDAeSwLDAe=r(e)SwLDAe S _ { b } ^ { L D A } e = \frac { e ^ { T} S _ { b } ^ { L D A } e } { e ^ { T} S _ { w } ^ { L D A} e } S _ { w } ^ { L D A } e = r(e) S _ { w } ^ { L D A } e

這是一種廣義特徵值問題(generalized eigenvalue problem),即:

SbLDAe=λSwLDAe \boldsymbol { S } _ { b } ^ { L D A } \boldsymbol { e } = \lambda \boldsymbol { S } _ { w } ^ { L D A } \boldsymbol { e }

這裏的特徵向量不在是原來的特徵向量而是原來的特徵向量乘以一個矩陣,所以是在求 SbLDA\boldsymbol { S } _ { b } ^ { L D A } 的廣義特徵值 λ\lambda

工程上的解法是,做如下轉換:

pinv(SwLDA)SbLDAe=λe \text{pinv} (\boldsymbol { S } _ { w } ^ { L D A } )\boldsymbol { S } _ { b } ^ { L D A } \boldsymbol { e } = \lambda \boldsymbol { e }

然後使用特徵值求解方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章