APP下载

BP神经网络在痢疾发病趋势预测中的应用研究*

2012-12-04江苏省疾病预防控制中心210009刘文东胡建利戴启刚汤奋扬

中国卫生统计 2012年6期
关键词:痢疾网络结构传染病

江苏省疾病预防控制中心(210009) 刘文东 吴 莹 艾 静 梁 祁 胡建利 戴启刚 李 媛 汤奋扬

痢疾是全球面临的重要公共卫生问题,每年的痢疾病例主要发生在发展中国家〔1〕。在我国痢疾也属于常见病和多发病,其报告发病数一直高居我国甲乙类传染病的前五位〔2〕,给社会和家庭带来了严重的经济负担〔3-4〕,是需要重点防治的传染病病种之一。传染病的预测可以及早发现传染病发展趋势,准确的预测是制定预防和控制传染病的近期或长远应对策略的前提,建立合适的预测模型,提高预测的准确性,对于传染病控制工作意义重大。本文以江苏省1995~2010年痢疾月发病数据为基础,探讨误差反向传播(back-propagation,BP)神经网络在痢疾发病趋势预测中的应用。

资料与方法

1.资料来源

江苏省1995~2003年痢疾月发病数据来自历年全省疫情统计报表,2004~2010年发病数据来自“中国疾病预防控制信息系统”的子系统“疾病监测信息报告管理系统”。痢疾诊断标准参照卫生部颁发的“细菌性、阿米巴痢疾诊断与处理原则(GB16002-1995)”、“细菌性和阿米巴性痢疾诊断标准(WS 287-2008)”,疫情报告遵循“传染病信息报告管理规范”。

2.BP神经网络原理简介

BP神经网络由Rumelhart等于1985年正式提出,是人工神经网络中应用最广泛的一种,实际应用中80~90%的人工神经网络模型都采用BP网络或其变化形式〔5-6〕。BP网络是一种典型的多层前馈网络,具有输入层、隐含层和输出层,层与层之间采用全连接的方式,同层神经元之间无相互连接;隐含层采用S型的sigmoid函数作为传递函数(如logsig()等),输出层多采用线性传递函数purelin(),见图1。

图1 BP神经网络结构示意图

BP神经网络的学习规则又称为δ学习规则,是一种典型的有监督学习。当给定网络一个输入样本时,样本信息由输入层传递到隐含层,经过隐含层神经元处理后传到输出层,由输出层神经元进一步处理后产生一个网络输出;如果网络输出与期望输出之间有不满足要求的误差,则将误差值沿连接通路逐层反传并修正各层连接权值和阈值。用一组样本反复训练网络,即重复信息前向传播和误差反向传播的过程对网络权值和阈值不断进行修正,直到网络性能满足要求。

建立BP神经网络的步骤:

(1)整理原始数据,对数据进行归一化处理;

(2)根据实际问题确定输入输出维数,构造训练样本、测试样本;

(3)确定网络结构:设定网络层数及各层节点数N-M-Q,其中N为输入层节点数,Q为输出层神经元数,M为隐含层神经元数;指定隐含层、输出层神经元的传递函数;指定学习函数;

(4)用训练样本训练网络;

(5)用测试样本测试网络;

(6)反复执行第3-5步,找出最佳网络。

3.应用软件

本文采用MATLAB7.12完成BP神经网络模型拟合和预测分析。

结 果

1.江苏省痢疾流行特征概述

1995~2010年江苏省累计报告痢疾316887例,年均发病率为26.82/10万。1995~2003年期间发病数逐年下降;2004年发病数出现大幅度反弹,较2003年增加62.50%,之后又出现逐年下降的长期趋势。发病有明显的季节性,夏秋季高发,6~10月份发病数占全年发病数的60%以上。见图2。

图2 1995~2010年江苏省痢疾月发病数时间序列图

2.BP 模型构建

本文拟用1995~2010年的月发病数据建立6个不同的BP网络。net1:用前3个月发病数预测下一个月发病数;net2:用前6个月发病数预测下一个月发病数;net3:用前12个月的发病数预测下一个月的发病数;net4:用前3年历史同期发病数预测当前月份发病数;net5:用前4年历史同期发病数预测当前月份发病数;net6:用前5年历史同期发病数预测当前月份发病数。下面以net4为例详细阐述BP网络的建模过程。

(1)数据预处理

