数据降维之LDA&PCA

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

线性判别分析(LDA)

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

我们从最简单的二分类问题入手。假设原始样本的特征维数只有二维(x1,x2),现在我们希望将二维特征用一维表示,也就是将二维平面上的点投影到一条直线上,如下图所示:

数据降维之LDA&PCA

从上图可以看出,右边直线在数据降维后的效果要比左边直线更优,因为它更加满足降维后的同类数据尽可能接近,异类数据尽可能远离的目标。LDA算法的目标就是找到这么一条直线。

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

y=wTx

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

欲使同类样本的投影点尽可能接近,可以让同类样本的投影点的协方差尽可能小;而欲使异类样本的投影点尽可能远离,可以让异类样本的类中心之间的距离尽可能大。令μii分别表示第i{0,1}原始样本的均值向量和协方差矩阵。
投影后的类中心可以表示为:

1NiwTx=wTμi

投影后的协方差可以表示为:

(wTxiwTμi)(wTxiwTμi)T=wT(xiμi)[wT(xiμi)]T=wT(xiμi)(xiμi)Tw=wTiw

因此欲达到上述目的,等价于最大化目标

(175)J=||wTμ0wTμ1||22wT0w+wT1w(176)=wT(μ0μ1)(μ0μ1)TwwT(0+1)w

定义“类内散度矩阵”

Sw=0+1=xX0(xμ0)(xμ0)T+xX1(xμ1)(xμ1)T

定义“类间散度矩阵”

Sb=(μ0μ1)(μ0μ1)T

则上面的目标函数可以重写为

J=wTSbwwTSww

因为分子分母都是关于w的二次型,若w是一个解,则对任意常数ααw也是一个解。因此解与w的长度无关,只与其方向有关。不妨令wTSww=1,则最优化目标等价于

(177)minwwTSbw(178)s.t.wTSww=1

引入拉格朗日乘子,上式等价于

(179)minc(w)=wTSbw+λ(wTSww1)

求导得

dcdw=2Sbw+2λSww

令其等于0,得

Sbw=λSww

如果Sw可逆,等式两边同乘Sw1

Sw1Sbw=λw

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

Sb=i=1Cmi(μiμ)(μiμ)T

“类内散度矩阵”的定义不变

Sw=xXi(xμi)(xμi)T

所以优化目标同样可以写成

maxWWTSbWWTSwW

由于现在分子分母都是矩阵,要将矩阵变成实数,可以取矩阵的行列式或者矩阵的迹。其中,矩阵的行列式等于矩阵特征值之积,矩阵的迹等于矩阵特征值之和。所以优化目标可以转化为:

maxWtr(WTSbW)tr(WTSwW)ormaxW|WTSbW||WTSwW|

可以通过如下广义特征值求解:

SbW=λSwW

W的解则是Sw1Sb的N-1个最大广义特征值所对应的特征向量按列组成的矩阵。

总结LDA算法流程如下:
输入:样本数据集D={xi,yi}i=1myi{C1,C2,...,CK}。降维到的维数d
输出:降维后的样本数据

  • 计算类内散度矩阵Sw
  • 计算类间散度矩阵Sw
  • 计算矩阵Sw1Sb
  • 计算矩阵Sw1Sb最大的d个特征值对应的特征向量,按列组成投影矩阵W
  • 对样本集中的每一个样本xi计算投影后的坐标,zi=WTxi

主成分分析(PCA)

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

(1102020011)

将这五个点表示在二维坐标系下如图所示:

数据降维之LDA&PCA

现在我们想将这五个点投影到一条直线上,可以看到无论是选择x轴还是y轴,都存在部分点投影后重合的情况,这不是我们想要的结果,因为这相当于损失了部分数据点的信息;如果选择过原点的一三象限对角线,投影后的五个点将不再会重合,这是我们想要的结果。总结来说,我们希望样本点在每一维上的投影点尽可能分散。这种分散程度可以用方差来度量。

数据降维之LDA&PCA

现在考虑多维情形,首先我们选择投影后方差最大的方向为第一个方向,接下来要进行其他方向的选择,显然不能继续选取方差最大的方向,因为这样选择的方向必将几乎和第一个方向重合。想想降维的目标:在信息不丢失的情况下,尽可能去除一些存在相关性的字段,方差最大已经保证了尽可能保留原始信息,那怎样才能去除存在相关性的字段呢?反过来就是,我们希望降维后的各字段都不存在相关性,而协方差正是用来度量两个随机变量相关性的参数,协方差为0的两个随机变量称为不相关。
至此我们得到了PCA的目标:将一组n维向量降为k维(0<k<n),其目标是选择k个单位正交基,使得原始数据在变换到这组基上后,各字段两两协方差为0,而各字段的方差尽可能大。
那怎么用数学方法来表示我们的优化目标呢?设我们有mn维样本数据(已经过均值化为0处理),将其按列排成nm的矩阵X

X=(a1a2a3a4a5b1b2b3b4b5)

C=1mXXT

C=(1mi=1mai21mi=1maibi1mi=1mbiai1mi=1mbi2)

可以发现C是一个对称矩阵,其对角线上的元素就是各字段的方差,第ij列的元素和第ji列的元素相同,表示ij两个字段的协方差。现在我们可喜的发现,需要优化的目标已经统一到一个矩阵中,这个矩阵称为协方差矩阵。因此我们希望降维后的数据点的协方差矩阵是对角矩阵并取前k大的。
设原始样本数据形成的矩阵为X
则原始样本数据形成的协矩阵为C=1mXXT
W是一组正交基(w1,w2,...,wk)按列形成的矩阵
则降维后的数据点形成的矩阵为Y=WTX
则降维后的数据点形成的协矩阵为

(232)D=1mYYT(233)=1mWTX(WTX)T(234)=1mWTXXTW(235)=WTCW

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

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

因此一个nn列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为e1,22,...,en,将其按列组成矩阵:

E=(e1,22,...,en)

则对协方差矩阵C有如下结论:

ETCE=Λ=(λ1λn)

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

PCA算法步骤总结如下:

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

参考文献

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

相关文章: