注:这里说的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,...,Nn=1,...,N,其中xn是 D 维向量,我们的目标就是把数据投影到一个更低的M维空间上,并且保证原始数据在这个子空间的各个方向上的方差最大化。
首先假设M=1,也就是把所有数据投影到D维空间上的一条直线上。我们可以利用一个D维单位向量u1来表示这条直线。原始数据集的均值向量 可以表示成
那么投影之后的均值向量可以表示成 ,投影之后的方差可以表示成
其中 S表示原始数据的协方差矩阵
按照PCA的定义,下面我们需要最大化这个方差。这是一个典型的有约束优化问题,利用拉格朗日乘子法,假设乘子为 λ1,那么优化问题可以成为
直接对 u1求导,令导数等于0,得到
也就是说,u1是S中 λ1特征值对应的特征向量。对于(1)式,等式两边同时乘上,可以得到原始数据在子空间的投影方向上的方差为
要是方差最大,我们知道 λ1就要是S的最大的特征值,同理,u1就要是SS的最大特征值对应的特征向量。
当我们把一维投影空间拓展到M维投影空间,原理都是一样的,比如如果是2维投影空间,那么在第二维投影方向上的方差就是第二大,同时要保证第二维投影向量u2和u1正交。
总的来说,如果要将原始D维数据投影到M维子空间当中,PCA的做法是计算原始数据的协方差矩阵SS,然后求其前MM大特征值对应的特征向量。当然,这里的MM目前都是人工设定的。其实我们也可以自动设定,因为协方差矩阵的特征值实际上表示了各个维度包含的信息量(能量),所以我们可以选择能量百分比为95%(这个值随意选择)所确定的特征值对应的特征向量组成投影子空间。
2. LDA
(这里指的是fisher’s linear discriminant)把线性分类看成是数据降维的一种应用。考虑一个二分类问题,假设输入D维向量x,我们通过线性变换将它投影到一维空间上:
如果我们对y设定一个阈值,令的时候,判定为class1,否则判定为class2.那么这其实就是标准的线性分类器。为了能让我们的判定尽可能准确,我们需要让投影之间的两个类之间的差距尽可能大。现在仍旧考虑二分类问题,假设有N1个C1类别的点,有N2个C2C2类别的点,则两个类别的数据的均值分别为 m1、m2。
最简单的分类方法,就是让投影之后的两个类别的均值相差越大越好。也就是说,我们需要选择一个投影方向(单位投影矢量ww),使得下式最大
其中
同时满足
这么一个约束优化问题和上面的PCA类似,解得结果可以得到
也就是说,w是和两类数据中心点构成的矢量平行。如下面左图所示:
红色和蓝色分别表示两类数据,可以看到,尽管在投影方向w上,两类数据确实有分开,但是还存在很大程度上的交叠。Fisher提出的观点就是在让投影之后的数据尽量分开的同时,也要让两个数据的方差最小,最后变成右图所示的结果。
投影之后数据的类内方差表达式为
其中yn表示xn投影之后的值。我们可以定义总体的类内方差为 。Fisher判别准则定义为类间方差和类内方差的比值,也就是
把w的表达式代入得到
(1)
其中表示类间协方差矩阵,表示类内协方差矩阵,也就是
(2)
对(1)式求导,令导数等于0(为了方便,可以对(1)式两边先取对数,然后求导),可以得到
(3)
从(2)式我们可以看到是始终和 平行的,同时我们并不在意 w的大小,只在意它的方向,因此,我们可以把 和 直接去掉,然后再在(3)式两边同时乘上 ,就可以得到
(4)
(4)式表示的就是Fisher线性判别器。找到和合理的投影方向之后,我们可以通过极大似然的方法来估计最优的分类阈值。
所以PCA和LDA虽然都用到数据降维的思想,但是监督方式不一样,目的也不一样。PCA是为了去除原始数据集中冗余的维度,让投影子空间的各个维度的方差尽可能大,也就是熵尽可能大。LDA是通过数据降维找到那些具有discriminative的维度,使得原始数据在这些维度上的投影,不同类别尽可能区分开来。下面这张图一定程度上表示了PCA和LDA之间投影选择的差别。