LDA算法目的
最小化类内方差,最大化不同类中心间的距离。
LDA算法推导过程
假设:
样本共
K类,每一类的样本个数为
N1,N2,……,Nk。
x11,x12,……,x1N1对应第一类
……
xK1,xK2,……,x1NK对应第
K类
以上所有
xij皆为
n维向量。
设
x~ij为
xij变化后的样本,即:
x~ij=<x,u>u=(xTu)u
类内方差
第
k类之间的样本方差为:
Sk=Nk1x~∈Dk∑(x~−m~)T(x~−m~)
其中,
Dk为由第
k类样本所构成的空间。
m~为变化后的第
k类样本的均值,即:
m~=Nkx~∈Dk∑x~
故
m~也是
n维向量。
将
x~ij=(xTu)u代入
Sk得:
Sk=Nk1x∈Dk∑[(xTu)uT−(mTu)uT][(xTu)u−(mTu)u]
=Nk1x∈Dk∑[(xTu)2uTu−2(xTu)(mTu)uTu+(mTu)2uTu]
假设
uTu=a(a为一常数)。
则:
Sk=Nkax∈Dk∑[(xTu)2−2(xTu)(mTu)+(mTu)2]
=Nkax∈Dk∑(xTu)2−2Nkax∈Dk∑xT(umTu)+Nkax∈Dk∑(mTu)2
=Nkax∈Dk∑uTxxTu−2Nkax∈Dk∑xTumTu+a(mTu)2
=uTNkax∈Dk∑xxTu−a(mTu)2
=uTNkax∈Dk∑xxTu−auTmmTu
=auT(Nkx∈Dk∑xxT−mmT)u
所以
K类样本的总方差为:
k=1∑KSk=k=1∑KauT(Nkx∈Dk∑xxT−mmT)u
令
Sw=k=1∑K(Nkx∈Dk∑xxT−mmT)
则:
k=1∑KSk=auTSwu
此为总类内方差。
不同类中心间的距离
设
Si,j为第
i类和第
j类中心间的距离,则:
Si,j=(m~i−m~j)T(m~i−m~j)
将
m~=(mTu)u代入得:
Si,j=[(miTu)uT−(mjTu)uT][(miTu)u−(mjTu)u]
=uT[(miTu)−(mjTu)][(miTu)−(mjTu)]u
=uT[(miTu)−(mjTu)][(uTmi)−(uTmj)]u
=uT(miT−mjT)uuT(mi−mj)u
=uT(mi−mj)Ta(mi−mj)u
=auT(mi−mj)T(mi−mj)u
所以对于全部
K类样本来说,
i=ji,j∑Si,j=auTi=ji,j∑(mi−mj)T(mi−mj)u
令
Sb=i=ji,j∑(mi−mj)T(mi−mj),则:
i=ji,j∑Si,j=auTSbu
LDA算法的目的即将
k=1∑KSk最小化,将
i=ji,j∑Si,j最大化。
设需要优化的函数为:
J(u)=uTSwuuTSbu
因为
u只对方向有要求而对大小没有限制,故可以假设
uTSwu=1,然后保证
uTSbu最大化。
即此问题可以被转化为最优化问题:
maxuTSbus.t.uTSwu=1
引入拉格朗日函数,
L(u,λ)=uTSbu+λ(1−uTSwu)
令
∂u∂L=0,得
Sbu=λSwu
因为
Sw=k=1∑K(Nkx∈Dk∑xxT−mmT),而
Nkx∈Dk∑xxT−mmT实质上为
k类样本的协方差矩阵,通常为正定的,求和后更加正定。故
Sw一般是可逆的。
故可得:
Sw−1Sbu=λu
令
T=Sw−1Sb,则上式转化为:
Tu=λu
求出
T的特征值和特征向量,从而得到
u的最好方向。
PCA和LDA的区别
PCA最小重构误差,使得投影后的值和原来的值尽量接近,属于非监督学习,用来解决降维问题。
LDA最大化类间距离,最小化类内距离,使得投影后的不同类别的样本分的更开,属于监督学习,用来解决分类问题。
假设只有两类,则
Sb=(m1−m2)(m1−m2)T,由于
m1−m2为一
n维向量,则
R(Sb)≤1,故
R(T)≤1。所以矩阵
T最多只有一个非零特征根,即有意义的特征向量最多只有一个,即最多只能得到一个投影方向
u。
实际上,若有
N类样本,则通过
LDA算法最多只能得到
N−1个投影方向。
而对于
PCA算法,若样本维数为
n维,则无论如何都可以找到
n个投影方向。
例如,对于两类
10维向量,
LDA算法可以得到一个投影方向,而
PCA算法可以得到十个投影方向。