机器学习: Linear Discriminant Analysis 线性判别分析

Linear discriminant analysis (LDA) 线性判别分析也是机器学习中常用的一种降维算法,与 PCA 相比,
LDA 是属于supervised 的一种降维算法。PCA考虑的是整个数据集在高维空间的分散性,PCA降维之后依然要让数据在低维空间尽可能地分散。而LDA考虑的是类与类之间的差别(用距离来衡量)。

我们考虑两类情况下的LDA,
给定一个训练集 D={xiRd},i=1,2,...N , 假设其中有 n1 个属于第一类 c1 n2 个属于第二类 c2 N=n1+n2 , LDA 希望可以找到一个投影关系,使得原来的特征向量 xi 投影到低维空间之后,类间的距离尽可能地大,而类内距离尽可能地小。

我们可以计算每一类的均值向量:

u1=1n1xc1xu2=1n2xc2x

假设投影为 w ,投影后为 y , 那么 y=wTx , 我们也可以求出投影后的均值:

v1=1n1yc1y=1n1xc1wTx=wTu1

v2=1n2yc2y=1n2xc2wTx=wTu2

那么,我们可以设立如下的目标函数:

J=|v1v2|=|wTu1wTu2|

上面的目标函数,保证了映射之后类间距离尽可能大,但是无法保证类内距离尽可能小,为了让类内距离尽可能小,我们可以进一步定义:

s21=yc1(yv1)2
s22=yc2(yv2)2

s21,s22 可以用来度量映射后每一类与类中心的分散程度。所以,最终的目标函数是:

J=|v1v2|2s21+s22

我们可以定义投影前的向量 x 与类中心的分散程度:

Si=xci(xui)(xui)T

SW=S1+S2

我们可以看到:

s2i=yci(yvi)2=xci(wTxwTui)2=wTSiw

s21+s22=wTSWw

同样的,我们有:

(v1v2)2=(wTu1wTu2)2=wT(u1u2)(u1u2)Tw=wTSBw

SB=(u1u2)(u1u2)T

所以最终的目标函数是:

J(w)=wTSBwwTSWw

最终得到的投影 w :

w=argmax[wTSBwwTSWw]=S1W(u1u2)

对于多类的LDA, 我们不能简单地将原来的向量 x 投影到一个标量 y ,我们需要投影到一个低维的向量 y 上。一个有 C 类的训练集 D={xRd} 含有 N 个样本, N=ni . 我们需要找到一个投影矩阵 W , 使得 y=WTx

我们可以先定义

Sw=i=1cSiSi=xci(xui)(xui)T

SB=i=1cNi(uiu)(uiu)Tu=1Nx

那么目标函数可以写成:

J(W)=|WTSBW||WTSWW|

最后的投影矩阵可以表示为: W=[w1,w2,...wk] , 其中 wi 满足如下关系:

SBwi=λiSWwiS1WSBwi=λiwi

wi 是矩阵 S1WSB 的特征向量, 所以简单来说,可以先对矩阵 S1WSB 做特征值分解,然后取前 k 个大的特征值所对应的特征向量,组成投影矩阵。但是由于 S_{B} 的秩不会超过 c1 ,所以 k 最大也就是 c1 ,取前面 k 个特征向量组成投影矩阵。对于两类的情况, c=2 , k=1 , 所以两类的情况下,LDA投影得到的是一个标量。

你可能感兴趣的:(机器学习)