核极限学习机(Kernel Based Extreme Learning Machine,KELM)是基于极限学习机(Extreme Learning Machine,ELM)并结合核函数所提出的改进算法,KELM 能够在保留 ELM 优点的基础上提高模型的预测性能。
ELM 是一种单隐含层前馈神经网络,其学习目标函数F(x) 可用矩阵表示为:
F(x)=h(x)×β=H×β=L(9)F(x)=h(x)\times \beta=H\times\beta=L \tag{9} F(x)=h(x)×β=H×β=L(9)
式中:xxx 为输入向量,h(x)h(x)h(x)、HHH 为隐层节点输出,βββ 为输出权重,LLL 为期望输出。
将网络训练变为线性系统求解的问题,β\betaβ根据 β=H∗⋅Lβ=H * ·Lβ=H∗⋅L 确定,其中,H∗H^*H∗ 为 HHH 的广义逆矩阵。为增强神经网络的稳定性,引入正则化系数 CCC 和单位矩阵 III,则输出权值的最小二乘解为
β=HT(HHT+Ic)−1L(10)\beta = H^T(HH^T+\frac{I}{c})^{-1}L\tag{10} β=HT(HHT+cI)−1L(10)
引入核函数到 ELM 中,核矩阵为:
ΩELM=HHT=h(xi)h(xj)=K(xi,xj)(11)\Omega_{ELM}=HH^T=h(x_i)h(x_j)=K(x_i,x_j)\tag{11} ΩELM=HHT=h(xi)h(xj)=K(xi,xj)(11)
式中:xix_ixi ,xjx_jxj 为试验输入向量,则可将式(9)表达为:
F(x)=[K(x,x1);...;K(x,xn)](IC+ΩELM)−1L(12)F(x)=[K(x,x_1);...;K(x,x_n)](\frac{I}{C}+\Omega_{ELM})^{-1}L \tag{12} F(x)=[K(x,x1);...;K(x,xn)](CI+ΩELM)−1L(12)
式中:(x1,x2,…,xn)(x_1 , x_2 , …, x_n )(x1,x2,…,xn) 为给定训练样本,nnn 为样本数量.K()K()K()为核函数。
正则化系数 C 和核函数参数 S 需要人为设定,两者的设定将对 KELM的预测性能具有一定影响。
采用随机法产生训练集和测试集,其中训练集包含 1 900 个样 本,测试集包含 100 个样本。为了减少变量差异较大对模型性能的影响,在建立模型之前先对数据进行归一化。选取核函数为rbf 高斯核函数,利用蜣螂算法对正则化系数 C 和核函数参数 S 选取进行优化。
蜣螂算法的具体原理参考博客:https://blog.csdn.net/u011835903/article/details/128280084。
由前文可知,本文利用蜣螂算法对正则化系数 C 和核函数参数 S 进行优化。适应度函数设计为训练集的误差的MSE:
fitness=argmin(MSEpridect)fitness = argmin(MSE_{pridect}) fitness=argmin(MSEpridect)
适应度函数选取训练后的MSE误差。MSE误差越小表明预测的数据与原始数据重合度越高。最终优化的输出为最佳正则化系数 C 和核函数参数 S。然后利用最佳正则化系数 C 和核函数参数 S训练后的网络对测试数据集进行测试。
训练集DBO-KELM 的MSE:0.0050262
训练集KELM 的MSE:0.42921
测试集DBO-KELM 的MSE:0.0096058
测试集KELM 的MSE:0.5759
可以看出无论是在测试集和训练集上蜣螂优化的KELM结果均更优。