LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”,即最大化类间距离,最小化类内方差
(1) 假设有C1、C2两个类比的样本,两类均值为:
μ 1 = 1 N 1 ∑ x ∈ C 1 x \mu_1 = \frac{1}{N_1}\sum_{x\in C_1 }x μ1=N11∑x∈C1x
μ 2 = 1 N 1 ∑ x ∈ C 2 x \mu_2 = \frac{1}{N_1}\sum_{x\in C_2 }x μ2=N11∑x∈C2x
(2) 目标
是希望投影后两类之间的距离尽可能大,每一类的方差小距离表示为:
D ( C 1 , C 2 ) = ∣ ∣ μ 1 ~ − μ 2 ~ ∣ ∣ 2 2 D(C_1,C_2) = ||\widetilde{\mu_1}-\widetilde{\mu_2}||_2^2 D(C1,C2)=∣∣μ1 −μ2 ∣∣22
其中 μ 1 ~ \widetilde{\mu_1} μ1 , μ 2 ~ \widetilde{\mu_2} μ2 表示两类的中心在 ω \omega ω方向上的投影向量
μ 1 ~ = w T μ 1 , μ 2 ~ = w T μ 2 \widetilde{\mu_1} = w^T\mu_1,\widetilde{\mu_2} = w^T\mu_2 μ1 =wTμ1,μ2 =wTμ2
(3)优化
需要优化的问题
{ m a x ∣ ∣ ω T ( μ 1 − μ 2 ) ∣ ∣ 2 2 , s . t ω T ω = 1 单位方向向量 \begin{cases} & max||\omega^T(\mu_1-\mu_2)||_2^2 &,\\ s.t & \omega^T\omega=1 & {\text{单位方向向量}} \end{cases} {s.tmax∣∣ωT(μ1−μ2)∣∣22ωTω=1,单位方向向量
(4)目标函数
目标函数定义为类间距离与类内距离的比值,引出最大化的目标:
m a x J ( w ) = ∣ ∣ w T ( μ 1 − μ 2 ) ∣ ∣ 2 2 D 1 + D 2 maxJ(w) = \frac{||w^T(\mu_1-\mu_2)||_2^2}{D1+D2} maxJ(w)=D1+D2∣∣wT(μ1−μ2)∣∣22
D1 D2为两个类投影后的方差,其中D1,D2为:
D 1 = ∑ x ∈ C 1 ( w T x − w T μ 1 ) 2 = ∑ x ∈ C 1 w T ( x − μ 1 ) ( x − μ 1 ) T w D_1 = \sum_{x\in C_1}(w^Tx-w^T\mu_1)^2= \sum_{x\in C_1}w^T( x-\mu_1)(x-\mu_1)^Tw D1=x∈C1∑(wTx−wTμ1)2=x∈C1∑wT(x−μ1)(x−μ1)Tw
D 2 = ∑ x ∈ C 2 w T ( x − μ 2 ) ( x − μ 2 ) T w D_2 =\sum_{x\in C_2}w^T( x-\mu_2)(x-\mu_2)^Tw D2=x∈C2∑wT(x−μ2)(x−μ2)Tw
故 J ( w ) J(w) J(w)可以表示为:
J ( w ) = ∣ ∣ w T ( μ 1 − μ 2 ) ∣ ∣ 2 2 ∑ x ∈ C i w T ( x − μ i ) ( x − μ i ) T w = w T ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) w ∑ x ∈ C i w T ( x − μ i ) ( x − μ i ) T w J(w)=\frac{||w^T(\mu_1-\mu_2)||_2^2}{\sum_{x\in C_i}w^T( x-\mu_i)(x-\mu_i)^Tw}=\frac{w^T(\mu_1-\mu2)(\mu_1-\mu_2)w}{\sum_{x\in C_i}w^T( x-\mu_i)(x-\mu_i)^Tw} J(w)=∑x∈CiwT(x−μi)(x−μi)Tw∣∣wT(μ1−μ2)∣∣22=∑x∈CiwT(x−μi)(x−μi)TwwT(μ1−μ2)(μ1−μ2)w
在此,我们定义类间散度矩阵(各样本间的均方距离): S B = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_B=(\mu_1-\mu_2)(\mu_1-\mu_2)^T SB=(μ1−μ2)(μ1−μ2)T,
类内散度矩阵(各样本点围绕均值的散布情况)为: S w = ∑ x ∈ C i ( x − μ i ) ( x − μ i ) T S_w=\sum_{x\in C_i}(x-\mu_i)(x-\mu_i)^T Sw=∑x∈Ci(x−μi)(x−μi)T
J ( w ) J(w) J(w)变换为:
J ( w ) = w T S B w w T S w w J(w) = \frac{w^TS_Bw}{w^TS_ww} J(w)=wTSwwwTSBw
对 ω \omega ω求偏导,并令导数为零:
∂ J ( ω ) ∂ ω = ( ∂ w T S B w ∂ w w T S w w − ∂ w T S w w ∂ w w T S B w ) ( w T S w w ) 2 \frac{\partial J(\omega)}{\partial \omega} = \frac{\left( \frac{\partial w^TS_Bw}{\partial w}w^TS_ww-\frac{\partial w^TS_ww}{\partial w}w^TS_Bw\right)}{(w^TS_ww)^2} ∂ω∂J(ω)=(wTSww)2(∂w∂wTSBwwTSww−∂w∂wTSwwwTSBw)
通过矩阵求导法则,可得出:
( w T S w w ) S B w = ( w T S B w ) S w w (w^TS_ww)S_Bw = (w^TS_Bw)S_ww (wTSww)SBw=(wTSBw)Sww
令 λ = J ( w ) = w T S B w w T S w w \lambda =J(w) = \frac{w^TS_Bw}{w^TS_ww} λ=J(w)=wTSwwwTSBw
整理得出:
S B w = λ S w w ⟹ S w − 1 S B w = λ w S_Bw = \lambda S_ww \Longrightarrow S_w^{-1}S_Bw = \lambda w SBw=λSww⟹Sw−1SBw=λw
于是LDA降维变成了求矩阵特征向量的问题,J(w)就对应了矩阵 S w − 1 S B S_w^{-1}S_B Sw−1SB最大的特征值,投影方向为这个特征值对应的特征向量。
对于多类别标签高维数据的LDA步骤如下:
输入:数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( ( x m , y m ) ) } D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\} D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本 x i x_i xi为n维向量, y i ∈ { C 1 , C 2 , . . . , C k } y_i \in \{C_1,C_2,...,C_k\} yi∈{C1,C2,...,Ck},降维到的维度d。
输出:降维后的样本集 D ′ D′ D′
1) 计算类内散度矩阵$S_w
2) 计算类间散度矩阵$S_b
3) 计算矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb
4)计算 S w − 1 S b S_w^{-1}S_b Sw−1Sb的最大的d个特征值和对应的d个特征向量 ( w 1 , w 2 , . . . w d ) (w_1,w_2,...w_d) (w1,w2,...wd),得到投影矩阵WW
5) 对样本集中的每一个样本特征 x i x_i xi,转化为新的样本 z i = W T x i z_i=W^Tx_i zi=WTxi
6) 得到输出样本集 D ′ = { ( z 1 , y 1 ) , ( z 2 , y 2 ) , . . . , ( ( z m , y m ) ) } D'=\{(z_1,y_1), (z_2,y_2), ...,((z_m,y_m))\} D′={(z1,y1),(z2,y2),...,((zm,ym))}
相同点
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布。
不同点
1)LDA是有监督的降维方法,而PCA是无监督的降维方法
2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
3)LDA除了可以用于降维,还可以用于分类。
4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。