3.5 LDA判别器的设计与实现
1.LDA算法原理
假设一个n维空间有m个样本,分别为x1,x2,…,xm,即每个样本是一个n行的矩阵,其中ni表示属于第i类的样本个数,假设一共有c类,则n1+n2+…+ni+…+nc=m。
类i的样本均值为
(3-34)
通过变换向量W映射到一维空间的均值为
(3-35)
类间离散度矩阵:不同类样本集之间的距离构成的矩阵,它表示某一类样本集在空间的分布情况。
类内离散度矩阵:同一类样本集内,各样本间的均方距离构成的矩阵,它表示各样本点围绕均值的分布情况。
类内离散度矩阵和类内总离散度矩阵的表达式分别为
(3-36)
(3-37)
LDA作为一个分类的算法,我们当然希望它所分的类之间的耦合度低,类内的聚合度高,即类内离散度矩阵的中的数值要小,而类间离散度矩阵中的数值要大,这样的分类效果才好。这里我们引入Fisher准则函数:
(3-38)
希望在映射之后,两类的平均值之间的距离越大越好,而各类的样本类内离散度越小越好,因此,可知W取最大值是最佳解向量。
2.LDA线性判别分析的算法步骤
由费希尔线性判别式求解向量W*的步骤:
(1)把来自两类ω1、ω2的训练样本集X分成两个子集X1和X2。
(2)由计算Mi。
(3)由计算各类的类内离散度矩阵Si,其中i=1,2。
(4)计算类内总离散度矩阵Sw=S1+S2。
(5)计算Sw的逆矩阵
(6)由求解W*。
3.LDA算法的MATLAB实现
LDA算法的MATLAB实现流程图如图3-12所示。
图3-12 MATLAB实现流程图
实现LDA算法的MATLAB程序如下:
样本点及待分类样本点在原始空间的分布结果图如图3-13所示,样本点在最优方向上的投影的分布结果图如图3-14所示,两个待分类样本利用分类准则得到的结果图如图3-15所示。
图3-13 原始空间的分布结果图
图3-14 最优方向上的投影的分布结果图
图3-15 两个待分类样本的分类结果图