注:这里说的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¯=1N∑n=1Nxn
那么投影之后的均值向量可以表示成
uT1x¯ ,投影之后的方差可以表示成
1N∑n=1N{uT1xn−uT1x¯}2=uT1Su1
其中
S 表示原始数据的协方差矩阵
S=1N∑n=1N(xn−x¯)(xn−x¯)T
按照PCA的定义,下面我们需要最大化这个方差。这是一个典型的有约束优化问题,利用拉格朗日乘子法,假设乘子为
λ1 ,那么优化问题可以成为
maxu1 uT1Su1+(1−uT1u1)
直接对
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 设定一个阈值,令
y⩾−w0 的时候,判定为class1,否则判定为class2.那么这其实就是标准的线性分类器。为了能让我们的判定尽可能准确,我们需要让投影之间的两个类之间的差距尽可能大。现在仍旧考虑二分类问题,假设有
N1 个
C1 类别的点,有
N2 个
C2 类别的点,则两个类别的数据的均值分别为
m1=1N1∑n∈C1xn
m2=1N2∑n∈C2xn
最简单的分类方法,就是让投影之后的两个类别的均值相差越大越好。也就是说,我们需要选择一个投影方向(单位投影矢量
w ),使得下式最大
m2^−m1^=wT(m2−m1)
其中
mk^=wTmk
同时满足
wTw=1
这么一个约束优化问题和上面的PCA类似,解得结果可以得到
w∝(m2−m1)
也就是说,
w 是和两类数据中心点构成的矢量平行。如下面左图所示:
红色和蓝色分别表示两类数据,可以看到,尽管在投影方向 w 上,两类数据确实有分开,但是还存在很大程度上的交叠。Fisher提出的观点就是在让投影之后的数据尽量分开的同时,也要让两个数据的方差最小,最后变成右图所示的结果。
投影之后数据的类内方差表达式为
s2k=∑n∈Ck(yn−mk^)2
其中
yn 表示
xn 投影之后的值。我们可以定义总体的类内方差为
s21+s22 。Fisher判别准则定义为类间方差和类内方差的比值,也就是
J(w)=(m2^−m1^)2s21+s22
把
w 的表达式代入得到
J(w)=wTSBwwTSww −−−(1)
其中
SB 表示类间协方差矩阵,
Sw 表示类内协方差矩阵,也就是
SB=(m2−m1)(m2−m1)T −−−(2)
Sw=∑n∈C1(xn−m1)(xn−m1)T+∑n∈C2(xn−m2)(xn−m2)T
对(1)式求导,令导数等于0(为了方便,可以对(1)式两边先取对数,然后求导),可以得到
(wTSBw)Sww=(wTSww)SBw −−−(3)
从(2)式我们可以看到
SBw 是始终和
m2−m1 平行的,同时我们并不在意
w 的大小,只在意它的方向,因此,我们可以把
wTSBw 和
wTSww 直接去掉,然后再在(3)式两边同时乘上
S−1w ,就可以得到
w∝S−1w(m2−m1) −−−(4)
(4)式表示的就是Fisher线性判别器。找到和合理的投影方向之后,我们可以通过极大似然的方法来估计最优的分类阈值。
所以PCA和LDA虽然都用到数据降维的思想,但是监督方式不一样,目的也不一样。PCA是为了去除原始数据集中冗余的维度,让投影子空间的各个维度的方差尽可能大,也就是熵尽可能大。LDA是通过数据降维找到那些具有discriminative的维度,使得原始数据在这些维度上的投影,不同类别尽可能区分开来。下面这张图一定程度上表示了PCA和LDA之间投影选择的差别。