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 , 那么 y=wTx , 我们也可以求出投影后的均值:
那么,我们可以设立如下的目标函数:
上面的目标函数,保证了映射之后类间距离尽可能大,但是无法保证类内距离尽可能小,为了让类内距离尽可能小,我们可以进一步定义:
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 类的训练集 D={x∈Rd} 含有 N 个样本, N=∑ni . 我们需要找到一个投影矩阵 W , 使得 y=WTx 。
我们可以先定义
那么目标函数可以写成:
最后的投影矩阵可以表示为: W=[w1,w2,...wk] , 其中 wi 满足如下关系:
wi 是矩阵 S−1WSB 的特征向量, 所以简单来说,可以先对矩阵 S−1WSB 做特征值分解,然后取前 k 个大的特征值所对应的特征向量,组成投影矩阵。但是由于 S_{B} 的秩不会超过 c−1 ,所以 k 最大也就是 c−1 ,取前面 k 个特征向量组成投影矩阵。对于两类的情况, c=2 , k=1 , 所以两类的情况下,LDA投影得到的是一个标量。