线性判别分析(LDA)

来源:互联网 发布:linux 查看inode 数量 编辑:程序博客网 时间:2024/06/05 04:20

线性判别分析(LDA)是一种监督学习方法,和主成分分析(PCA)一样,其主要用来降维。有些资料也把LDA称为Fisher线性判别(FLD)。LDA在机器学习,图像识别,数据挖掘等领域有着广泛的应用。

LDA的基本思想就是:给定训练样本集,设法将样本投影到一条直线上,使得同类样本的投影点尽可能地接近,异类样本的投影点尽可能远离,在对新样本进行分类时,将其投影到相同的这条直线上,再根据投影点的位置来确定新样本的类别。当是二分类问题时,如下图:
这里写图片描述

假设用来区分二分类的直线(投影函数)为:

y==wTx

LDA分类的一个目标是使得不同类之间的距离越大越好,同一类别之间的距离越小越好,先定义几个值:
类别i的原始中心点,也就是类别i的均值为:
mi=1niΣxDix

Di为属于类别i的样本点。
类别i投影后的中心点(均值)为:
mi˜=wTmi

衡量类别i投影后,类别点之间的分散程度(方差)为:
si˜=ΣyYi(ymi˜)2

Yi为类别i投影后的样本点。
同时考虑不同类之间的距离越大越好,同一类别之间的距离越小越好,则可最大化目标函数:
J(w)=|m1˜m2˜|2s1~2+s2~2

我们最大化J(w)就可以求出最优的w了。要求出w,可以使用拉格朗日乘数法,但是在使用拉格朗日乘数之前,我们需要把J(w)里的w单独提取出来。

定义一个投影前各分类分散程度的矩阵:

Si=ΣiDi(xmi)(xmi)T

可以看出,如果样本点距离中心点越近,Si趋近于0,这表示的是类内离散程度。

J(w)分母2化为:

si~=ΣxDi(wTxwTmi)2=ΣxDiwT(xmi)(xmi)Tw=wTSiw

s1~2+s2~2=wT(S1+S2)w=wTSwwSw就是类内离散度矩阵。
同样,将J(w)分子化为:
|m1˜m2˜|2=wT(m1m2)(m1m2)Tw=wTSbw

Sb表示类间的离散度矩阵。
这样目标函数转化为:
J(w)=wTSbwwTSww

这样就可以使用拉格朗日乘数了,但是还有一个问题,如果分子、分母是都可以取任意值的,那就会使得有无穷解,将分母限制为1(一个技巧),作为拉格朗日乘数的限制条件,代入得:
c(w)=wTSbwλ(sTSww1)dcdw=2Sbw2λSww=0Sbw=λSww

对于多分类,直接写出结论:

Sw=Σci=1SiSb=Σci=1ni(mim)(mim)TSbw=λSww

其中:c为类别个数,m为样本总体的中心点(均值向量)。
W的闭式解则是S1wSbc1个最大广义特征值所对应的特征向量组成的矩阵。

0 0
原创粉丝点击