一种疾病流行趋势预测系统及方法
技术领域
本发明属于人工智能技术领域,具体涉及一种疾病流行趋势预测系统及方法。
背景技术
预防传染病和及时的健康危险检测是全球健康优先任务。疾病的防治,必须在“无病先防,有病早治,防重于治”的原则下进行。疾病的致病因素有很多,预防疾病必须先找出疾病和致病因素的关系,并消除或避免这些致病因素,使人体处于安全状态。分传染性和非传染性疾病两类,传染病是由病原体引起的,并能够在人与人之间或动物之间传染的疾病,具有传染性和流行性的特点。对于传染病,切断其流行的三个环节(传染源、传播途径、易感人群)的任何一个,都可终止传染病的流行。由于疾病与地域性、时间性、年龄以及性别等相关,因此,分析某时间段内某地域的疾病流行趋势显得尤为重要,通过疾病流行趋势的分析可以采取相应的预防措施,消除传染源、切断传播途径等,有助于疾病预防和控制。
现有技术存在的缺点:
(1)现有技术的预测结果值比真实值普遍偏低,准确性低;
(2)现有技术获取的预测结果仅依靠历史数据,存在一定的局限性;
(3)现有技术易造成过拟合和局部收敛问题。
发明内容
为了解决现有技术存在的上述问题,本发明目的在于提供一种疾病流行趋势预测系统及方法,用于解决现有技术存在的准确性低、存在一定的局限性以及易造成过拟合和局部收敛的问题。
本发明所采用的技术方案为:
一种疾病流行趋势预测系统,包括发病率数据采集单元、发病率预测单元以及发病人群预测单元,发病率数据采集单元、发病率预测单元以及发病人群预测单元依次连接。
进一步地,发病人群预测单元包括病历数据采集及预处理模块、特征词及样本生成模块、训练分类模型模块以及发病人群精准预测模块,病历数据采集及预处理模块、特征词及样本生成模块、训练分类模型模块以及发病人群精准预测模块依次连接,病历数据采集及预处理模块与发病率预测单元连接。
一种疾病流行趋势预测方法,基于疾病流行趋势预测系统,系统包括发病率数据采集单元、发病率预测单元以及发病人群预测单元,发病人群预测单元包括病历数据采集及预处理模块、特征词及样本生成模块、训练分类模型模块以及发病人群精准预测模块,方法包括如下步骤:
S1:使用发病率数据采集单元采集历史发病率数据及其相关数据;
相关数据包括历史疫苗接种数据和历史天气数据;
S2:根据历史发病率数据及其相关数据,使用发病率预测单元进行流行传染病发病率预测;
S3:判断流行传染病发病率预测结果是否超过阈值,若是则进入步骤S4,否则等待预设时间,并返回步骤S1;
S4:使用发病人群预测单元进行发病人群预测,获取疾病流行趋势预测结果。
进一步地,步骤S2中,进行流行传染病发病率预测的具体方法包括如下步骤:
S2-1:对流行传染病的发病率时间序列线性部分进行预测,获取当前流行传染病的第一预测值和发病率残差序列;
S2-2:根据发病率残差序列进行发病率残差预测,获取第二预测值;
S2-3:根据第一预测值和第二预测值,获取最终预测值,即流行传染病发病率预测结果。
进一步地,步骤S2-1中,使用灰色预测模型和ARIMA模型对流行传染病的发病率时间序列线性部分进行预测,其具体方法包括如下步骤:
A1:根据当前流行传染病的历史发病率数据获取检验发病率拟合序列和灰色预测模型,并将检验发病率拟合序列进行精度检验;
A2:判断精度检验的预测等级符合要求,若是则进入步骤A3,否则进入步骤A5;
A3:使用灰色预测模型获取当前流行传染病的历史发病率拟合序列和发病率预测数据;
当前流行传染病的发病率预测数据为当前流行传染病的时间序列线性部分,即第一预测值;
A4:根据历史发病率拟合序列和历史发病率数据获取当前流行传染病的发病率残差序列,并结束方法;
A5:判断当前流行传染病的历史发病率数据是否平稳,若是则直接进入步骤A6,否则将历史发病率数据进行若干次差分,并进入步骤A6;
A6:进行ARIMA模型参数求解,获取ARIMA模型,并使用其获取当前流行传染病的历史发病率拟合序列和发病率预测数据;
当前流行传染病的发病率预测数据为当前流行传染病的时间序列线性部分,即第一预测值;
A7:根据历史发病率拟合序列和历史发病率数据获取当前流行传染病的发病率残差序列,并判断是否结束迭代,若是则结束方法,否则进入步骤A8;
达到最大迭代次数或满足误差要求,结束迭代;
A8:调整ARIMA模型参数,并返回步骤A6。
进一步地,步骤A1中,灰色预测模型的公式为:
式中,为拟合值,根据后减运算,获取发病率拟合序列和发病率预测数据;均为估计值;k为指示量。
进一步地,步骤S2-2中,根据发病率残差序列使用LSTM模型进行发病率残差预测,其具体方法包括如下步骤:
B1:进行预处理,即对发病率残差序列、历史疫苗接种数据以及历史天气数据进行归一化处理;
B2:构建多层LSTM模型,并进行训练获得最优参数模型;
B3:将归一化处理后数据输入最优参数模型,使用滚动预测方法,获取第二预测值。
进一步地,步骤S4中,进行发病人群预测的具体方法包括如下步骤:
C1:使用病历数据采集及预处理模块采集病历数据并进行预处理,预处理的具体方法为:使用支持向量机根据特征词将病历数据中的文本转换为预设格式;
C2:使用特征词及样本生成模块获取高频病种对应病历数据的验证样本和训练样本;
C3:选取核函数并确定其参数,使用训练分类模型模块提取训练样本的特征向量;
C4:根据已确定参数的核函数,将训练样本的特征向量输入支持向量机进行训练获取分类模型,并使用验证样本对分类模型进行优化获取最优分类模型;
C5:使用发病人群精准预测模块采集人群样本,并将其输入最优分类模型,获取疾病流行趋势预测结果。
进一步地,步骤C3中,核函数的公式为:
式中,K(x,z)为核函数;z为核函数中心;σ为宽度参数;x为指示量。
本发明的有益效果为:
(1)本发明在提高发病率预测精度的基础上,加快了LSTM训练的收敛速度,减小了局部收敛和过拟合现象;
(2)本发明在发病率预测基础上综合各地区各种疾病的统计数据,通过支持向量机算法,快速、准确的预测出该区域某个时间段内的疾病流行趋势,有助于疾病的防范和控制,提高了实用性。
附图说明
图1是疾病流行趋势预测系统结构框图;
图2是疾病流行趋势预测方法流程图。
具体实施方式
下面结合附图及具体实施例对本发明做进一步阐释。
实施例1:
如图1所示,一种疾病流行趋势预测系统,包括发病率数据采集单元、发病率预测单元以及发病人群预测单元,发病率数据采集单元、发病率预测单元以及发病人群预测单元依次连接;
发病率数据采集单元的主要功能是在疾病预防控制中心获取过去几年每月每种疾病的发病率数据、疫苗接种数据,以及从中国气象科学数据共享服务网获取过去几年每月天气数据;
发病率预测单元基于计算机,主要功能是根据发病率数据采集单元提供的发病率数据,调用发病率预测模型进行流行传染病发病率预测,并整理流行传染病发病率预测结果数据;
发病人群预测单元的主要功能是采用支持向量机方法进行发病人群精准预测,得出某时间段哪个区域哪类人群最容易爆发该类疾病,提醒疾控中心注意,并提醒该类人群注射疫苗预防疾病发生;
发病人群预测单元包括病历数据采集及预处理模块、特征词及样本生成模块、训练分类模型模块以及发病人群精准预测模块,病历数据采集及预处理模块、特征词及样本生成模块、训练分类模型模块以及发病人群精准预测模块依次连接,病历数据采集及预处理模块与发病率预测单元连接;
病历数据采集及预处理模块的主要功能是通过采集在互联网平台上咨询的用户的电子处方信息,并对病历数据进行预处理,提取电子处方中用户的发病季节、年龄、性别、地域、病种等信息;
特征词及样本生成模块的主要功能是将经过预处理的病种作为索引,将各病种对应的发病季节、年龄、性别、地域作为特征词,并加入特征词典,选取高频病种对应的病历进行分析,将前面部分4/5作为训练样本,将1/5部分作为验证样本,并对训练样本进行人工标注;
训练分类模型模块的主要功能是以特征词为基础,对训练样本提取特征向量,输入支持向量机训练生成分类模型,使用验证样本验证分类模型的准确率;
发病人群精准预测模块的主要功能是将所有可能的人群数据集合送入分类模型,利用分类模型预测各种人群最易爆发的疾病,同时预测各种疾病的最易爆发人群;
如图2所示,一种疾病流行趋势预测方法,基于疾病流行趋势预测系统,系统包括发病率数据采集单元、发病率预测单元以及发病人群预测单元,发病人群预测单元包括病历数据采集及预处理模块、特征词及样本生成模块、训练分类模型模块以及发病人群精准预测模块,方法包括如下步骤:
S1:使用发病率数据采集单元采集历史发病率数据X(0)={x(0)(1),x(0)(2),...,x(0)(N)}及其相关数据;
相关数据包括历史疫苗接种数据Y(0)={y(0)(1),y(0)(2),...,y(0)(N)}和历史天气数据Z(0)={z(0)(1),z(0)(2),...,z(0)(N)};
S2:根据历史发病率数据及其相关数据,使用发病率预测单元进行未来一年每月全国各流行传染病发病率预测,发病率预测结果{x(0)(N+1),x(0)(N+2),...,x(0)(N+12)};
进行流行传染病发病率预测的具体方法包括如下步骤:
S2-1:对流行传染病的发病率时间序列线性部分进行预测,获取当前流行传染病的第一预测值和发病率残差序列;
使用灰色预测模型和ARIMA模型对流行传染病的发病率时间序列线性部分进行预测,其具体方法包括如下步骤:
A1:根据当前流行传染病的历史发病率数据获取检验发病率拟合序列和灰色预测模型,并将检验发病率拟合序列进行精度检验;
通过历史流行性传染病发病率数据X(0)={x(0)(1),x(0)(2),...,x(0)(N)}计算累加序列X(1)={x(1)(1),x(1)(2),...,x(1)(N)};
获取检验发病率拟合序列和灰色预测模型的方法包括如下步骤:
(1)建立矩阵B,y,其公式为:
YN=[x(0)(2),x(0)(3),...,x(0)(N)]T
(3)求逆矩阵(BTB)-1,根据求估计值和
(4)根据估计值和获取灰色预测模型;
灰色预测模型的公式为:
式中,为拟合值,根据后减运算,获取发病率拟合序列和发病率预测数据 均为估计值;k为指示量;
A2:判断精度检验的预测等级符合要求,若是则进入步骤A3,否则进入步骤A5;
A3:使用灰色预测模型获取当前流行传染病的历史发病率拟合序列和发病率预测数据;
根据灰色预测模型得到根据后减运算,得到n+1月的流行性传染病发病率预测值,即:其中,n=1,2,3,....N,N+1,N+2,....,N+12,因此,可得到历史流行性传染病发病率拟合序列和流行性传染病发病率预测数据
当前流行传染病的发病率预测数据为当前流行传染病的时间序列线性部分,即第一预测值;
A4:将历史发病率拟合序列和历史发病率数据x(0)(2),x(0)(3),...,x(0)(N)相减获取当前流行传染病的发病率残差序列并结束方法;
A5:判断当前流行传染病的历史发病率数据X(0)={x(0)(1),x(0)(2),...,x(0)(N)}是否平稳,若是则直接进入步骤A6,否则将历史发病率数据进行d次差分,在本发明实施例中,d<=2,并进入步骤A6;
A6:进行ARIMA模型参数(p,d,q)求解,获取ARIMA模型,并使用其获取当前流行传染病的历史发病率拟合序列和发病率预测数据
通过EACF大致确定阶数p、q,同时考虑AIC的大小,最终确定模型的阶数,确定模型的阶数以后,进行参数估计,并检验参数的显著性,模型的合理性;
当前流行传染病的发病率预测数据为当前流行传染病的时间序列线性部分,即第一预测值;
A7:将历史发病率拟合序列和历史发病率数据x(0)(2),x(0)(3),...,x(0)(N)相减获取当前流行传染病的发病率残差序列并判断是否结束迭代,若是则结束方法,否则进入步骤A8;
达到最大迭代次数或满足误差要求,结束迭代;
A8:调整ARIMA模型参数p,q,并返回步骤A6;
S2-2:根据发病率残差序列进行发病率残差预测,获取第二预测值;
根据发病率残差序列使用LSTM模型进行发病率残差预测,其具体方法包括如下步骤:
B1:进行预处理,即对发病率残差序列历史疫苗接种数据Y(0)={y(0)(2),...,y(0)(N)}以及历史天气数据Z(0)={z(0)(2),...,z(0)(N)}进行归一化处理;
B2:构建多层LSTM模型,并进行训练获得最优参数模型;
多层LSTM模型采用4层LSTM神经网络模型,激活函数采用RELU激活函数,损失函数采用均方误差函数,优化器为Aadm优化算法,采用Dropout方法防止过拟合;其中第一隐含层和第二隐含层均采用30个神经元,采取的Dropout比例为0.2;
B3:将归一化处理后数据输入最优参数模型,使用滚动预测方法,获取第二预测值;
S2-3:将第一预测值和第二预测值求和,获取最终预测值,公式为:
其中,n=1,2,...,12,即流行传染病发病率预测结果,即未来第一个月,第二个月,...,第十二个月的发病率预测值:x'(N+1),x'(N+2),...,x'(N+12);
S3:判断未来一年各月各流行传染病发病率预测结果是否超过阈值,若是则进入步骤S4,否则等待预设时间,并返回步骤S1;
预设时间为一月,更新历史发病率数据、历史接种疫苗数据以及每月天气数据;
S4:使用发病人群预测单元进行发病人群预测,获取疾病流行趋势预测结果;
进行发病人群预测的具体方法包括如下步骤:
C1:使用病历数据采集及预处理模块采集病历数据并进行预处理,选取10种常用流行传染病加入病种库,包含M项特征,1项类别,M表示特征个数,对于每种病例选择5000个样本,其中,4000个作为训练样本,1000个作为验证样本,预处理的具体方法为:使用支持向量机根据特征词将病历数据中的文本转换为预设格式:“<标记>特征1:个数特征2:个数……特征M:个数”;
预处理方法包括如下步骤:
(1)进行特征值提取,选取疾病的年龄特征、性别特征、地域特征以及季节特征,每个样本有4个特征值,即每个训练样本的维数是4,M=4;
在本发明实施例中,病历信息按如下方式提取特征:
发病时间:0:1-3月1:4-6月2:7-9月3:10-12月
年龄特征:0:0-15岁1:16-25岁2:26-35岁3:36-45岁4:46-55岁5:55岁以上
性别特征:0:男1:女
地域特征(将微问诊分布网点按地域进行特征标记):
0:山东省临沂市1:山东省枣庄市2:山东省滨州市3:山东省泰安市4:山东省济南市5:山东省东营市6:山东省济南市7:山东省烟台市8:山东省淄博市9:山东省潍坊10:山东省威海市……..69:新疆维吾尔自治区昌吉州昌吉市;
(2)特征值归一化,通常情况下,不同的数据类型往往有不同的量纲,数值之间的差距也可能很大,直接作为原始数据输入,在建模过程中所占据的相对较大的权重,会影响模型性能,为了有效利用数据,需要对其进行归一化处理;
将特征值归一化,归一化到[0,1]范围,特征归一化公式为:
式中,f为归一化前的特征取值;
在本发明实施例中,以年龄特征为例进行说明,“0-15岁”原本特征值为0归一化后为0,“16-25岁”原本特征值为1归一化后为1/5,“26-35岁”归一化后为2/5,“36-45岁”归一化后为3/5,“46-55岁”归一化后为4/5,“55岁以上”归一化后为1;
(3)样本标记,对病历数据进行标记,在本发明实施例中,共选择5000个第一种病例作为正样本,其中4000个样本作为训练样本,1000个样本作为验证样本;
经过以上三步,最终将病历文本数据转化为如下格式:<标记>特征1:个数特征2:个数……特征4:个数;
C2:使用特征词及样本生成模块获取高频病种对应病历数据的验证样本和训练样本;
C3:选取核函数并确定其参数,选取径向基核函数解决非线性数据在低维特征空间线性不可分的问题,使用训练分类模型模块提取训练样本的特征向量;
核函数的公式为:
式中,K(x,z)为核函数;z为核函数中心;σ为宽度参数;x为指示量;
选取构建模型所需的惩罚参数C和核函数参数g,通过交叉验证与网络参数寻优相结合的方法,确定最终的参数对C和g;
交叉验证采用K-flod交叉验证方法,其基本思想是将原始数据分成K组,一组数据代表一个子集,每一个子集都可以轮流当做一次测试数据集,另外的K-1组子集则作为训练数据集,由此产生K个模型,分别计算每一个模型各自的分类准确率,求其平均数作为最终的K-CV分类准确率,针对选用的数据集,设K=3进行交叉验证;
C4:根据已确定参数的核函数,将训练样本的特征向量输入支持向量机进行训练获取分类模型,并使用验证样本对分类模型进行优化获取最优分类模型;
在本发明实施例中,由于libsvm程序小,运用灵活,输入参数较少,并且是开源的,易于扩展,目前已经成为国内应用最多的SVM库;因此,本发明选用libsvm库将转换好的训练样本输入到libsvm库中进行多分类训练;
在本发明中采用一对一的方式来构建多类分类器,分类时将多分类问题分解为多个两分类问题,如果有k个疾病类别,总组建k(k-1)/2个分类器,每个分类器的创建都是以其中一种疾病作为正样本,另一种疾病作为负样本,输入到SVM分类器中进行训练,得到一个SVM分类器,重复上述操作,得到性能较优化的k(k-1)/2个SVM分类器,在得到SVM分类模型之后,需要将其进行保存;
对于第一个分类器,选取第一种病例和第二种病例做样本,分别以第一种病例做正样本,第二种病例做负样本,正样本负样本分别标记为“1”,“-1”,
<1>特征1:个数特征2:个数……特征4:个数
<1>特征1:个数特征2:个数……特征4:个数
<-1>特征1:个数特征2:个数……特征4:个数
将训练数据作为输入送入训练函数,得到第1个分类器,依次类推,分别得到第2个......第K个分类器;
C5:使用发病人群精准预测模块采集人群样本,并将其输入最优分类模型,获取疾病流行趋势预测结果;
训练好后的最优分类模型,根据地域、季节、性别、年龄,调用libsvm和训练好的SVM训练模型可以推测各年龄段当地当前季节男、女疾病的流行趋势,进而为预防流行疾病提供指导意见,同时也可以为根据当前用户可能发生的疾病,为用户推荐匹配度更高的医生。
在本发明实施例中,分别计算得出4种特征组成的3360(4*6*2*69)种人群分别最易爆发哪类疾病;当给定一个人群时,分别知道其地域、当前季节、年龄、性别,进行分类时,第一个分类器只需要判断是“第1类”还是“第2类”(即正样本还是负样本),如果是“第1类”,就给“第1类”投一票,如果是“第2类”就给“第2类”投一票,第二个分类器只需要判断是“第1类”还是“第3类”,如果是“第1类”,就给“第1类”再投一票,如果是“第2类”就给“第3类”投一票,以此类推,直到所有K个分类器都判断完成,最后统计票数,如果类别“1”得票最多,就判断该人最有可能触发第一种疾病;依次类推,直到4种特征组成的3360(4*6*2*69)种人群都分类;由此,得出某季节某地域某年龄段男,女分别最易犯的疾病。
结合上述得到的触发发病率零界点的疾病类型,得出容易得该类疾病的人群中得票率最高的人群,判定该类人群在该时间段最容易发生指定的疾病,给予疾病预防中心一定的指导意见,同时,当特定用户进行咨询时,给予相应对口医生推荐,由此提高问诊的效率。
本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。