线性判别分析是一种降维方法
也是一种特征提取方法

线性判别分析是一个线性变换,也就是将原始数据乘以一个变换矩阵W
Y=WTX
其中X就是原始数据,Y是变换后的数据,也就是降维后的矩阵
由上面的示意图就可以看出,实际上LDA就是致力于把数据投影到一个低维空间里面去,在这个低维空间里面,数据具有最大的可分性
公式的推导
设高维特征集 X=x1,x2,...,xn,其中有n1个样本属于第一类ω1, n2个样本属于ω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=1Cnc∥WTmc−WTm∥2 =Tr(WTSBW)
其中SB=∑c=1Cnc(mc−m)(mc−m)T,这是变换前的数据的类间离散度矩阵
设类内离散度矩阵如下:
J2=J21+J22+...+J2C =∑x∈ω1∥WTx−WTm1∥2+...+∑x∈ωC∥WTx−WTmC∥2 =Tr(WTSWW)
其中SW=∑c=1C∑x∈ωc(x−mc)(x−mc)T,这个矩阵表示类内离散度矩阵
那么LDA实际上致力于使得变换后的数据具有最大可分性,因此它的模型如下:
maxWJ1J2=maxWTr(WTSBW)Tr(WTSWW)
可以转换为求解下面的特征方程:
SBW=λSWW
把SW移到左边就可以发现,其实是求S−1WSB的特征值和特征向量
将求出来的特征向量按序逐列排列,就得到W了,W有C−1列
为什么LDA降维只能降到C-1维?
为什么求出来的W是C−1列的?
因为S−1WSB只有C−1个特征值。
观察SB的表达式可以发现,它由C个矩阵相加而成
因此它的秩小于等于这C个矩阵的秩之和
观察这C个矩阵可以发现,他们都是由一个列向量乘以这个列向量的转置而得到的
这样的矩阵的秩小等于1
因此SB的秩小等于C
而实际上,μk−μ可以由其他C−1个μi线性表示
因此因此SB的秩为C−1
同理可得SW的秩为C
因此S−1W的秩也为C
因此S−1WSB的秩为C−1(因为两矩阵相乘的秩小于秩较小的那个矩阵的秩)
而秩就代表了非零特征值的个数