基于海鸥算法优化的广义回归神经网络(GRNN)预测
摘要:本文介绍基于海鸥算法优化的广义神经网络(GRNN)预测,并将其应用于货物量预测
1.GRNN 神经网络概述
广义回归神经网络 CGRNN, Generalized Regression Neural Network)是美国学者 Don-aid F. Specht 在 1991 年提出的,它是径向基神经网络的一种。 GRNN 具有很强的非线性映射能力和柔性网络结构以及高度的容错性和鲁棒性,适用于解决非线性问题。 GRNN在逼近 能力和学习速度上较 RBF 网络有更强的优势,网络最后收敛于样本量积聚较多的优化回归 面,并且在样本数据较少时,预测效果也好。此外,网络还可以处理不稳定的数据。因此, GRNN 在信号过程、结构分析、教育产业、能源、食品科学、控制决策系统、药物设计、金融领域、生物工程等各个领域得到了广泛的应用 。
2.GRNN 的网络结构
GRNN 在结构上与 RBF 网络较为相似。它由四层构成,如图1所示,分别为输入层(input layer)、模式层( pattern layer)、求和层 ( summation layer)和输出层( output layer)。对 应网络输入 X = [ x 1 , x 2 , . . . , x n ] T X = [x_1,x_2,...,x_n]^T X=[x1,x2,...,xn]T,其输出为 Y = [ y 1 , y 2 , . . . , y n ] T Y = [y_1,y_2,...,y_n]^T Y=[y1,y2,...,yn]T 。
(1)输入层
输入层神经元的数目等于学习样本中输入向量的维数,各神经元是简单的分布单元,直接将输入变量传递给模式层。
(2)模式层
模式层神经元数目等于学习样本的数目 η ,各神经元对应不 同的样本,模式层神经元传递函数为:
p
i
=
e
x
p
[
−
(
X
−
X
i
)
T
(
X
−
X
i
)
2
σ
2
]
i
=
1
,
2
,
.
.
.
,
n
(1)
p_i = exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}] i =1,2,...,n \tag{1}
pi=exp[−2σ2(X−Xi)T(X−Xi)]i=1,2,...,n(1)
神经元
i
i
i 的输出为输入变量与其对应的样本
X
X
X 之间 Euclid 距离平方的指数平方
D
i
2
=
(
X
−
X
i
)
T
(
X
−
X
i
)
D_i^2= (X-X_i)^T(X-X_i )
Di2=(X−Xi)T(X−Xi) 的指数形式 。式中,
X
X
X 为网络输入变量;
X
i
X_i
Xi 为第 i 个神经元对应的学习样本。
(3)求和层
求和层中使用两种类型神经元进行求和。
一类的计算公式为
∑
i
=
1
n
e
x
p
[
−
(
X
−
X
i
)
T
(
X
−
X
i
)
2
σ
2
]
\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]
∑i=1nexp[−2σ2(X−Xi)T(X−Xi)],它对所有模式层神经元的输出进行算术求和,其模式层与各神经元的连接权值为1 ,传递函数为:
S
D
=
∑
i
=
1
n
P
i
(2)
S_D = \sum_{i=1}^nP_i\tag{2}
SD=i=1∑nPi(2)
另 一类计算公式为
∑
i
=
1
n
Y
i
e
x
p
[
−
(
X
−
X
i
)
T
(
X
−
X
i
)
2
σ
2
]
\sum_{i=1}^nY_i exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]
∑i=1nYiexp[−2σ2(X−Xi)T(X−Xi)],它对所有模式层的神经元进行加权求和,模式层中第 i 个神经元与求和层中第 j 个分子求和神经元之间的连接权值为第 i 个输 出样本
Y
i
Y_i
Yi中的第 j 个元素,传递函数为:
S
N
j
=
∑
i
=
1
n
y
i
j
P
i
,
j
=
1
,
2
,
.
.
.
,
k
(3)
S_{Nj} = \sum_{i=1}^n y_{ij}P_i ,j = 1,2,...,k\tag{3}
SNj=i=1∑nyijPi,j=1,2,...,k(3)
(4)输出层
输出层中的神经元数目等于学习样本中输出向量的维数h ,各神经元将求和层的输出相除 , 神经元 j 的输出对应估计结果Y( X) 的第 j 个元素,即:
y
j
=
S
N
j
S
D
,
j
=
1
,
2
,
.
.
.
,
k
(4)
y_j = \frac{S_{Nj}}{S_D},j=1,2,...,k \tag{4}
yj=SDSNj,j=1,2,...,k(4)
3.GRNN的理论基础
广义回归神经网络的理论基础是非线性回归分析 , 非独立变量 Y 相对于独立变量x的回归分析实际上是计算具有最大概率值的 y. 设随机变量x和随机变量 y 的联合概率密度函数 为f(x,y),已知 x 的观测值为 X ,则 y 相对于 X 的回归,也即条件均值为:
KaTeX parse error: \tag works only in display equations
Y即为在输入为 X 的条件下,Y 的预测输出 。
应用 Parzen 非参数估计,可由样本数据集
x
i
,
y
i
i
=
1
n
{x_i,y_i}_{i=1}^n
xi,yii=1n估算密度函数
f
′
(
X
,
y
)
f'(X,y)
f′(X,y)
f
′
(
X
,
y
)
=
∑
i
=
1
n
e
x
p
[
−
(
X
−
X
i
)
T
(
X
−
X
i
)
2
σ
2
]
e
x
p
[
−
(
X
−
Y
i
)
2
2
σ
2
]
/
(
n
(
2
π
)
p
+
1
2
σ
p
+
1
)
(6)
f'(X,y) =\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]exp[-\frac{(X-Y_i)^2}{2\sigma^2}]/(n(2\pi)^{\frac{p+1}{2}}\sigma^{p+1}) \tag{6}
f′(X,y)=i=1∑nexp[−2σ2(X−Xi)T(X−Xi)]exp[−2σ2(X−Yi)2]/(n(2π)2p+1σp+1)(6)
式中,
X
i
X_i
Xi,
Y
i
Y_i
Yi, 为随机变量 x 和 y 的样本观测值;
n
n
n为样本容量;
p
p
p为随机变量
x
x
x的维数;
σ
σ
σ为高斯函数的宽度系数,在此称为光滑因子。
用
f
(
X
,
y
)
f(X,y)
f(X,y)代替
f
(
X
,
y
)
f(X,y)
f(X,y)代人式,并交换积分与加和的顺序:
Y
(
X
)
=
∑
i
=
1
n
e
x
p
[
−
(
X
−
X
i
)
T
(
X
−
X
i
)
2
σ
2
]
∫
−
∞
∞
y
e
x
p
[
−
(
Y
−
Y
i
)
2
/
(
2
σ
2
)
]
d
y
∑
i
=
1
n
e
x
p
[
−
(
X
−
X
i
)
T
(
X
−
X
i
)
2
σ
2
]
∫
−
∞
∞
e
x
p
[
−
(
Y
−
Y
i
)
2
/
(
2
σ
2
)
]
d
y
(7)
Y(X) = \frac{\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]\int_{-\infty}^{\infty}yexp[-(Y-Y_i)^2/(2\sigma^2)]dy}{\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]\int_{-\infty}^{\infty}exp[-(Y-Y_i)^2/(2\sigma^2)]dy}\tag{7}
Y(X)=∑i=1nexp[−2σ2(X−Xi)T(X−Xi)]∫−∞∞exp[−(Y−Yi)2/(2σ2)]dy∑i=1nexp[−2σ2(X−Xi)T(X−Xi)]∫−∞∞yexp[−(Y−Yi)2/(2σ2)]dy(7)
由于
∫
−
∞
∞
z
e
−
x
2
d
z
=
0
\int _{-\infty}^{\infty}ze^{-x^2}dz = 0
∫−∞∞ze−x2dz=0,对两个积分进行计算后可得网络的输出Y(X)为:
Y
(
X
)
=
∑
i
=
1
n
Y
i
e
x
p
[
−
(
X
−
X
i
)
T
(
X
−
X
i
)
2
σ
2
]
∑
i
=
1
n
e
x
p
[
−
(
X
−
X
i
)
T
(
X
−
X
i
)
2
σ
2
]
(8)
Y(X) = \frac{\sum_{i=1}^nY_i exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]}{\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]} \tag{8}
Y(X)=∑i=1nexp[−2σ2(X−Xi)T(X−Xi)]∑i=1nYiexp[−2σ2(X−Xi)T(X−Xi)](8)
估计值
Y
(
X
)
Y(X)
Y(X)为所有样本观测值
Y
i
Y_i
Yi的加权平均,每个观测值
Y
i
Y_i
Yi的权重因子为相应的样本
X
i
X_i
Xi与
X
X
X之间 Euclid 距离平方的指数 . 当光滑因子 σ 非常大的时候 ,
Y
(
X
)
Y(X)
Y(X)近似于所有样本因变量的均值 。 相反,当光滑因子σ 。趋向于0 的时候,
Y
(
X
)
Y(X)
Y(X)和训练样本非常接近,当需预测的点被包含在训练样本集中时,公式求出的因变量的预测值会和样本中对应的因变量非常接近, 而一旦碰到样本中未能包含进去的点,有可能预测效果会非常差 , 这种现象说明网络的泛化能力差。当σ取值适中,求预测值
Y
(
X
)
Y(X)
Y(X)时,所有训练样本的因变量都被考虑了进去,与预测点距离近的样本点对应的因变量被加了更大的权。
4.数据集
数据信息如下:
data.mat 的中包含input数据和output数据
其中input数据维度为:2000*2
其中output数据维度为2000*1
所以RF模型的数据输入维度为2;输出维度为1。
5.海鸥算法优化GRNN
海鸥算法原理请参考:https://blog.csdn.net/u011835903/article/details/107535864
优化参数主要是GRNN的光滑因子
σ
\sigma
σ参数。是适应度函数设计为:
f
i
n
t
e
n
e
s
s
=
M
S
E
[
p
r
e
d
i
c
t
(
t
r
a
i
n
)
]
+
M
S
E
[
p
r
e
d
i
c
t
(
t
e
s
t
)
]
finteness = MSE[predict(train)] + MSE[predict(test)]
finteness=MSE[predict(train)]+MSE[predict(test)]
适应度函数选取训练后的MSE误差。MSE误差越小表明预测的数据与原始数据重合度越高。最终优化的输出为,最佳的光滑因子。
6.实验结果
海鸥算法的参数设置如下:
%% 海鸥算法
pop = 20;%种群数量
Max_iteration = 20;%最大迭代次数
lb = 0.01;%下边界
ub = 2;%上边界
dim = 1;%维度
fobj = @(spread) fun(spread,Pn_train,Tn_train,Pn_test,Tn_test);
[Best_pos,Best_score,SSA_curve]=SSA(pop,Max_iteration,lb,ub,dim,fobj); %开始优化
经过海鸥算法优化的结果:
从MSE 误差曲线可以看出,海鸥优化的GRNN结果更好