1. 引言
布鲁氏菌病是一种由布鲁氏菌引起的人畜共患病,在我国是乙类传染病。近年来,布鲁氏菌病患病人数增多,成为影响人民群众身体健康的重要卫生问题。因此,研究布鲁氏菌病发病率的预测方法,对预防和控制布鲁氏菌病有着重要的意义。
目前对布鲁氏菌病预测的研究主要集中在时间序列、机器学习方法方面。温福东等人[1]分别建立SARIMA模型和prophet模型对我国布鲁氏菌病发病人数进行预测,结果表明,prophet模型对布鲁氏菌病的预测效果更好。张睿等人[2]用随机森林、SARIMA模型预测我国布鲁氏菌病的发病率,发现两种模型的预测精度都较高,随机森林的预测效果更好一些。田德红等人[3]对中国布病建立ARIMA、DES模型、ARIMA-DES混合模型,发现选取的最优模型为ARIMA-DES模型。郑洪淼[4]建立基于历史病例数和气象因素的随机森林预测模型,同时建立季节自回归移动平均模型,根据R2和RMSE等指标评价布鲁氏菌病的预测效果,发现随机森林模型效果更好。张璐[5]采用灰色GM(1, 1)模型预测未来10年滨州市布鲁氏菌病的发病情况,为有关部门防控布病提供依据。米尔夏提江·阿力木[6]采用ARIMA模型、XGBoost机器学习模型对布鲁氏菌病进行预测,结果发现,XGBoost模型比ARIMA模型预测精度高。张翀[7]建立深度学习长短期记忆网络LSTM模型,并将预测结果与传统时间序列ARIMA模型进行比较,结果发现,LSTM模型预测的准确性要优于ARIMA模型。袁磊等人[8]采用GM(1, 1)模型建立我国布鲁氏菌病模型,并利用残差尾段对模型进行修正,建立了模型精度更好的布鲁氏菌病发病率模型。操龙挺[9]采用神经网络、支持向量机、随机森林三种机器学习算法对布病进行预测,结果发现,机器学习方法优于ARIMA模型,神经网络模型为最佳模型。黄璐等人[10]采用广义回归神经网络预测布鲁氏菌病月发病数,发现模型拟合较好,可为该病防控提供科学依据。
用机器学习方法对布鲁氏菌病进行研究的文章很多,但是机器学习方法中,用BP神经网络、遗传算法优化的BP神经网络对布鲁氏菌病研究的文章很少。因此,本文先用BP神经网络对布鲁氏菌病发病率进行预测,由于BP神经网络极易陷入局部最优解,而遗传算法是一种全局搜索最优解的算法,所以用遗传算法来优化BP神经网络,对我国的布鲁氏菌病发病率进行预测。
2. 研究方法
2.1. BP神经网络
BP神经网络是一种按照误差反向传播算法的多层前馈型网络,它包括输入层、隐藏层、输出层。每一层有多个神经元,层与层之间的神经元通过权值连接。它主要分为信号的前向传播和误差的后向传播。前向传播是信号先进入输入层,然后传至隐藏层,最后传入输出层,如果输出层的期望值与真实值不相符,就会进行误差的反向传播。误差后向传播是把误差通过隐藏层传至输入层,在这个过程中,会进行权值与阈值的更新修正。重复进行这两个过程,直到误差低于预先给定的误差或者达到预先给定的学习次数。
Step 1:信号的前向传播
符号含义见表1。
Table 1. Symbolic meaning
表1. 符号含义
符号 |
含义 |
|
输入层第
个神经元的输入信号 |
|
输入层与隐藏层之间的权值 |
|
隐藏层第
个神经元的阈值 |
|
隐藏层的传递函数 |
|
隐藏层与输出层之间的权值 |
|
输出层第
个神经元的阈值 |
|
输出层的传递函数 |
|
输出层第
个神经元的输出信号 |
因此,隐藏层第
个神经元的输入信号可表示为:
隐藏层第
个神经元的输出信号为:
输出层第
个神经元的输入信号为:
输出层第
个神经元的输出信号为:
这样,神经网络就完成了第一步信号的向前传播。
Step 2:误差的反向传播
对于单个样本
,用
表示神经网络的期望值
与实际值
之间的误差。
用平方误差来计算:
因此,对于所有
个样本,用
表示总体误差,则它的公式为:
用梯度下降法更新参数,求出问题的最优解。
修正的权值阈值分别为:
其中,
是学习率。
Step 3:重复进行这两个过程,直到误差低于预先给定的误差或者达到预先给定的学习次数,训练就完成了。
2.2. GA-BP
BP神经网络因为其内部采用的是局部搜索算法和梯度下降法,极易陷入局部最优解,而遗传算法是一种全局搜索最优解的算法,所以可以用遗传算法来优化BP神经网络。
遗传算法的流程一般包括染色体的编码、初始群体的生成、适应度函数的设计、选择、交叉、变异操作、终止条件。
2.2.1. 染色体的编码方式
遗传算法是把参数空间中的解通过一定的方式编码成字符串进行运算的,一个解对应一条染色体,这些编码后的染色体可以进行基因的交叉、变异操作。染色体的编码方式有很多种,例如二进制编码、符号编码、浮点数编码等,其中最常用的是二进制编码。
2.2.2. 初始群体的生成
染色体编码后会形成一些字符串,一个字符串就对应一个个体,所有的个体构成一个种群。一般是通过电脑编码生成随机数,因为个体是随机生成的,所以它们适应环境的能力不同,有好有坏,也就是适应度有高有低。
2.2.3. 适应度函数的设计
随机生成的个体适应度有高有低,适应度低的个体会被淘汰。所以,我们需要一个判断标准,来判断个体的优劣。这就是适应度函数。本文中用均方误差作为适应度的评估值,可以表示为:
其中,
和
分别为第
天的期望值与实际值。
2.2.4. 选择
选择是指从种群里选择出适应环境能力强的个体,让它们产生下一代种群,适应环境能力差的个体直接淘汰。通常适应度高的个体,更容易生存下来,适应度低的个体,更容易被淘汰。一般采用轮盘赌选择法。公式为:
其中,
为第
个个体适应度值,
为个体被选择的概率,
为种群规模。
2.2.5. 交叉
交叉对应遗传学中的基因重组,是指把通过交叉概率选出来的个体,互相交换自身染色体上基因的一部分,产生新的两条染色体,即新的个体。基因不断发生重组,产生新的个体,有可能使优良的基因结合在一起,使种群向更适应环境的方向进化。交叉概率的取值一般为0.9~1。
2.2.6. 变异
变异对应遗传学中的基因突变,是指把通过变异概率选出来的个体,改变其染色体上的某些基因。变异发生的概率很小,取值一般为0.001~0.1。
2.2.7. 终止条件
当误差低于预先给定的误差或者达到预先给定的遗传代数时,训练就完成了。
遗传算法是通过调节BP神经网络的初始权重和阈值,来优化BP神经网络的。GA-BP算法的思想是:
Step 1:确定BP神经网络的结构并初始化参数,然后对参数进行编码操作,也就是形成种群中的个体。
Step 2:进入遗传算法的流程,当达到遗传算法预先设定的目标时,就得到了BP神经网络参数的最优解。
Step 3:对具有最优参数的BP神经网络进行训练,就得到用遗传算法优化的BP神经网络。
GA-BP算法流程图如下图1所示。
Figure 1. GA-BP algorithm flow chart
图1. GA-BP算法流程图
3. 评价模型预测精度的指标
用平均绝对误差(MAE)、平均绝对百分误差(MAPE)、均方误差(MSE)、均方根误差(RMSE)来评估模型的精度。
1) 平均绝对误差(MAE)是指真实值与预测值之间的偏差绝对值的算术平均值。公式为:
其中,
是真实值,
是预测值,
是预测次数。
2) 平均绝对百分误差(MAPE)是指真实值与预测值之间的偏差与真实值比值的绝对值的算术平均值。公式为:
其中,
是真实值,
是预测值,
是预测次数。
3) 均方误差(MSE)是指真实值与预测值之间的偏差的平方和除以预测次数。公式为:
其中,
是真实值,
是预测值,
是预测次数。
4) 均方根误差(RMSE)是指真实值与预测值之间的偏差的平方和除以预测次数的平方根。公式为:
其中,
是真实值,
是预测值,
是预测次数。
4. 实证分析
4.1. BP神经网络预测模型
下面构建布鲁氏菌病月发病率的BP神经网络预测模型,将2004~2019年的数据作为训练集,2020年的数据作为测试集。考虑到布鲁氏菌病月发病率的周期性和自相关性的特点,用2004年1月、2004年2月、……、2004年11月、2004年12月的数据来预测2005年1月的数据。训练集和测试集的具体划分方式如下表2和表3所示。
Table 2. Training set partitioning
表2. 训练集划分
模型输入 |
模型输出 |
2004.01 |
2004.02 |
…… |
2004.12 |
2005.01 |
2004.02 |
2004.03 |
…… |
2005.01 |
2005.02 |
…… |
…… |
…… |
…… |
…… |
2018.11 |
2018.12 |
…… |
2019.10 |
2019.11 |
2018.12 |
2019.01 |
…… |
2019.11 |
2019.12 |
Table 3. Test set partitioning
表3. 测试集划分
模型输入 |
模型输出 |
2019.01 |
2019.02 |
…… |
2019.12 |
2020.01 |
2019.02 |
2019.03 |
…… |
2020.01 |
2020.02 |
…… |
…… |
…… |
…… |
…… |
2019.11 |
2019.12 |
…… |
2020.10 |
2020.11 |
2019.12 |
2020.01 |
…… |
2020.11 |
2020.12 |
输入变量为过去一年布鲁氏菌病月发病率数据,输出变量为下一个月的月发病率数据。所以,BP神经网络的输入层的神经元节点数为12,输出层的神经元节点数为1。隐藏层神经元的节点数一般用公式
来计算,其中,
表示隐藏层节点数,
表示输入层节点数,
表示输出层节点数,
是常数,
。所以本文隐藏层神经元节点数的初步确定为[4, 13]。不同隐藏层节点数的网络训练结果见下表4。
Table 4. Network training results with different number of hidden layer nodes
表4. 不同隐藏层节点数的网络训练结果
隐藏层节点数 |
均方误差 |
4 |
0.0015859 |
5 |
0.00076066 |
6 |
0.0007444 |
7 |
0.00094901 |
8 |
0.00075339 |
9 |
0.0014375 |
10 |
0.00087411 |
11 |
0.00082324 |
12 |
0.00084835 |
13 |
0.00093013 |
由上表可以看出,最佳隐藏层节点数为6,相应的均方误差为0.0007444。
确定最佳隐藏层节点后,可以构建最佳隐藏层节点数的BP神经网络,对2004年~2019年的数据进行训练,具体的参数设置如下表5所示。
Table 5. Network parameter value
表5. 网络参数取值
参数 |
取值 |
神经元节点数目 |
12、13、1 |
隐含层传递函数 |
Tan-sigmoid型 |
输出层传递函数 |
Purelin型 |
续表
训练函数 |
trainlm |
最大迭代次数 |
1000 |
目标误差 |
10−6 |
学习效率 |
0.01 |
BP神经网络训练得到的布鲁氏菌病预测值与真实值的对比图见下图2。
Figure 2. Comparison of true and predicted monthly incidence of brucellosis and error graph
图2. 布鲁氏菌病月发病率真实值与预测值对比及误差图
由上图可以看出,测试集的真实值和预测值非常接近,且误差在−0.08和0.09之间,说明BP神经网络模型的预测效果很好。
4.2. GA-BP神经网络预测模型
BP神经网络因为其内部采用的是局部搜索算法和梯度下降法,极易陷入局部最优解,而遗传算法是一种全局搜索最优解的算法,所以可以用遗传算法来优化BP神经网络。仍然将2004~2019年的数据作为训练集,2020年的数据作为测试集,最大迭代次数、目标误差、学习效率也和BP神经网络设置的一样,分别为1000、10−6、0.01。GA-BP的其它参数设置如下表6所示。
Table 6. GA-BP neural network parameter value
表6. GA-BP神经网络参数取值
参数 |
取值 |
种群规模 |
20 |
遗传代数 |
20 |
交叉概率 |
0.8 |
变异概率 |
0.1 |
GA-BP神经网络的回归拟合图见下图3。
Figure 3. Regression fitting diagram of GA-BP neural network
图3. GA-BP神经网络的回归拟合图
由上图可以看出,GA-BP神经网络的训练集的
,也就是布鲁氏菌病发病率真实值与预测值的拟合度为0.99483。真实值曲线与拟合曲线可以看到是重合的,说明拟合效果非常好。网络的验证集的
,测试集的
,所有样本集的
。
下面是GA-BP训练集和测试集预测结果对比图(图4)。
Figure 4. Comparison of GA-BP training set and test set prediction results
图4. GA-BP训练集和测试集预测结果对比图
由上图可以看出,测试集和训练集的真实值和预测值都非常接近,并且训练集的均方误差RMSE为0.016751,测试集的均方误差RMSE为0.04336,误差都比较小,说明GA-BP神经网络模型的预测效果很好。
4.3. 模型预测效果
用MAE、MSE、RMSE、MAPE四个指标来评价模型的预测效果,BP、GA-BP的预测效果见下表7。
Table 7. Comparison of prediction effect of each model
表7. 各模型预测效果对比
模型 |
MAE |
MSE |
RMSE |
MAPE |
BP |
0.0397 |
0.0022 |
0.0464 |
17.5937% |
GA-BP |
0.0346 |
0.0019 |
0.0434 |
1.1373% |
由上表可以看出,GA-BP的MAE、MSE、RMSE、MAPE值都小于BP神经网络的值,所以GA-BP模型的预测效果更好,可以用GA-BP神经网络模型对我国的布鲁氏菌病发病率进行预测。
5. 结论
基于2004年~2020年我国布鲁氏菌病月发病率数据,将2004~2019年的数据作为训练集,2020年的数据作为测试集。先建立BP神经网络模型,对我国布鲁氏菌病月发病率进行预测。由于BP神经网络极易陷入局部最优解,而遗传算法是一种全局搜索最优解的算法,所以用遗传算法来优化BP神经网络,对我国的布鲁氏菌病发病率进行预测。用遗传算法改进的BP神经网络的MAE、MSE、RMSE、MAPE都小于BP神经网络的MAE、MSE、RMSE、MAPE,说明用遗传算法改进的BP神经网络的预测效果比BP神经网络的预测效果好,可以用遗传算法改进的BP神经网络模型对我国的布鲁氏菌病进行预测,从而为布鲁氏菌病的预防和控制提供科学依据。