Linear discriminant analysis (LDA) 线性判别分析也是机器学习中常用的一种降维算法,与 PCA 相比,
LDA 是属于supervised 的一种降维算法。PCA考虑的是整个数据集在高维空间的分散性,PCA降维之后依然要让数据在低维空间尽可能地分散。而LDA考虑的是类与类之间的差别(用距离来衡量)。
我们考虑两类情况下的LDA,
给定一个训练集
D={xi∈Rd},i=1,2,...N
, 假设其中有
n1
个属于第一类
c1
,
n2
个属于第二类
c2
,
N=n1+n2
, LDA 希望可以找到一个投影关系,使得原来的特征向量
xi
投影到低维空间之后,类间的距离尽可能地大,而类内距离尽可能地小。
我们可以计算每一类的均值向量:
假设投影为
w
,投影后为
y
, 那么
那么,我们可以设立如下的目标函数:
上面的目标函数,保证了映射之后类间距离尽可能大,但是无法保证类内距离尽可能小,为了让类内距离尽可能小,我们可以进一步定义:
s21=∑y∈c1(y−v1)2
s22=∑y∈c2(y−v2)2
s21,s22 可以用来度量映射后每一类与类中心的分散程度。所以,最终的目标函数是:
我们可以定义投影前的向量 x 与类中心的分散程度:
Si=∑x∈ci(x−ui)(x−ui)T
SW=S1+S2
我们可以看到:
同样的,我们有:
所以最终的目标函数是:
最终得到的投影 w⋆ :
对于多类的LDA, 我们不能简单地将原来的向量
x
投影到一个标量
y
,我们需要投影到一个低维的向量
y
上。一个有
C
类的训练集
我们可以先定义
那么目标函数可以写成:
最后的投影矩阵可以表示为: W=[w1,w2,...wk] , 其中 wi 满足如下关系:
wi
是矩阵
S−1WSB
的特征向量, 所以简单来说,可以先对矩阵
S−1WSB
做特征值分解,然后取前
k
个大的特征值所对应的特征向量,组成投影矩阵。但是由于 S_{B} 的秩不会超过