线性判别分析LDA

线性判别分析是一种降维方法

也是一种特征提取方法

线性判别分析LDA

线性判别分析是一个线性变换,也就是将原始数据乘以一个变换矩阵W

Y=WTX

其中X就是原始数据,Y是变换后的数据,也就是降维后的矩阵

由上面的示意图就可以看出,实际上LDA就是致力于把数据投影到一个低维空间里面去,在这个低维空间里面,数据具有最大的可分性

公式的推导

设高维特征集 X=x1,x2,...,xn,其中有n1个样本属于第一类ω1n2个样本属于ω2,以此类推,设一共有C类,有nC个样本属于ωC,则存在一个变换矩阵W使得

Y=WTX

假设m1,m2,...,mC分别为变换前的每一类样本的均值向量

m是变换前所有样本的均值向量

假设μ1,μ2,...,μC分别为变换后的每一类样本的均值向量

则有:

μ1=WTm1,μ2=WTm2,...,μC=WTmC

总体均值也存在这样的关系:

μ=WTm

设类间散度描述如下:

J1=c=1Cncμcμ2     =c=1CncWTmcWTm2     =Tr(WTSBW)

其中SB=c=1Cnc(mcm)(mcm)T,这是变换前的数据的类间离散度矩阵

设类内离散度矩阵如下:

J2=J21+J22+...+J2C    =xω1WTxWTm12+...+xωCWTxWTmC2    =Tr(WTSWW)

其中SW=c=1Cxωc(xmc)(xmc)T,这个矩阵表示类内离散度矩阵

那么LDA实际上致力于使得变换后的数据具有最大可分性,因此它的模型如下:

maxWJ1J2=maxWTr(WTSBW)Tr(WTSWW)

可以转换为求解下面的特征方程:

SBW=λSWW

SW移到左边就可以发现,其实是求S1WSB的特征值和特征向量

将求出来的特征向量按序逐列排列,就得到W了,WC1

为什么LDA降维只能降到C-1维?

为什么求出来的WC1列的?

因为S1WSB只有C1个特征值。

观察SB的表达式可以发现,它由C个矩阵相加而成

因此它的秩小于等于这C个矩阵的秩之和

观察这C个矩阵可以发现,他们都是由一个列向量乘以这个列向量的转置而得到的

这样的矩阵的秩小等于1

因此SB的秩小等于C

而实际上,μkμ可以由其他C1μi线性表示
因此因此SB的秩为C1

同理可得SW的秩为C

因此S1W的秩也为C

因此S1WSB的秩为C1(因为两矩阵相乘的秩小于秩较小的那个矩阵的秩)

而秩就代表了非零特征值的个数