数据降维之LDA&PCA

我们都知道机器学习算法的性能受到样本数据的特征维数的影响,特征维数越多,需要的训练数据也越大,机器学习算法所消耗的时间也越多,甚至成指数爆炸增长。同时过多的特征维数之间也可能存在相互关联的特征和一些噪声。因此,在训练机器学习算法之前,通常我们会对样本数据进行预处理,数据降维就是通常需要完成的一步。

线性判别分析(LDA)

线性判别分析属于有监督学习算法,也就是对于每一个给定的n维样本 x ( i ) ( x 1 ( i ) , x 2 ( i ) , . . . , x n ( i ) ) x^{(i)}(x^{(i)}_1,x^{(i)}_2,...,x^{(i)}_n) x(i)(x1(i),x2(i),...,xn(i))都有一个与之对应的期望值或者类别标签 y ( i ) y^{(i)} y(i)。LDA的思想非常朴素:将带上标签数据(点),通过投影(变换)的方法,投影更低维的空间。在这个低维空间中,同类样本尽可能接近,异类样本尽可能远离。

我们从最简单的二分类问题入手。假设原始样本的特征维数只有二维( x 1 , x 2 x_1,x_2 x1,x2),现在我们希望将二维特征用一维表示,也就是将二维平面上的点投影到一条直线上,如下图所示:
在这里插入图片描述
从上图可以看出,右边直线在数据降维后的效果要比左边直线更优,因为它更加满足降维后的同类数据尽可能接近,异类数据尽可能远离的目标。LDA算法的目标就是找到这么一条直线。

我们知道矩阵的本质是一个线性映射。因此对于二分类问题,原始二维平面点经过映射后的可以表示成:
y = w T x y=w^Tx y=wTx

其中 w w w为投影矩阵,当投影到一维直线时,这个矩阵退化为一个列向量; y y y表示 x x x投影到直线后的点到原点的距离。

欲使同类样本的投影点尽可能接近,可以让同类样本的投影点的协方差尽可能小;而欲使异类样本的投影点尽可能远离,可以让异类样本的类中心之间的距离尽可能大。令 μ i \mu_i μi ∑ i \sum_i i分别表示第 i ∈ { 0 , 1 } i\in\{0,1\} i{0,1}原始样本的均值向量和协方差矩阵。
投影后的类中心可以表示为:
1 N i ∑ w T x = w T μ i \frac{1}{N_i}\sum w^Tx=w^T\mu_i Ni1wTx=wTμi

投影后的协方差可以表示为:
( w T x i − w T μ i ) ( w T x i − w T μ i ) T = w T ( x i − μ i ) [ w T ( x i − μ i ) ] T = w T ( x i − μ i ) ( x i − μ i ) T w = w T ∑ i w \begin{aligned} &(w^Tx_i-w^T\mu_i)(w^Tx_i-w^T\mu_i)^T\\ =& w^T(x_i-\mu_i)[w^T(x_i-\mu_i)]^T\\ =& w^T(x_i-\mu_i)(x_i-\mu_i)^Tw\\ =& w^T\sum_iw \end{aligned} ===(wTxiwTμi)(wTxiwTμi)TwT(xiμi)[wT(xiμi)]TwT(xiμi)(xiμi)TwwTiw

因此欲达到上述目的,等价于最大化目标
J = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T ∑ 0 w + w T ∑ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( ∑ 0 + ∑ 1 ) w \begin{aligned} J=& \frac{||w^T\mu_0-w^T\mu_1||^2_2}{w^T\sum_0w+w^T\sum_1w}\\ =&\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\sum_0+\sum_1)w} \end{aligned} J==wT0w+wT1wwTμ0wTμ122wT(0+1)wwT(μ0μ1)(μ0μ1)Tw

定义“类内散度矩阵”
S w = ∑ 0 + ∑ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T S_w={\sum}_0+{\sum}_1=\sum_{x\in X_0}(x-\mu_0)(x-\mu_0)^T+\sum_{x\in X_1}(x-\mu_1)(x-\mu_1)^T Sw=0+1=xX0(xμ0)(xμ0)T+xX1(xμ1)(xμ1)T

定义“类间散度矩阵”
S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0μ1)(μ0μ1)T

则上面的目标函数可以重写为
J = w T S b w w T S w w J=\frac{w^TS_bw}{w^TS_ww} J=wTSwwwTSbw

因为分子分母都是关于 w w w的二次型,若 w w w是一个解,则对任意常数 α \alpha α α w \alpha w αw也是一个解。因此解与 w w w的长度无关,只与其方向有关。不妨令 w T S w w = 1 w^TS_ww=1 wTSww=1,则最优化目标等价于
min ⁡ w − w T S b w s . t . w T S w w = 1 \begin{aligned} \min_w\quad& -w^TS_bw\\ s.t. \quad& w^TS_ww=1 \end{aligned} wmins.t.wTSbwwTSww=1

引入拉格朗日乘子,上式等价于
min ⁡ c ( w ) = − w T S b w + λ ( w T S w w − 1 ) \begin{aligned} &\min& c(w)=-w^TS_bw+\lambda(w^TS_ww-1) \end{aligned} minc(w)=wTSbw+λ(wTSww1)

求导得
d c d w = − 2 S b w + 2 λ S w w \frac{dc}{dw}=-2S_bw+2\lambda S_ww dwdc=2Sbw+2λSww

令其等于0,得
S b w = λ S w w S_bw=\lambda S_ww Sbw=λSww

如果 S w S_w Sw可逆,等式两边同乘 S w − 1 S_w^{-1} Sw1
S w − 1 S b w = λ w S_w^{-1}S_bw=\lambda w Sw1Sbw=λw

可喜的发现 w w w就是矩阵 S w − 1 S b S_w^{-1}S_b Sw1Sb的特征向量,因此求解问题转化成求矩阵特征值问题上了,首先求出 S w − 1 S b S_w^{-1}S_b Sw1Sb的特征值,然后取前K个特征向量按列组成 w w w矩阵即可。
可以将二分类任务推广到多分类任务中,这时不再是将样本点投影到一条直线上,而是投影到一个 d d d维超平面上。此时的基向量 ( w 1 , w 2 , . . . , w d ) (w_1,w_2,...,w_d) (w1,w2,...,wd)按列构成了投影矩阵。假定存在C个类别,且第 i i i类样本数为 m i m_i mi,前面二分类问题中定义的“类间散度矩阵”需要重新定义为每类样本中心相对于全局样本中心点的散列情况。
所以 S b S_b Sb表示如下:
S b = ∑ i = 1 C m i ( μ i − μ ) ( μ i − μ ) T S_b=\sum_{i=1}^C m_i(\mu_i-\mu)(\mu_i-\mu)^T Sb=i=1Cmi(μiμ)(μiμ)T

“类内散度矩阵”的定义不变
S w = ∑ x ∈ X i ( x − μ i ) ( x − μ i ) T S_w=\sum_{x\in X_i}(x-\mu_i)(x-\mu_i)^T Sw=xXi(xμi)(xμi)T

所以优化目标同样可以写成
max ⁡ W W T S b W W T S w W \max_W \frac{W^TS_bW}{W^TS_wW} WmaxWTSwWWTSbW

由于现在分子分母都是矩阵,要将矩阵变成实数,可以取矩阵的行列式或者矩阵的迹。其中,矩阵的行列式等于矩阵特征值之积,矩阵的迹等于矩阵特征值之和。所以优化目标可以转化为:
max ⁡ W t r ( W T S b W ) t r ( W T S w W ) o r max ⁡ W ∣ W T S b W ∣ ∣ W T S w W ∣ \max_W \frac{tr(W^TS_bW)}{tr(W^TS_wW)}\\ or\\ \max_W \frac{|W^TS_bW|}{|W^TS_wW|} Wmaxtr(WTSwW)tr(WTSbW)orWmaxWTSwWWTSbW

可以通过如下广义特征值求解:
S b W = λ S w W S_bW=\lambda S_wW SbW=λSwW

W的解则是 S w − 1 S b S_w^{-1}S_b Sw1Sb的N-1个最大广义特征值所对应的特征向量按列组成的矩阵。

总结LDA算法流程如下:
输入:样本数据集D= { x i , y i } i = 1 m \{x_i,y_i\}_{i=1}^m {xi,yi}i=1m y i ∈ { C 1 , C 2 , . . . , C K } y_i\in\{C_1,C_2,...,C_K\} yi{C1,C2,...,CK}。降维到的维数 d d d
输出:降维后的样本数据

  • 计算类内散度矩阵 S w S_w Sw
  • 计算类间散度矩阵 S w S_w Sw
  • 计算矩阵 S w − 1 S b S_w^{-1}S_b Sw1Sb
  • 计算矩阵 S w − 1 S b S_w^{-1}S_b Sw1Sb最大的 d d d个特征值对应的特征向量,按列组成投影矩阵 W W W
  • 对样本集中的每一个样本 x i x_i xi计算投影后的坐标, z i = W T x i z_i=W^Tx_i zi=WTxi

主成分分析(PCA)

主成分分析(PCA)是另一种常用的数据降维方法,它属于无监督学习算法,即在算法训练时,我们不需要知道样本对应的类别。
同样的,我们从将二维数据降维到一维入手。假设现在我们有五条样本数据如下(已经过均值化为0处理):
( − 1 − 1 0 2 0 − 2 0 0 1 1 ) \left( \begin{matrix} -1 & -1 & 0 & 2 & 0\\ -2 & 0 & 0 & 1 & 1 \end{matrix} \right) (1210002101)

将这五个点表示在二维坐标系下如图所示:
在这里插入图片描述
现在我们想将这五个点投影到一条直线上,可以看到无论是选择 x x x轴还是 y y y轴,都存在部分点投影后重合的情况,这不是我们想要的结果,因为这相当于损失了部分数据点的信息;如果选择过原点的一三象限对角线,投影后的五个点将不再会重合,这是我们想要的结果。总结来说,我们希望样本点在每一维上的投影点尽可能分散。这种分散程度可以用方差来度量。
在这里插入图片描述
现在考虑多维情形,首先我们选择投影后方差最大的方向为第一个方向,接下来要进行其他方向的选择,显然不能继续选取方差最大的方向,因为这样选择的方向必将几乎和第一个方向重合。想想降维的目标:在信息不丢失的情况下,尽可能去除一些存在相关性的字段,方差最大已经保证了尽可能保留原始信息,那怎样才能去除存在相关性的字段呢?反过来就是,我们希望降维后的各字段都不存在相关性,而协方差正是用来度量两个随机变量相关性的参数,协方差为0的两个随机变量称为不相关。
至此我们得到了PCA的目标:将一组 n n n维向量降为 k k k维( 0 < k < n 0<k<n 0<k<n),其目标是选择 k k k个单位正交基,使得原始数据在变换到这组基上后,各字段两两协方差为0,而各字段的方差尽可能大。
那怎么用数学方法来表示我们的优化目标呢?设我们有 m m m n n n维样本数据(已经过均值化为0处理),将其按列排成 n ∗ m n*m nm的矩阵 X X X
X = ( a 1 a 2 a 3 a 4 a 5 b 1 b 2 b 3 b 4 b 5 ) X= \left( \begin{matrix} a_1 & a_2 & a_3 & a_4 & a_5\\ b_1 & b_2 & b_3 & b_4 & b_5 \end{matrix} \right) X=(a1b1a2b2a3b3a4b4a5b5)

C = 1 m X X T C=\frac {1}{m}XX^T C=m1XXT
C = ( 1 m ∑ i = 1 m a i 2 1 m ∑ i = 1 m a i b i 1 m ∑ i = 1 m b i a i 1 m ∑ i = 1 m b i 2 ) C= \left( \begin{matrix} \frac{1}{m}\sum_{i=1}^ma_i^2 & \frac{1}{m}\sum_{i=1}^ma_ib_i \\ \frac{1}{m}\sum_{i=1}^mb_ia_i & \frac{1}{m}\sum_{i=1}^mb_i^2 \end{matrix} \right) C=(m1i=1mai2m1i=1mbiaim1i=1maibim1i=1mbi2)

可以发现C是一个对称矩阵,其对角线上的元素就是各字段的方差,第 i i i j j j列的元素和第 j j j i i i列的元素相同,表示 i i i j j j两个字段的协方差。现在我们可喜的发现,需要优化的目标已经统一到一个矩阵中,这个矩阵称为协方差矩阵。因此我们希望降维后的数据点的协方差矩阵是对角矩阵并取前 k k k大的。
设原始样本数据形成的矩阵为 X X X
则原始样本数据形成的协矩阵为 C = 1 m X X T C=\frac {1}{m}XX^T C=m1XXT
W W W是一组正交基 ( w 1 , w 2 , . . . , w k ) (w_1,w_2,...,w_k) (w1,w2,...,wk)按列形成的矩阵
则降维后的数据点形成的矩阵为 Y = W T X Y=W^TX Y=WTX
则降维后的数据点形成的协矩阵为
D = 1 m Y Y T = 1 m W T X ( W T X ) T = 1 m W T X X T W = W T C W \begin{aligned} D=&\frac{1}{m}YY^T\\ =&\frac{1}{m}W^TX(W^TX)^T\\ =&\frac{1}{m}W^TXX^TW\\ =&W^TCW \end{aligned} D====m1YYTm1WTX(WTX)Tm1WTXXTWWTCW

因此,优化目标变为寻找一个矩阵 W W W,满足 W T C W W^TCW WTCW是对角矩阵。
由上文知,原始数据矩阵的协方差矩阵 C C C是一个对称矩阵,因此具有如下两条性质:

  • 实对称矩阵不同特征值对应的特征向量必然正交
  • 设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应λ,因此可以将这r个特征向量单位正交化

因此一个 n n n n n n列的实对称矩阵一定可以找到 n n n个单位正交特征向量,设这n个特征向量为 e 1 , 2 2 , . . . , e n e_1,2_2,...,e_n e1,22,...,en,将其按列组成矩阵:
E = ( e 1 , 2 2 , . . . , e n ) E=(e_1,2_2,...,e_n) E=(e1,22,...,en)
则对协方差矩阵 C C C有如下结论:

E T C E = Λ = ( λ 1 ⋱ λ n ) E^TCE=\Lambda= \left( \begin{matrix} \lambda_1 & &\\ & \ddots &\\ && \lambda_n \end{matrix} \right) ETCE=Λ=λ1λn

所以我们要找的 W W W就是原始数据矩阵的协方差矩阵 C C C的前 K K K大的特征值对应的特征向量按列组成的矩阵。

PCA算法步骤总结如下:

  • 将原始样本数据按列排成矩阵 X X X
  • X X X的每一行(代表一个属性字段)进行0均值化处理。
  • 求出协方差矩阵 C = 1 m X X T C=\frac {1}{m}XX^T C=m1XXT的特征值及对应的特征向量。
  • 将特征向量对应特征值从大到小按列排列,取前 k k k列组成矩阵 W W W
  • Y = W T X Y=W^TX Y=WTX即为降维后的数据。

参考文献

线性判别分析(Linear Discriminant Analysis)
线性判别分析LDA原理总结
PCA的数学原理

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值