一、遗传算法信号去噪简介
理论上,Hankel矩阵的行数m和列数n只需满足关系式m + n - 1 = N,便可在自由度为[2,N - 1]区间上任意取值。显然,m、n取值的不同会对算法的去噪效果造成不同的影响。此外,在信号重构时,如果奇异值个数选取太少,就会遗漏部分对象信号信息,导致重构信号不准确; 如果选取太多,则会留下噪声成分,达不到理想效果。在实际研究过程中,人们通常是凭借经验取几个奇异值进行重构,或是简单地将小于某些值的奇异值置零,这显然无法满足现代信号处理和故障诊断技术的智能化要求。因此,对有效奇异值个数选取问题的研究很有意义。本文算法利用遗传算法对矩阵结构进行优化,采用K-medoids聚类算法确定对象信号对应的有效奇异值个数,使信号重构效果更佳。
1 遗传算法设计
1.1初始群体与编码
初始群体构成最原始的搜索空间。群体个数M越大,搜索范围就越广,效果越好,但会增加每代遗传操作的时间,使算法效率下降; 反之,M越小,搜索范围越窄,每代操作时间变短, 运算效率变高,但会降低群体多样性,易导致算法出现早熟现象。通常M的取值范围为20 ~ 100。
遗传算法的编码方式主要有二进制编码、浮点数编码和格雷码编码等,其中浮点数编码方法方便快捷,适用于精度要求高、搜索空间大的优化问题[14]。将行数m设定为该优化问题的个体,可通过公式m + n - 1 = N计算n。由于m∈[2,N 1],取值范围较大,选取群体个数M = 20,染色体采用浮点数编码方式。
1.2 选择算子
选择操作建立在对个体的适应度进行评价的基础之上。 由于遗传算法过程中的个体都对应一个实际的矩阵S1,为了将这一矩阵数字化,定义对象信号奇异值能量作为矩阵结构优化的目标函数,并选用该目标函数作为适应度函数f( k) 。表达式为
其中: u为矩阵中对象信号对应的有效奇异值个数,σi为对象信号对应的有效奇异值。
选择染色体时,直接用轮盘赌选择法会淘汰部分优质个体,因此,这里采用确定式采样选择和轮盘赌选择相结合的策略。具体过程如下:
a) 计算群体中个体在下一代群体中的期望生存数目Nk;
1.3 交叉算子
交叉算子是指对两个随机配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。由于选用了实数编码方式,采用算术交叉方式。假设对染色体x1和x2进行算术交叉,则生成两个新个体x1’和x2’为
其中: 0≤α≤1,交叉概率Pc一般取0. 3 ~ 0. 99,结合该问题并综合考虑保护群体中优良个体,不影响算法效率等因素,取初始值Pc= 0. 3。1.4 变异算子
变异算子是指将个体染色体编码中某些基因座上的基因值用其他等位基因替代,从而形成新的个体。这里采用均匀变异操作作为变异算子,具体过程为
其中: γ 为[0,1]内符合均匀概率分布的一个随机数。综合考虑各因素,取初始变异概率Pm= 0. 015。设置算法的终止进化代数T = 100。
1.5 遗传算法局部收敛预防策略
如果遗传算法收敛于局部极值,则会造成矩阵分解后的奇异值个数减少,原始信号便会被分解在较少的奇异值和奇异值矢量对应的信号子空间中,对象信号和噪声信号不能得到彻底的分离。较大奇异值不仅只代表理想信号部分,也包含了一定量的噪声,而较小奇异值所表示的只是部分噪声信号。
交叉和变异操作有助于产生新的优良个体,却也可以破坏具有优良特性的个体,造成群体多样性减弱,限制遗传算法的搜索空间,导致局部收敛情况的出现。为了防止局部收敛, 需要每一代群体均保持一定的多样性,在遗传进化过程中随时控制交叉概率和变异概率。但是,过渡增强两种概率的作用, 会使得算法趋于随机搜索,失去模拟进化的仿生实质。应引导交叉和变异概率的变化,使其变化具有目标性。避免遗传算法收敛于局部极值的措施,一是通过计算种群成熟度来判断GA是否早熟,采用基于成熟度动态自适应控制的预防早熟策略适时调整交叉概率和变异概率; 二是将适应度函数引入交叉概率和变异概率的计算中,使后两者随前者的增大而减小。
2.2 确定有效奇异值
对象信号对应的有效奇异值以及个数u的确定采用Kmedoids聚类算法。K-medoids聚类算法的核心思想是将M个数据对象划分成K个聚类,使得每个聚类中的数据到本聚类中心点的距离最短。由于最终只需要确定对象信号对应的前几个较大的奇异值,即将原数据集分成两类,故设定 σ1和 σr为初始聚类中心,算法流程如下:
a) 将 σ1和 σr作为K-medoids算法的初始聚类中心;
b) 按式( 8) 计算数据集余下的数据对象与各聚类中心的距离dk,并将数据对象分配到离自己最近的聚类中,式中sj表示空间中的点,ok表示各聚类中心;
c) 在每个类中,顺序选取一个数据对象代替原有聚类中心,并按式( 9) 计算代替后的消耗consume,式中s表示空间中的点,C’i、Ci分别表示新划分的类和原来的类,o’i和oi分别表示新中心点和原始中心点,若consume < 0,则用o’i替换oi,反之,保留原中心点;
d) 重复步骤b) c) 直到新生成的聚类中心不再变化。最后,以 σ1作为初始聚类中心得到的聚类中包含了对象信号对应的有效奇异值。该算法的流程如图1所示。
作为K-means聚类算法的改进方法,K-medoids算法更不易受到由误差等因素所引起的噪声数据的影响,具有强鲁棒性、高准确性等优点。人为确定有效奇异值个数方法用牺牲精确度来换取低时间复杂度,该类方法对有效奇异值的取舍界限刻画不够精确,易使得到的有效奇异值中夹杂噪声成分,导致不能准确还原信号。与人为方法相比,用K-medoids聚类算法确定有效奇异值,可以避免人为方法带来的统计误差,利用数据内在分布规律将其彻底分离,虽然引入该方法使得计算量有所增加,但由于矩阵分解后得到的奇异值个数有限,其计算量完全在可承受的范围之内。
二、部分源代码
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]郑顾平,李强,李刚.基于遗传算法的奇异值分解信号去噪算法[J].计算机应用研究. 2015,32(08)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除