PCA(主成成分分析)和LDA(线性判别分析)详解-共性和区别

注:这里说的LDA实际上讲的是Fisher linear discriminant analysis

在machine learning领域,PCA和LDA都可以看成是数据降维的一种方式。但是PCA是unsupervised,也就是说不需要知道sample对应的label,而LDA是supervised,需要知道每一个数据点对应的label。下面分别解释PCA和LDA的基本原理

1.PCA

PCA被广泛用于数据降维处理,在PRML书上写道,PCA有两种定义的方式,其中一种是将PCA定义为一种正交投影,使得原始数据在投影子空间的各个维度的方差最大化。下面我们就以这个定义来推导PCA。

考虑一组观测数据{ xn }, n=1,...,N ,其中 xn D 维向量,我们的目标就是把数据投影到一个更低的 M 维空间上,并且保证原始数据在这个子空间的各个方向上的方差最大化。

首先假设 M=1 ,也就是把所有数据投影到 D 维空间上的一条直线上。我们可以利用一个 D 维单位向量 u1 来表示这条直线。原始数据集 xn 的均值向量 x¯ 可以表示成

x¯=1Nn=1Nxn

那么投影之后的均值向量可以表示成 uT1x¯ ,投影之后的方差可以表示成
1Nn=1N{uT1xnuT1x¯}2=uT1Su1

其中 S 表示原始数据的协方差矩阵
S=1Nn=1N(xnx¯)(xnx¯)T

按照PCA的定义,下面我们需要最大化这个方差。这是一个典型的有约束优化问题,利用拉格朗日乘子法,假设乘子为 λ1 ,那么优化问题可以成为
maxu1 uT1Su1+(1uT1u1)

直接对 u1 求导,令导数等于0,得到
Su1=λ1u1   (1)

也就是说, u1 S λ1 特征值对应的特征向量。对于(1)式,等式两边同时乘上 uT1 ,可以得到原始数据在子空间的投影方向上的方差为
uT1Su1=λ1

要是方差最大,我们知道 λ1 就要是 S 的最大的特征值,同理, u1 就要是 S 的最大特征值对应的特征向量。

当我们把一维投影空间拓展到 M 维投影空间,原理都是一样的,比如如果是2维投影空间,那么在第二维投影方向上的方差就是第二大,同时要保证第二维投影向量 u2 u1 正交。

总的来说,如果要将原始 D 维数据投影到 M 维子空间当中,PCA的做法是计算原始数据的协方差矩阵 S ,然后求其前 M 大特征值对应的特征向量。当然,这里的 M 目前都是人工设定的。其实我们也可以自动设定,因为协方差矩阵的特征值实际上表示了各个维度包含的信息量(能量),所以我们可以选择能量百分比为95%(这个值随意选择)所确定的特征值对应的特征向量组成投影子空间。

2.LDA

LDA(这里指的是fisher’s linear discriminant)把线性分类看成是数据降维的一种应用。考虑一个二分类问题,假设输入 D 维向量 x ,我们通过线性变换将它投影到一维空间上:

y=wTx

如果我们对 y 设定一个阈值,令 yw0 的时候,判定为class1,否则判定为class2.那么这其实就是标准的线性分类器。为了能让我们的判定尽可能准确,我们需要让投影之间的两个类之间的差距尽可能大。现在仍旧考虑二分类问题,假设有 N1 C1 类别的点,有 N2 C2 类别的点,则两个类别的数据的均值分别为
m1=1N1nC1xn

m2=1N2nC2xn

最简单的分类方法,就是让投影之后的两个类别的均值相差越大越好。也就是说,我们需要选择一个投影方向(单位投影矢量 w ),使得下式最大
m2^m1^=wT(m2m1)

其中
mk^=wTmk

同时满足
wTw=1

这么一个约束优化问题和上面的PCA类似,解得结果可以得到
w(m2m1)

也就是说, w 是和两类数据中心点构成的矢量平行。如下面左图所示:

红色和蓝色分别表示两类数据,可以看到,尽管在投影方向 w 上,两类数据确实有分开,但是还存在很大程度上的交叠。Fisher提出的观点就是在让投影之后的数据尽量分开的同时,也要让两个数据的方差最小,最后变成右图所示的结果。

投影之后数据的类内方差表达式为

s2k=nCk(ynmk^)2

其中 yn 表示 xn 投影之后的值。我们可以定义总体的类内方差为 s21+s22 。Fisher判别准则定义为类间方差和类内方差的比值,也就是
J(w)=(m2^m1^)2s21+s22

w 的表达式代入得到
J(w)=wTSBwwTSww   (1)

其中 SB 表示类间协方差矩阵, Sw 表示类内协方差矩阵,也就是
SB=(m2m1)(m2m1)T   (2)

Sw=nC1(xnm1)(xnm1)T+nC2(xnm2)(xnm2)T

对(1)式求导,令导数等于0(为了方便,可以对(1)式两边先取对数,然后求导),可以得到
(wTSBw)Sww=(wTSww)SBw   (3)

从(2)式我们可以看到 SBw 是始终和 m2m1 平行的,同时我们并不在意 w 的大小,只在意它的方向,因此,我们可以把 wTSBw wTSww 直接去掉,然后再在(3)式两边同时乘上 S1w ,就可以得到
wS1w(m2m1)   (4)

(4)式表示的就是Fisher线性判别器。找到和合理的投影方向之后,我们可以通过极大似然的方法来估计最优的分类阈值。


所以PCA和LDA虽然都用到数据降维的思想,但是监督方式不一样,目的也不一样。PCA是为了去除原始数据集中冗余的维度,让投影子空间的各个维度的方差尽可能大,也就是熵尽可能大。LDA是通过数据降维找到那些具有discriminative的维度,使得原始数据在这些维度上的投影,不同类别尽可能区分开来。下面这张图一定程度上表示了PCA和LDA之间投影选择的差别。

你可能感兴趣的:(Machine,Learning,模式识别与机器学习研究)