数据降维之LDA&PCA

数据降维之LDA&PCA

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

线性判别分析(LDA)

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

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

数据降维之LDA&PCA_第1张图片

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

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

y=wTx y = w T x

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

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

1NiwTx=wTμi 1 N i ∑ w T x = w T μ i

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

(wTxiwTμi)(wTxiwTμi)T=wT(xiμi)[wT(xiμi)]T=wT(xiμi)(xiμi)Tw=wTiw ( 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

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

J==||wTμ0wTμ1||22wT0w+wT1wwT(μ0μ1)(μ0μ1)TwwT(0+1)w(175)(176) (175) J = | | w T μ 0 − w T μ 1 | | 2 2 w T ∑ 0 w + w T ∑ 1 w (176) = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( ∑ 0 + ∑ 1 ) w

定义“类内散度矩阵”

Sw=0+1=xX0(xμ0)(xμ0)T+xX1(xμ1)(xμ1)T S w = ∑ 0 + ∑ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T

定义“类间散度矩阵”

Sb=(μ0μ1)(μ0μ1)T S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T

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

J=wTSbwwTSww J = w T S b w w T S w w

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

minws.t.wTSbwwTSww=1(177)(178) (177) min w − w T S b w (178) s . t . w T S w w = 1

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

minc(w)=wTSbw+λ(wTSww1)(179) (179) min c ( w ) = − w T S b w + λ ( w T S w w − 1 )

求导得

dcdw=2Sbw+2λSww d c d w = − 2 S b w + 2 λ S w w

令其等于0,得

Sbw=λSww S b w = λ S w w

如果 Sw S w 可逆,等式两边同乘 S1w S w − 1

S1wSbw=λw S w − 1 S b w = λ w

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

Sb=i=1Cmi(μiμ)(μiμ)T S b = ∑ i = 1 C m i ( μ i − μ ) ( μ i − μ ) T

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

Sw=xXi(xμi)(xμi)T S w = ∑ x ∈ X i ( x − μ i ) ( x − μ i ) T

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

maxWWTSbWWTSwW max W W T S b W W T S w W

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

maxWtr(WTSbW)tr(WTSwW)ormaxW|WTSbW||WTSwW| 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 |

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

SbW=λSwW S b W = λ S w W

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

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

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

主成分分析(PCA)

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

(1210002101) ( − 1 − 1 0 2 0 − 2 0 0 1 1 )

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

数据降维之LDA&PCA_第2张图片

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

数据降维之LDA&PCA_第3张图片

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

X=(a1b1a2b2a3b3a4b4a5b5) X = ( a 1 a 2 a 3 a 4 a 5 b 1 b 2 b 3 b 4 b 5 )

C=1mXXT C = 1 m X X T

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

D====1mYYT1mWTX(WTX)T1mWTXXTWWTCW(232)(233)(234)(235) (232) D = 1 m Y Y T (233) = 1 m W T X ( W T X ) T (234) = 1 m W T X X T W (235) = W T C W

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

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

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

E=(e1,22,...,en) E = ( e 1 , 2 2 , . . . , e n )

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

ETCE=Λ=λ1λn E T C E = Λ = ( λ 1 ⋱ λ n )

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

PCA算法步骤总结如下:

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

参考文献

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

你可能感兴趣的:(机器学习)