线性判别分析(Linear Discriminant Analysis, LDA)(含类内散度矩阵 类间散度矩阵 全局散度矩阵推导

LDA算法概述:
线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是模式识别的经典算法,它是在1996年由Belhumeur引入模式识别和人工智能领域的。线性鉴别分析的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。因此,它是一种有效的特征抽取方法。使用这种方法能够使投影后模式样本的类间散布矩阵最大,并且同时类内散布矩阵最小。就是说,它能够保证投影后模式样本在新的空间中有最小的类内距离和最大的类间距离,即模式在该空间中有最佳的可分离性。

说白了就是想让数据降维之后, 同一类的数据靠紧一点, 不同类的离远一点.

为什么要用LDA

既然PCA已经是一种表现很好的数据降维的方法,LDA也是一种将数据降维的方法。那为什么还要有LDA呢?
PCA是一种无监督的数据降维方法,与之不同的是LDA是一种有监督的数据降维方法。我们知道即使在训练样本上,我们提供了类别标签,在使用PCA模型的时候,我们是不利用类别标签的,而LDA在进行数据降维的时候是利用数据的类别标签提供的信息的。
从几何的角度来看,PCA和LDA都是讲数据投影到新的相互正交的坐标轴上。只不过在投影的过程中他们使用的约束是不同的,也可以说目标是不同的。PCA是将数据投影到方差最大的几个相互正交的方向上,以期待保留最多的样本信息。样本的方差越大表示样本的多样性越好,在训练模型的时候,我们当然希望数据的差别越大越好。否则即使样本很多但是他们彼此相似或者相同,提供的样本信息将相同,相当于只有很少的样本提供信息是有用的。样本信息不足将导致模型性能不够理想。这就是PCA降维的目标:将数据投影到方差最大的几个相互正交的方向上。这种约束有时候很有用,比如在下面这个例子:
在这里插入图片描述
对于这个样本集我们可以将数据投影到x轴或者y轴,但这都不是最佳的投影方向,因为这两个方向都不能最好地反映数据的分布。很明显还存在最佳的方向可以描述数据的分布趋势,那就是图中红色直线所在的方向。也是数据样本做投影,方差最大的方向。向这个方向做投影,投影后数据的方差最大,数据保留的信息最多。
但是,对于另外的一些不同分布的数据集,PCA的这个投影后方差最大的目标就不太合适了。比如对于下面图片中的数据集:
在这里插入图片描述
针对这个数据集,如果同样选择使用PCA,选择方差最大的方向作为投影方向,来对数据进行降维。那么PCA选出的最佳投影方向,将是图中红色直线所示的方向。这样做投影确实方差最大,但是是不是有其他问题。聪明的你一定发现了,这样做投影之后两类数据样本将混合在一起,将不再线性可分,甚至是不可分的。这对我们来说简直就是地狱,本来线性可分的样本被我们亲手变得不再可分。
帅气英俊的你也一定发现了,图中还有一条耀眼的黄色直线,向这条直线做投影即能使数据降维,同时还能保证两类数据仍然是线性可分的。上面的这个数据集如果使用LDA降维,找出的投影方向就是黄色直线所在的方向。
这其实就是LDA的思想,或者说LDA降维的目标:将带有标签的数据降维,投影到低维空间同时满足三个条件:
尽可能多地保留数据样本的信息(即选择最大的特征是对应的特征向量所代表的的方向)。
寻找使样本尽可能好分的最佳投影方向。
投影后使得同类样本尽可能近,不同类样本尽可能远。
其实第二个和第三个条件是基本等价的,我们很容易想到,使样本尽可能好分的投影方向,就是要使投影后使得同类样本尽可能近,不同类样本尽可能远。
上面大致讲解的LDA的基本思想,以及与PCA的不同,下面就来介绍一下LDA模型。

符号说明:

C : 一 个 空 间 一 共 有 C 个 类 , C:一个空间一共有C个类, C:C,

x ∶ 表 示 训 练 样 本 , 使 用 列 向 量 表 示 x∶表示训练样本,使用列向量表示 x使

x j ( i ) : 第 i 个 类 的 第 j 个 样 本 , 每 个 x j ( i ) 是 一 个 m 行 1 列 的 矩 阵 , x_j^{(i)}:第i个类的第j个样本, 每个x_j^{(i)}是一个m行1列的矩阵, xj(i):ij,xj(i)m1

M i ∶ 表 示 第 i 类 训 练 样 本 的 数 目 ( i = 1 , 2 , … , C ) M_i ∶表示第i类训练样本的数目(i=1,2,…,C) Miii=1,2,,C

M = ∑ i = 1 C M i ∶ 表 示 训 练 样 本 的 总 数 目 M=\sum_{i=1}^CM_i ∶表示训练样本的总数目 M=i=1CMi

μ i = 1 M i ∑ j = 1 M i X j ( i ) ∶ 表 示 第 i 类 训 练 样 本 的 均 值 ( i = 1 , 2 , … , C ) \mu_i=\frac1{M_i}\sum_{j=1}^{M_i}X_j^{(i)}∶表示第i类训练样本的均值 (i=1,2,…,C) μi=Mi1j=1MiXj(i)ii=1,2,,C

μ = 1 M ∑ i = 1 M x i ∶ 表 示 全 部 训 练 样 本 的 均 值 \mu=\frac1{M}\sum_{i=1}^M x_i ∶表示全部训练样本的均值 μ=M1i=1Mxi

w ∶ 投 影 直 线 w∶ 投影直线 w线

Σ i = ∑ j = 1 M i ( x j ( i ) − μ i ) ( x j ( i ) − μ i ) T ∶ 表 示 i 类 样 本 的 协 方 差 矩 阵 \Sigma_i =\sum_{j=1}^{M_i}(x_j^{(i)}−\mu_i)(x_j^{(i)}−\mu_i)^T∶表示i类样本的协方差矩阵 Σi=j=1Mi(xj(i)μi)(xj(i)μi)Ti

p ( i ) ∶ 表 示 第 i 类 的 出 现 概 率 p(i) ∶表示第i类的出现概率 p(i)i

p ( i , j ) ∶ 表 示 x j ( i ) 的 出 现 概 率 p(i,j) ∶表示x_j^{(i)}的出现概率 p(i,j)xj(i)

二类LDA原理:

由于是两类数据,因此我们只需要将数据投影到一条直线上即可。假设我们的投影直线是向量 w w w,则对任意一个样本 x i x_i xi,它在直线 w w w的投影为 w T x i w^T x_i wTxi,对于我们的两个类别的中心点 μ 1 μ_1 μ1, μ 2 μ_2 μ2,在直线 w w w的投影为 w T μ 1 w^T μ_1 wTμ1 w T μ 2 w^T μ_2 wTμ2。由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化 ∣ ∣ w T μ 1 − w T μ 2 ∣ ∣ 2 2 ||w^T μ_1-w^T μ_2 ||_2^2 wTμ1wTμ222,同时我们希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差 w T Σ 1 w w^T Σ_1 w wTΣ1w w T Σ 2 w w^T Σ_2 w wTΣ2w尽可能的小,即最小化 w T Σ 1 w + w T Σ 2 w w^T Σ_1 w+w^T Σ_2 w wTΣ1w+wTΣ2w。同时考虑二者,则可得到欲最大化的目标
J = ∣ ∣ w T μ 1 − w T μ 2 ∣ ∣ 2 2 w T Σ 1 w + w T Σ 2 w = w T ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w w T ( Σ 1 + Σ 2 ) w (1) J=\frac{||w^T μ_1-w^T μ_2 ||_2^2}{w^T Σ_1 w+w^T Σ_2 w}=\frac{w^T (μ_1-μ_2 ) (μ_1-μ_2 )^T w}{w^T (Σ_1+Σ_2 )w} \tag1 J=wTΣ1w+wTΣ2wwTμ1wTμ222=wT(Σ1+Σ2)wwT(μ1μ2)(μ1μ2)Tw(1)

类内散度矩阵:

S W = Σ 1 + Σ 2 = ∑ i = 1 M 1 ( x i ( 1 ) − μ 1 ) ( x i ( 1 ) − μ 1 ) T + ∑ i = 1 M 2 ( x i ( 2 ) − μ 2 ) ( x i ( 2 ) − μ 2 ) T (2) S_W=Σ_1+Σ_2= ∑_{i=1}^{M_1}(x_i^{(1)}-μ_1 ) (x_i^{(1)}-μ_1)^T+ ∑_{i=1}^{M_2}(x_i^{(2)}-μ_2 ) (x_i^{(2)}-μ_2 )^T \tag2 SW=Σ1+Σ2=i=1M1(xi(1)μ1)(xi(1)μ1)T+i=1M2(xi(2)μ2)(xi(2)μ2)T(2)

类间散度矩阵:

S B = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T , (3) S_B=(μ_1-μ_2 ) (μ_1-μ_2 )^T,\tag3 SB=(μ1μ2)(μ1μ2)T,(3)
则欲最大化的目标可重写为
J = w T S B w w T S W w (4) J=\frac{w^T S_B w}{w^T S_W w}\tag4 J=wTSWwwTSBw(4)
不失一般性,令 w T S W w = 1 w^T S_W w=1 wTSWw=1,则优化目标等价于
max ⁡ w ⁡ w T S B w s . t . w T S W w = 1 (5) \max_w⁡ \quad w^T S_B w \qquad s.t. \quad w^T S_W w=1 \tag5 wmaxwTSBws.t.wTSWw=1(5)
由拉格朗日乘子法,上式等价于
S B w = λ S W w , (6) S_B w=λS_W w,\tag6 SBw=λSWw,(6)
其中λ是拉格朗日乘子. 注意到 S B w S_B w SBw的方向恒为 μ 1 − μ 2 μ_1-μ_2 μ1μ2, 不妨令
S B w = λ ( μ 1 − μ 2 ) , (7) S_B w=λ(μ_1-μ_2 ),\tag7 SBw=λ(μ1μ2),(7)
代入式(6)中即得
w = S W − 1 ( μ 1 − μ 2 ) . (8) w=S_W^{-1} (μ_1-μ_2).\tag8 w=SW1(μ1μ2).(8)
考虑到数值解的稳定性,在实践中通常是对 S W S_W SW进行奇异值分解,即 S W = U Σ V T S_W=UΣV^T SW=UΣVT,这里 Σ Σ Σ是一个实对称矩阵,其对角线上的元素是 S W S_W SW的奇异值,然后再由 S W − 1 = V Σ − 1 U T S_W^{-1}=VΣ^{-1}U^T SW1=VΣ1UT得到 S W − 1 S_W^{-1} SW1,或者是令 S W = S W + γ I S_W=S_W+γI SW=SW+γI γ γ γ是一个特别小的数,使得 S W S_W SW可逆也是一种方法.

多类LDA原理:

在多类问题时,将 D D D维的向量 x x x投影到 d < D d<D d<D维的 y y y.投影方程为:
y = W T x (9) y=W^T x\tag9 y=WTx(9)
这里 W W W是一个投影矩阵,每一个列向量 w i w_i wi表示一个投影方向.
设数据集合为 X = { x 1 ( 1 ) , x 2 ( 1 ) , … , x M 1 ( 1 ) , x 1 ( 2 ) , … x M C ( C ) } X=\lbrace x_1^{(1)},x_2^{(1)},…,x_{M_1}^{(1)},x_1^{(2)},…x_{M_C}^{(C)}\rbrace X={x1(1)x2(1)xM1(1)x1(2)xMC(C)}. 在多类的时候,过程与上面一样,不过优化的目标函数需要更改一下.

类内散度矩阵与二类时的定义一样,如下表示:

S W = ∑ i = 1 C ∑ j = 1 M i p ( i , j ) ( x j ( i ) − μ i ) ( x j ( i ) − μ i ) T (10) S_W=∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)(x_j^{(i)}-μ_i ) (x_j^{(i)}-μ_i )^T \tag{10} SW=i=1Cj=1Mip(i,j)(xj(i)μi)(xj(i)μi)T(10)

