降维之线性判别分析(LDA)

文章目录


LDA是一种有监督学习算法。
在PCA中,算法没有考虑数据的标签(类别),只是把数据映射到一些方差比较大的方向而已。

思想

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

μ 2 = 1 N 1 x C 2 x \mu_2 = \frac{1}{N_1}\sum_{x\in C_2 }x
(2) 目标
是希望投影后两类之间的距离尽可能大,每一类的方差小距离表示为:

D ( C 1 , C 2 ) = μ 1 ~ μ 2 ~ 2 2 D(C_1,C_2) = ||\widetilde{\mu_1}-\widetilde{\mu_2}||_2^2

其中 μ 1 ~ \widetilde{\mu_1} , μ 2 ~ \widetilde{\mu_2} 表示两类的中心在 ω \omega 方向上的投影向量

μ 1 ~ = w T μ 1 , μ 2 ~ = w T μ 2 \widetilde{\mu_1} = w^T\mu_1,\widetilde{\mu_2} = w^T\mu_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}
(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}
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

扫描二维码关注公众号,回复: 5572703 查看本文章

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
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}

在此,我们定义类间散度矩阵(各样本间的均方距离): S B = ( μ 1 μ 2 ) ( μ 1 μ 2 ) T S_B=(\mu_1-\mu_2)(\mu_1-\mu_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

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}

ω \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}

通过矩阵求导法则,可得出:
( 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

λ = J ( w ) = w T S B w w T S w w \lambda =J(w) = \frac{w^TS_Bw}{w^TS_ww}

整理得出:
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
于是LDA降维变成了求矩阵特征向量的问题,J(w)就对应了矩阵 S w 1 S B S_w^{-1}S_B 最大的特征值,投影方向为这个特征值对应的特征向量。

步骤

对于多类别标签高维数据的LDA步骤如下:

  • 计算数据集中每个类别样本均值向量uj,以及总体样本均值u;
  • 计算类内散度矩阵 S w , S_w,全局散度矩阵 S_t ,并得到类间散度矩阵 S_b= S_t-S_w$
  • 对于矩阵 S w 1 S b S_w^{-1}S_b 进行特征值分解,将特征值从大到小排列;
  • 取特征值前d大的对应特征向量 w 1 , . . . w d w_1,...w_d ,将n维样本映射到d维
    (3) x i = [ w 1 T x i w 2 T x i w d T x i ] x_i \prime = \left[ \begin{matrix} w_1^Tx_i \\ w_2^Tx_i\\ \cdots \\ w_d^Tx_i \end{matrix} \right] \tag{3}

输入:数据集 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))\} ,其中任意样本 x i x_i 为n维向量, y i { C 1 , C 2 , . . . , C k } y_i \in \{C_1,C_2,...,C_k\} ,降维到的维度d。

输出:降维后的样本集 D D′

1) 计算类内散度矩阵$S_w

2) 计算类间散度矩阵$S_b

3) 计算矩阵 S w 1 S b S_w^{-1}S_b

4)计算 S w 1 S b S_w^{-1}S_b 的最大的d个特征值和对应的d个特征向量 ( w 1 , w 2 , . . . w d ) (w_1,w_2,...w_d) ,得到投影矩阵WW

5) 对样本集中的每一个样本特征 x i x_i ,转化为新的样本 z i = W T x i z_i=W^Tx_i

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))\}

比较

相同点

1)两者均可以对数据进行降维。

2)两者在降维时均使用了矩阵特征分解的思想。

3)两者都假设数据符合高斯分布。

不同点

1)LDA是有监督的降维方法,而PCA是无监督的降维方法

2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。

3)LDA除了可以用于降维,还可以用于分类。

4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

猜你喜欢

转载自blog.csdn.net/qq1195365047/article/details/88619364