将1995~2010年的原始发病数据按时间顺序从前到后排成一个向量 P=[P(1),P(2),P(3),…,P(i),…,P(190),P(191),P(192)],然后对 P 中的元素按如下公式进行归一化处理:

上式中pp(i)表示向量P中的第i个元素归一化后值,P(i)表示向量P中的第i个元素,min(P)表示向量P中取值最小的元素,max(P)表示向量P中取值最大的元素。归一化后的数据形成新的向量PP=[PP(1),PP(2),PP(3),…,PP(i),…,PP(190),PP(191),PP(192)]。

(2)构建训练样本集、测试样本集和预测样本集

用前3年历史同月数据作为网络输入,当前月份发病数据作为对应的预期输出,整批数据可以形成168个样本,用前144个样本构成训练样本集,用随后的12个构成测试样本集,最后12个构成预测样本集,预测集只有网络输入,没有期望输出。样本集的构建策略见表1。

表1 net4样本集的构成

(3)确定网络结构

由样本集的结构可知net4的输入输出层节点数分别为3个和1个,隐含层神经元数M依次取4、5、6、7、8、9、10,分别建立结构为 3-4-1、3-5-1、3-6-1、3-7-1、3-8-1、3-9-1、3-10-1的7个BP神经网络,用训练样本集对每一个网络进行训练,训练完成后用测试集样本进行仿真(预测),用MSE评价网络性能:

上式中tt(i)为第i个测试样本仿真结果的反归一化值(即预测发病数),dd(i)表示第i个测试样本对应的期望输出的反归一化值(即实际发病数),MSE表示预测发病数与实际发病数误差平方和的均数,MSE越小表示模型预测效果越好。在本例中,当M=8时,MSE取得最小值,所以隐含层神经元数确定为8个,即net4的最优网络结构为3-8-1。

重复(2)、(3)两个步骤,分别建立 net1、net2、net3、net5、net6,其最优网络结构分别为 3-5-1、6-17-1、12-28-1、4-9-1、5-11-1。

(4)选择最优预测网络

用测试集分别对 net1、net2、net3、net4、net5、net6进行仿真,计算预测发病数与实际发病数之间的平均绝对误差(MAE)、平均误差率(MPAE):

上面两个式子中tt(i)、dd(i)的意义同(3)。从表2中可以看出net3、net4、net5、net6的预测效果均较理想。其中,net3网络结构(12-28-1)过于复杂,net4、net5、net6预测效能相近,但net4网络结构最简单;综合考虑预测效果和模型的简洁性选择net4作为最终的预测模型。

表2 6个BP网络的泛化能力比较

(5)江苏省2011年1~12月痢疾发病数预测分析

用net4对历史数据进行仿真(组内回带),并对2011年1~12月数据进行预测(趋势外推),结果显示模型拟合的动态趋势与实际情况基本一致,模型拟合效果良好。根据网络预测结果推算,2011年全省痢疾预测发病数为5515例,较2010年减少19.16%,将延续2004年以来逐年下降的长期趋势。见图3。

图3 BP神经网络模型预测值与实际值比较

3.BP神经网络模型建模过程在 MATLAB7.12中的编程实现

限于篇幅本文中仅给出net4建模及预测分析的编程语句,程序代码如下(带%的语句为注释语句):

讨 论

痢疾作为一种多发、常见的肠道类传染病,是传染病预测研究的热点病种之一。目前对于痢疾发病时间序列建立的预测模型主要有灰色 GM(1,1)模型、ARIMA模型以及ARIMA与神经网络相结合的组合模型等三种类型〔7-10〕。建模方法的选择是预测分析的难点之一,实际应用中应根据数据序列的特征选择合适的方法。

江苏省痢疾发病序列具有明显的长期趋势和季节性特征,各月份数据波动较大,加之2004年发病的急剧反弹使得整个序列的随机性和变异度增加,一般的线性模型难以充分提取其内在变化规律,因此考虑建立BP神经网络模型。分析结果表明,最终建立的模型很好的拟合了发病序列的动态变化趋势,预测性能较为理想,平均误差率仅为7.92%,最大相对误差也控制在20%以下,可以用于未来发病趋势的预测。

BP神经网络结构的确定是建模过程的一大难点,尤其是隐含层神经元数目的确定目前尚无有效的指导方法。隐含层神经元数目过少建立的模型过于简单,对于数据的内在规律提取不足,从而导致拟合不足;神经元数目过多则建立的网络结构又可能过于复杂,导致过拟合现象。两种情况均会降低模型的泛化能力,影响其应用价值。只有通过反复尝试,对不同网络结构的拟合效果进行评价,从中选择最优模型。本文在模型结构确定过程中采用预测值和实际值之间的均方误差作为性能评价参数,直接比较模型的泛化能力,较好的避免了拟合不足或过拟合现象。另外,由于BP神经网络权值和阈值的初始化采用随机函数,因此同一模型每次训练的结果均有差别,实际建模过程中应采用循环控制语句对模型进行反复训练,从中找出最佳训练效果,并将此次训练的模型加以保存用于随后的预测分析。本文还对比分析了两种样本构建策略的拟合效果:第一种策略是采用前面几期的发病数据作为网络输入,下一期的发病数据作为对应的期望输出,其实质是在下一期发病数与其前面几期发病数之间建立一种映射关系,此种方法是神经网络用于时间序列预测分析时的惯用方法〔11-12〕;第二种策略是用过去几年的历史同期数据作为输入,当前周期的发病数据作为对应的期望输出,其实质是在当前周期发病数与过去几年历史同期发病数之间建立一种映射关系,目前此种方法尚未见相关文献报道。分析结果表明第二种样本构建策略的预测效果明显优于第一种策略,这一现象主要是由于发病序列的变化特征所致。江苏省痢疾月发病数据具有明显的季节性,不同季节由于气候、饮食习惯等因素的不同导致人群发病数据差异较大,因此用前面几个月的发病数据拟合下一个月的发病趋势效果欠佳。相反,由于相同季节痢疾发病的影响因素相近,发病数的变化趋于一致,用历史同期发病数据拟合当前周期的发病趋势充分利用了发病序列的内在规律,弱化了输入输出之间的随机性,使拟合的模型更加合理,预测效果更理想。本文研究结果提示第二种样本构建策略在那些具有明显季节性发病特征的传染病的神经网络预测分析中具有一定的推广意义。

1.J Kotloff KL,Winickoff JP,Ivanoff B,et a1.Global burden of Shigella infections:implications for vaccine development and implementation of control strategies.Bull WHO,1999,77(8):65l-666.

2.钟豪杰,常昭瑞,张静.中国2007年细菌性痢疾监测分析.中华流行病学杂志,2010,31(3):304-307.

3.黎健,吴寰宇,顾宝柯,等.上海市细菌性痢疾的疾病经济负担研究.中华流行病学杂志,2010,31(10):1196-1197.

4.李佳萌,张颖,高璐,等.天津市细菌性痢疾流行情况及疾病负担研究.中华流行病学杂志,2009,30(10):1094-1095.

5.张良均,曹晶,蒋世忠.神经网络实用教程.北京:机械工业出版社,2009:31-77.

6.傅荟璇,赵红.MATLAB神经网络应用设计.北京:机械工业出版社,2010:83-97,267-285.

7.陈正利,李瑞兰,申振元,等.应用灰色模型预测痢疾发病率.职业与健康,2004,20(11):85.

8.张文增,冀国强,史继新,等.ARIMA模型在细菌性痢疾预测预警中的应用.中国卫生统计,2009,26(6):636-639.

9.陈莉.探讨ARIMA模型在细菌性痢疾发病预测中的应用.中国卫生统计,2011,28(4):417-419.

10.杨小兵,徐勇,彭磊,等.时间序列分析-广义回归神经网络组合模型在痢疾发病率预测中的应用探讨.中国初级卫生保健,2008,22(8):64-66.

11.朱晶,刘会民,赵冰,等.基于BP神经网络的SARS传播预测.生物数学学报,2007,22(2):288-292.

12.王玮,许伟,郑亚军,等.基于BP神经网络的围产儿出生缺陷患病率预测.中华流行病学杂志,2007,28(5):507-509.

猜你喜欢

痢疾网络结构传染病
《传染病信息》简介
传染病的预防
猪痢疾的诊断和防治
3种传染病出没 春天要格外提防
肉牛痢疾的临床表现及中西药治疗方案
基于AutoML的保护区物种识别①
基于时效网络的空间信息网络结构脆弱性分析方法研究
基于互信息的贝叶斯网络结构学习
高速公路高清视频监控系统网络结构设计
宠物可能带来的传染病