基于MATLAB的人工智能模式识别
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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线性判别分析的算法步骤

由费希尔线性判别式img求解向量W*的步骤:

(1)把来自两类ω1ω2的训练样本集X分成两个子集X1X2

(2)由img计算Mi

(3)由img计算各类的类内离散度矩阵Si,其中i=1,2。

(4)计算类内总离散度矩阵Sw=S1+S2

(5)计算Sw的逆矩阵img

(6)由img求解W*

3.LDA算法的MATLAB实现

LDA算法的MATLAB实现流程图如图3-12所示。

img

图3-12 MATLAB实现流程图

实现LDA算法的MATLAB程序如下:

样本点及待分类样本点在原始空间的分布结果图如图3-13所示,样本点在最优方向上的投影的分布结果图如图3-14所示,两个待分类样本利用分类准则得到的结果图如图3-15所示。

img

图3-13 原始空间的分布结果图

img

图3-14 最优方向上的投影的分布结果图

img

图3-15 两个待分类样本的分类结果图