类间散度矩阵根据定义以及推导,得

S B = 1 2 ∑ i = 1 C ∑ j = 1 C p ( i ) p ( j ) ( μ i − μ j ) ( μ i − μ j ) T = 1 2 ∑ i = 1 C ∑ j = 1 C p ( i ) p ( j ) ( μ i μ i T − μ i μ j T − μ j μ i T + μ j μ j T ) = 1 2 ∑ i = 1 C p ( i ) μ i μ i T ∑ j = 1 C p ( j ) − p ( i ) μ i ∑ j = 1 C p ( j ) μ j T − p ( i ) ( ∑ j = 1 C p ( j ) μ j ) μ i T − p ( i ) ∑ j = 1 C p ( j ) μ j μ j T = 1 2 ∑ i = 1 C p ( i ) μ i μ i T − p ( i ) μ i μ T − p ( i ) μ μ i T − p ( i ) ∑ j = 1 C p ( j ) μ j μ j T = 1 2 ∑ i = 1 C p ( i ) μ i μ i T − μ μ T − μ μ T − ∑ j = 1 C p ( j ) μ j μ j T = ∑ i = 1 C p ( i ) ( μ i μ i T − μ μ T ) = ∑ i = 1 C p ( i ) ( μ i μ i T − μ μ T ) + 2 ∑ i = 1 C p ( i ) μ μ T − ∑ i = 1 C p ( i ) μ i μ T − ∑ i = 1 C p ( i ) μ μ i T = ∑ i = 1 C p ( i ) ( μ i μ i T − μ i μ T − μ μ i T + μ μ T ) = ∑ i = 1 C p ( i ) ( μ i − μ ) ( μ i − μ ) T \begin{aligned} S_B&=\frac12 ∑_{i=1}^C∑_{j=1}^Cp(i)p(j)(μ_i-μ_j ) (μ_i-μ_j )^T \\ &=\frac12 ∑_{i=1}^C∑_{j=1}^Cp(i)p(j)(μ_i μ_i^T-μ_i μ_j^T-μ_j μ_i^T+μ_j μ_j^T ) \\ &=\frac12 ∑_{i=1}^C{p(i) μ_i μ_i^T ∑_{j=1}^Cp(j)-p(i) μ_i ∑_{j=1}^Cp(j)μ_j^T- p(i)(∑_{j=1}^Cp(j)μ_j)μ_i^T- p(i) ∑_{j=1}^Cp(j)μ_j μ_j^T }\\ &=\frac12 ∑_{i=1}^C{p(i) μ_i μ_i^T-p(i) μ_i μ^T-p(i)μμ_i^T-p(i) ∑_{j=1}^Cp(j)μ_j μ_j^T }\\ &=\frac12 {∑_{i=1}^Cp(i) μ_i μ_i^T-μμ^T-μμ^T -∑_{j=1}^Cp(j)μ_j μ_j^T}\\ &=∑_{i=1}^Cp(i) (μ_i μ_i^T-μμ^T) \\ &=∑_{i=1}^Cp(i) (μ_i μ_i^T-μμ^T)+2∑_{i=1}^Cp(i)μμ^T-∑_{i=1}^Cp(i) μ_i μ^T- ∑_{i=1}^Cp(i)μμ_i^T \\ &=∑_{i=1}^Cp(i) (μ_i μ_i^T-μ_i μ^T-μμ_i^T+μμ^T)\\ &=∑_{i=1}^Cp(i)(μ_i-μ) (μ_i-μ)^T \end{aligned} SB=21i=1Cj=1Cp(i)p(j)(μiμj)(μiμj)T=21i=1Cj=1Cp(i)p(j)(μiμiTμiμjTμjμiT+μjμjT)=21i=1Cp(i)μiμiTj=1Cp(j)p(i)μij=1Cp(j)μjTp(i)(j=1Cp(j)μj)μiTp(i)j=1Cp(j)μjμjT=21i=1Cp(i)μiμiTp(i)μiμTp(i)μμiTp(i)j=1Cp(j)μjμjT=21i=1Cp(i)μiμiTμμTμμTj=1Cp(j)μjμjT=i=1Cp(i)(μiμiTμμT)=i=1Cp(i)(μiμiTμμT)+2i=1Cp(i)μμTi=1Cp(i)μiμTi=1Cp(i)μμiT=i=1Cp(i)(μiμiTμiμTμμiT+μμT)=i=1Cp(i)(μiμ)(μiμ)T
即“类间散度矩阵”可表示为:
S B = ∑ i = 1 C p ( i ) ( μ i − μ ) ( μ i − μ ) T (11) S_B=∑_{i=1}^Cp(i)(μ_i-μ) (μ_i-μ)^T \tag{11} SB=i=1Cp(i)(μiμ)(μiμ)T(11)
同时也可以定义“总体散度矩阵” S T S_T ST,表示为:
S T = ∑ i = 1 C ∑ j = 1 M i p ( i , j ) ( x j ( i ) − μ ) ( x j ( i ) − μ ) T (12) S_T=∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)(x_j^{(i)}-μ) (x_j^{(i)}-μ)^T \tag{12} ST=i=1Cj=1Mip(i,j)(xj(i)μ)(xj(i)μ)T(12)
“类间散度矩阵”也可通过“总体散度矩阵”与“类内散度矩阵”的差值求出,即:
S B = S T − S W = ∑ i = 1 C ∑ j = 1 M i p ( i , j ) ( x j ( i ) − μ ) ( x j ( i ) − μ ) T − ∑ i = 1 C ∑ j = 1 M i p ( i , j ) ( x j ( i ) − μ i ) ( x j ( i ) − μ i ) T = ∑ i = 1 C ∑ j = 1 M i p ( i , j ) { ( x j ( i ) − μ ) ( x j ( i ) − μ ) T − ( x j ( i ) − μ i ) ( x j ( i ) − μ i ) T } = ∑ i = 1 C { − p ( i ) μ i μ T − p ( i ) μ μ i T + p ( i ) μ μ T + p ( i ) μ i μ i T } = ∑ i = 1 C p ( i ) ( μ i − μ ) ( μ i − μ ) T \begin{aligned} S_B&=S_T-S_W\\ &=∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)(x_j^{(i)}-μ) (x_j^{(i)}-μ)^T -∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)(x_j^{(i)}-μ_i ) (x_j^{(i)}-μ_i )^T \\ &=∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)\lbrace(x_j^{(i)}-μ) (x_j^{(i)}-μ)^T-(x_j^{(i)}-μ_i ) (x_j^{(i)}-μ_i )^T \rbrace \\ &=∑_{i=1}^C\lbrace -p(i)μ_i μ^T- p(i)μμ_i^T+p(i)μμ^T+p(i)μ_i μ_i^T\rbrace \\ &=∑_{i=1}^Cp(i)(μ_i-μ) (μ_i-μ)^T \end{aligned} SB=STSW=i=1Cj=1Mip(i,j)(xj(i)μ)(xj(i)μ)Ti=1Cj=1Mip(i,j)(xj(i)μi)(xj(i)μi)T=i=1Cj=1Mip(i,j){(xj(i)μ)(xj(i)μ)T(xj(i)μi)(xj(i)μi)T}=i=1C{p(i)μiμTp(i)μμiT+p(i)μμT+p(i)μiμiT}=i=1Cp(i)(μiμ)(μiμ)T
得到 S B S_B SB,进一步可以得到目标函数:
J = ∣ W T S B W ∣ ∣ W T S W W ∣ (13) J=\frac{|W^T S_B W|}{|W^T S_W W|} \tag{13} J=WTSWWWTSBW(13)
由于 S B , S T S_B,S_T SBST不是标量,因此在目标函数中使用它们的行列式. 类似于二类推导的式子,可以得出
S W − 1 S B W = λ W (14) S_W^{-1} S_B W=λW\tag{14} SW1SBW=λW(14)
计算 S W − 1 S B S_W^{-1} S_B SW1SB的最大的 d d d个特征值和对应的 d d d个特征向量 ( w 1 , w 2 , … , w d ) (w_1,w_2,…,w_d) (w1,w2,,wd),即可得到投影矩阵W.

总结一下LDA的实现过程:

1)计算每个类样本的均值向量 μ i μ_i μi和所有样本的均值向量 μ μ μ
2)计算类内散度矩阵 S W S_W SW和类间散度矩阵 S B S_B SB
3)计算 S W − 1 S B S_W^{-1} S_B SW1SB的特征向量 W ( w 1 , w 2 , … , w D ) W(w_1,w_2,…,w_D) W(w1,w2,,wD)和对应的特征值 λ ( λ 1 , λ 2 , … , λ D ) λ(λ_1,λ_2,…,λ_D) λ(λ1,λ2,,λD)
4)选择 d d d个最大特征值对应的矩阵 W m ∗ d W_{m*d} Wmd
5)对数据集 X X X进行降维,得到对应的降维数据集 Y = W T X Y=W^T X Y=WTX

等价模型

根据LDA的基本思想,即让不同类别的数据的类别中心之间的距离尽可能的大,同时希望同一种类别数据的投影点尽可能的接近,可以得到不同的优化函数,如:
J ( W ) = ∣ W T S B W ∣ ∣ W T S W W ∣ J(W)=\frac{|W^T S_B W|}{|W^T S_W W|} J(W)=WTSWWWTSBW
J ( W ) = ∣ W T S B W ∣ ∣ W T S T W ∣ J(W)=\frac{|W^T S_B W|}{|W^T S_T W|} J(W)=WTSTWWTSBW
J ( W ) = ∣ W T ( S B − S W ) W ∣ ∣ W T W ∣ J(W)=\frac{|W^T (S_B-S_W )W|}{|W^T W|} J(W)=WTWWT(SBSW)W
以上优化目标的目的都是一样的,为了最大化类间距离同时最小化类内距离,根据以上不同优化目标函数能够得到不同的LDA模型。

正则化

让模型泛化性能更高,防止模型过拟合。也可为了让 S W S_W SW一定可逆而加。
J ( W ) = ∣ W T S B W ∣ ∣ W T ( S W + λ I ) W ∣ J(W)=\frac{|W^T S_B W|}{|W^T (S_W+λI)W|} J(W)=WT(SW+λI)WWTSBW

比较fisherface和eigenface

在这里插入图片描述
LDA用于降维,和PCA有很多相同,也有很多不同的地方。

相同点:
  1. 两者均可以对数据进行降维。
  2. 两者在降维时均使用了矩阵特征分解的思想。
不同点:
  1. LDA是有监督的降维方法,而PCA是无监督的降维方法
  2. LDA降维最多降到类别数C-1的维数,而PCA没有这个限制。
  3. LDA除了可以用于降维,还可以用于分类。
  4. LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。
参考

1.机器学习-线性判别分析.周志华
2.线性判别分析(LDA)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值