线性判别分析是一种降维方法
也是一种特征提取方法
线性判别分析是一个线性变换,也就是将原始数据乘以一个变换矩阵 W
其中
X
就是原始数据,
由上面的示意图就可以看出,实际上LDA就是致力于把数据投影到一个低维空间里面去,在这个低维空间里面,数据具有最大的可分性
公式的推导
设高维特征集
X=x1,x2,...,xn
,其中有
n1
个样本属于第一类
ω1
,
n2
个样本属于
ω2
,以此类推,设一共有
C
类,有
假设 m1,m2,...,mC 分别为变换前的每一类样本的均值向量
m 是变换前所有样本的均值向量
假设
则有:
μ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
了,
为什么LDA降维只能降到C-1维?
为什么求出来的
W
是
因为 S−1WSB 只有 C−1 个特征值。
观察 SB 的表达式可以发现,它由 C 个矩阵相加而成
因此它的秩小于等于这
观察这 C 个矩阵可以发现,他们都是由一个列向量乘以这个列向量的转置而得到的
这样的矩阵的秩小等于1
因此
而实际上,
因此因此
SB
的秩为
C−1
同理可得 SW 的秩为 C
因此
因此
而秩就代表了非零特征值的个数