线性判别分析(Linear Discriminant Analysis,LDA)是一种经典的有监督数据降维方法,同时也经常被用来对数据进行降维。它是 Ronald Fisher 在 1936 年发明的,因此也称为是 Fisher Discriminant Analysis (FDA)。
LDA 是为了分类服务的,因此目标是希望找到一个投影方向 w w w,使得投影后的样本尽可能按照原始类别分开。
假设现有数据集 D = ( x 1 , y 1 ) , ( x 1 , y 1 ) , ⋅ ⋅ ⋅ , ( x n , y n ) D = {(x_1, y_1), (x_1, y_1), \cdot \cdot \cdot ,(x_n, y_n)} D=(x1,y1),(x1,y1),⋅⋅⋅,(xn,yn),其中任意样本 x i x_i xi 为 m m m 维向量,数据集中共有 K K K 个类别。定义 N j N_j Nj 为第 j j j 类样本的个数, X j X_j Xj 为第 j j j 类样本的集合, μ j \mu_j μj 为第 j j j 类样本的均值向量, ∑ j \sum_j ∑j 为第 j j j 类样本的“方差”。
因此,原始均值 μ i \mu_i μi 和投影后的均值 μ ~ i \tilde{\mu}_i μ~i 的表达式为分别为:
μ i = 1 N i ∑ x ∈ w i x \mu_i=\frac{1}{N_i}\sum_{x\in w_i}x μi=Ni1x∈wi∑x
μ ~ i = 1 N i ∑ x ∈ w i w T x = w T 1 N i ∑ x ∈ w i x = w T μ i \tilde{\mu}_i=\frac{1}{N_i}\sum_{x\in w_i}w^Tx=w^T\frac{1}{N_i}\sum_{x\in w_i}x=w^T\mu_i μ~i=Ni1x∈wi∑wTx=wTNi1x∈wi∑x=wTμi
方差
s ~ i 2 = ∑ x ∈ w i ( w T x − μ ~ i ) 2 = ∑ x ∈ w i ( w T x − w T μ i ) 2 = ∑ x ∈ w i w T ( x − μ i ) ( x − μ i ) T w = w T S i w \begin{aligned} \tilde{s}_i^2&=\sum_{x\in w_i}(w^Tx-\tilde{\mu}_i)^2\\ &=\sum_{x\in w_i}(w^Tx-w^T\mu_i)^2\\ &=\sum_{x\in w_i}w^T(x-\mu_i)(x-\mu_i)^Tw\\ &=w^TS_iw \end{aligned} s~i2=x∈wi∑(wTx−μ~i)2=x∈wi∑(wTx−wTμi)2=x∈wi∑wT(x−μi)(x−μi)Tw=wTSiw
定义 μ \mu μ 为为所有样本的均值,则
μ = 1 n ∑ i = 1 n x i \mu=\frac{1}{n}\sum_{i=1}^nx_i μ=n1i=1∑nxi
定义全局散度 S t S_t St 为:
S t = ∑ i = 1 n ( x i − μ ) ( x i − μ ) T S_t=\sum_{i=1}^n(x_i-\mu)(x_i-\mu)^T St=i=1∑n(xi−μ)(xi−μ)T
定义类内散度 S w S_w Sw 为:
S w = ∑ k = 1 K ∑ x i ∈ C k ( x i − μ k ) ( x i − μ k ) T S_w=\sum_{k=1}^K\sum_{x_i\in C_k}(x_i-\mu_k)(x_i-\mu_k)^T Sw=k=1∑Kxi∈Ck∑(xi−μk)(xi−μk)T
如果把全局散度定义为类内散度与类间散度之和,即 S t = S b + S w S_t=S_b+S_w St=Sb+Sw,那么 类间散度矩阵 S b S_b Sb 可表示为:
S b = S t − S w = ∑ i = 1 n ( x i − μ ) ( x i − μ ) T − ∑ k = 1 K ∑ x i ∈ C k ( x i − μ k ) ( x i − μ k ) T = ∑ k = 1 K N k ( μ k − μ ) ( μ k − μ ) T \begin{aligned} S_b&=S_t-S_w\\ &=\sum_{i=1}^n(x_i-\mu)(x_i-\mu)^T - \sum_{k=1}^K\sum_{x_i\in C_k}(x_i-\mu_k)(x_i-\mu_k)^T\\ &=\sum_{k=1}^K{N_k(\mu_k-\mu)(\mu_k-\mu)^T} \end{aligned} Sb=St−Sw=i=1∑n(xi−μ)(xi−μ)T−k=1∑Kxi∈Ck∑(xi−μk)(xi−μk)T=k=1∑KNk(μk−μ)(μk−μ)T
LDA 主要思想的描述我们的目标就是要投影后最大化类间均值差同时最小化类内方差大小,因此目标函数可以认为是最大化:
J ( w ) = W T S b W W T S w W J(w)=\frac{W^TS_bW}{W^TS_wW} J(w)=WTSwWWTSbW
其中, W W W 是目标投影超平面, W T W = I W^TW=I WTW=I。
求导:
d d w J ( w ) = d d w ( W T S b W W T S w W ) = ( W T S w W ) d d w ( W T S b W ) − ( W T S b W ) d d w ( W T S w W ) = ( W T S w W ) 2 S b W − ( W T S b W ) 2 W T S w W \begin{aligned} \frac{d}{dw}J(w) &=\frac{d}{dw}(\frac{W^TS_bW}{W^TS_wW})\\ &=(W^TS_wW)\frac{d}{dw}(W^TS_bW) - (W^TS_bW)\frac{d}{dw}(W^TS_wW)\\ &=(W^TS_wW)2S_bW - (W^TS_bW)2W^TS_wW \end{aligned} dwdJ(w)=dwd(WTSwWWTSbW)=(WTSwW)dwd(WTSbW)−(WTSbW)dwd(WTSwW)=(WTSwW)2SbW−(WTSbW)2WTSwW
所以,
d d w J ( w ) = 0 ⇒ ( W T S w W ) 2 S b W − ( W T S b W ) 2 W T S w W = 0 \begin{aligned} &\frac{d}{dw}J(w)=0\\ &\Rightarrow (W^TS_wW)2S_bW - (W^TS_bW)2W^TS_wW = 0 \end{aligned} dwdJ(w)=0⇒(WTSwW)2SbW−(WTSbW)2WTSwW=0
除以 2 W T S w W 2W^TS_wW 2WTSwW,则有:
⇒ ( W T S w W W T S w W ) S b W − ( W T S b W W T S w W ) W T S w W = 0 ⇒ S b W − J ( w ) S w W = 0 ⇒ S w − 1 S b W − J ( w ) W = 0 \begin{aligned} &\Rightarrow (\frac{W^TS_wW}{W^TS_wW})S_bW - (\frac{W^TS_bW}{W^TS_wW})W^TS_wW = 0\\ &\Rightarrow S_bW - J(w)S_wW = 0 \\ &\Rightarrow S_w^{-1}S_bW - J(w)W = 0 \end{aligned} ⇒(WTSwWWTSwW)SbW−(WTSwWWTSbW)WTSwW=0⇒SbW−J(w)SwW=0⇒Sw−1SbW−J(w)W=0
该问题等价于:
S b W = λ S w W , λ = J ( w ) = s c a l a r S_bW=\lambda S_wW \ \ , \ \ \lambda=J(w)=scalar SbW=λSwW , λ=J(w)=scalar
或者说:
S w − 1 S b W = λ W S_w^{-1}S_bW=\lambda W Sw−1SbW=λW
因此,求解最近投影平面 W = { w 1 , w 2 , . . . , w d } W=\{w_1,w_2,...,w_d\} W={w1,w2,...,wd},即求解 S w − 1 S b S_w^{-1}S_b Sw−1Sb 矩阵前 d d d 个最大的特征值对应的特征向量组成的矩阵。
至此,可以得出 LDA 的求解步骤为:
(1)计算数据集中每个类别样本的均值向量 μ j \mu_j μj,及总体均值向量 μ \mu μ
(2)计算类内散度矩阵 S w S_w Sw,全局散度矩阵 S t S_t St,并得到类间散度 S b = S t − S w S_b=S_t-S_w Sb=St−Sw
(3)对矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb 进行特征值分解,将特征值从大到小排列
(4)取特征值前 d d d 大的对应的特征向量 w 1 , w 2 , . . . , w d w_1,w_2,...,w_d w1,w2,...,wd,通过以下映射将 m m m 维样本映射到 d d d 维:
x i ′ = [ w 1 T x i w 2 T x i ⋅ ⋅ ⋅ w d T x i ] x_i' = \begin{bmatrix} w_1^Tx_i \\ w_2^Tx_i \\ \cdot \cdot \cdot\\ w_d^Tx_i \end{bmatrix} xi′=⎣⎢⎢⎡w1Txiw2Txi⋅⋅⋅wdTxi⎦⎥⎥⎤
PCA 和 LDA 两种降维方法的求解过程来看,它们确实有着很大的相似性,但对应的原理却有所区别。
首先从目标出发:
举一个简单的例子,在语音识别中,我们想从一段音频中提取出人的语音信号,这时可以使用 PCA 先进行降维,过滤掉一些固定频率(方差较小)的背景噪声,但如果我们的需求是从这段音频中区分出声音属于哪个人,那么我们应该使用 LDA 对数据进行降维,使每个人的语音信号具有区分性。
另外,在人脸识别领域中, PCA,LDA 都会被频繁使用。基于 PCA 的人脸识别方法也称为 特征脸( Eigenface ) 方法, 该方法将人脸图像按行展开形成一个高维向量,对多个人脸特征的协方差矩阵做特征值分解,其中较大特征值对应的特征向量具有与人脸相似的形状,故称为特征脸。
相同点
不同点
对高维数据,由于在某些维度上缺少观测值。 S w S_w Sw 常常是 奇异的(不满秩的),常用的两种解决方法: