3.4 基于LMSE的分类器设计
3.4.1 LMSE分类法简介
LMSE是Least Mean Square Error的英文缩写,中文的意思是最小均方误差,常称作LMSE算法。
提到LMSE分类算法就不能不提感知器算法和自适应算法,因为LMSE算法本身就是自适应算法中最常用的方法,而感知器和自适应线性元件在历史上几乎是同时提出的,并且两者在对权值的调整的算法非常相似,它们都是基于纠错学习规则的学习算法。感知器算法存在如下问题:不能推广到一般的前向网络中;函数不是线性可分时,得不出任何结果。而由美国斯坦福大学的Widrow-Hoff在研究自适应理论时提出的LMSE算法,由于其易实现因而很快得到了广泛应用,成为自适应滤波的标准算法。下面介绍自适应过程。
自适应过程是一个不断逼近目标的过程。它所遵循的途径以数学模型表示,称为自适应算法。通常采用基于梯度的算法,其中LMSE算法尤为常用。自适应算法可以用硬件(处理电路)或软件(程序控制)两种办法实现。前者依据算法的数学模型设计电路,后者则将算法的数学模型编制成程序并用计算机实现。算法有很多种,选择算法很重要,它决定了处理系统的性能质量和可行性。
自适应均衡器的原理就是按照某种准则和算法对其系数进行调整,最终使自适应均衡器的代价(目标)函数最小化,达到最佳均衡的目的。而各种调整系数的算法就称为自适应算法,自适应算法是根据某个最优准则来设计的。最常用的自适应算法有逼零算法、最陡下降算法、LMSE算法、RLS算法以及各种盲均衡算法等。
自适应算法所采用的最优准则有最小均方误差准则、最小二乘准则、最大信噪比准则和统计检测准则等,其中最小均方误差准则和最小二乘准则是目前最为流行的自适应算法准则。LMSE算法和RLS算法由于采用的最优准则不同,因此这两种算法在性能、复杂度等方面均有许多差别。
一种算法性能的好坏可以通过几个常用的指标来衡量,例如收敛速度——通常用算法达到稳定状态(即与最优值的接近程度达到一定值)的迭代次数表示;误调比——实际均方误差相对于算法的最小均方误差的平均偏差;运算复杂度——完成一次完整迭代所需的运算次数;跟踪性能——对信道时变统计特性的自适应能力。
3.4.2 LMSE算法原理
LMSE算法是针对准则函数引进最小均方误差这一条件而建立起来的。这种算法的主要特点是在训练过程中判定训练集是否线性可分,从而可对结果的收敛性做出判断。
LMSE算法属于监督学习的类型,而且是“模型无关”的,它是通过最小化输出和期望目标值之间的偏差来实现的。
LMSE算法属于自适应算法中常用的算法,它不同于C均值算法和ISODATA算法,后两种属于基于距离度量的算法,直观且容易理解。LMSE算法通过调整权值函数求出判别函数,进而将待测样本代入判别函数求值,最终做出判定,得出答案。
1.准则函数
LMSE算法以最小均方差作为准则,因均方差为
因而准则函数为
准则函数在时取得最小值。准则函数对Wi的偏导数为
2.迭代方程
将式(3-5)代入迭代方程,得到
对于多类问题来说,M类问题应该有M个权函数方程,而对于每一个权函数方程来说,如X(k)∈ωi,则
否则
3.4.3 LMSE算法步骤
(1)设各个权向量的初始值为0,即W0(0)=W1(0)=W2(0)=…=WM(0)=0。
(2)输入第k次样本X(k),计算。
(3)确定期望输出函数值:若X(k)∈ωi,则ri[X(k)]=1,否则ri[X(k)]=0。
(4)计算迭代方程:,其中。
(5)循环执行步骤(2),直到满足条件:属于ωi类的所有样本都满足不等式di(X)>dj(X),∀j≠i。
3.4.4 LMSE算法的MATLAB实现
1.首先给定四类样本,各样本的特征向量经过增1
程序如下:
pattern(1). feature实际的矩阵形式如下:
之后的三类,程序如下:
2.设权值向量的初始值均为0
初始化权值程序代码如下:
MATLAB程序运行结果如下:
3.计算di(k)
程序代码如下:
MATLAB程序运行结果如下。
第一次循环结果:
最后一次运行结果:
4.调整权值
程序代码如下:
MATLAB程序运行结果如下:
5.通过判别函数将待分类数据分类
调用function函数,将待测数据分类。因为调用该函数一次只能判别一个样品的类别,所以循环30次才能完成分类,程序代码如下:
运行MATLAB程序,最终的分类结果如下:
将该分类结果与原始分类结果对比,对照表如表3-1所示。
表3-1 LMSE分类结果与原始分类结果对照表
结果分析:从表3-1中可以看出有2个分类结果是错的,正确率为93.3%。
6.用三维效果图将结果直观显示
将分好类的数据用三维图像的形式直观显示出来,程序代码如下:
运行MATLAB程序,三维效果图如图3-1所示。
图3-1 LMSE算法分类结果三维效果图
7.完整的MATLAB程序
完整的MATLAB程序代码如下:
3.4.5 结论
学习样本的维数问题:
因为样本类别不均匀(第一类4个样本,第二类8个样本,第三类9个样本,第四类10个样本),程序不运行,后来将数据重复添加进去,保证了程序的正常运行。程序相关部分代码如下:
注意:其中864.45 1647.31 2665.9;877.88 2031.66 3071.18;1418.79 1775.89 2772.9;1449.58 1641.58 3405.12;1418.79 1775.89 2772.9;1449.58 1641.58 3405.12是重复添加的样本数据,目的是凑够10个数据以便程序能进行循环。