队伍编号
题号
20206023
B
直面传染病毒:大流行预测、无症状感染者的分布建模以及防控举
措
广州数学建模联赛
摘要
本文着重讨论了用于大流行预测的 LSTM 时序网络、基于多重分层抽样和 U 检
测的无症状感染者分布模型、以及隔离措施和隔离委员会的选址方法。
针对第一个问题,本文结合经济、人口等数据对世界疫情的时序数据进行预处理
后,根据世界卫生组织宣布大流行的时间,给数据打标签,从而将大流行分析问题转
换为一个序列预测问题。之后,使用时序神经网络 LSTM 建模解决。
针对第二个问题,为了保证抽样的时序性、均衡性,文章设计了针对地域、年龄
段的多重分层抽样的方案。之后以地域为单位,使用问题一得出的模型,判断病毒在
其是否局部大流行。之后,根据地域的大流行与否、地域有症状感染者人数、以及无
症状感染者的一般占比,设计该地域的 U 检验原假设。根据假设检验结果,来判断地
域无症状感染者情况是否高危,进而建立整个地区无症状感染者的分布模型。之后,
针对感染者的分布情况,在采取隔离措施的同时,考虑对高危地域进行局部的全民检
测。最后,为了方便医疗资源、隔离物资的配送,本文建立了一个隔离委员会。并将
隔离委员会的选址、工作小组的值班路径转换为多旅行商问题,从而使用遗传算法算
出最优的地址和工作路径。
文章最后总结了建模过程中一些可取之处,以及一些不足和潜在的问题。并针对
遇到的问题,提出一些解决方案和后续要进行的工作。
关键词:序列预测;LSTM 神经网络;多重分层抽样;U 检验;多旅行商问题;遗传
算法;
1
I 介绍
1.1 问题重述
从材料中提炼出所需解决的问题如下:
(i) 根据世界范围内,流行病的确诊、治疗和死亡人数,结合当前世界的经济情况、医疗
条件、人口密度和疫情持续时间等因素,分析流行病成为“大流行”的定量条件。
(ii) 制定一个有效的抽样检测方法,并根据样本中无症状感染者的占比,对地区的无症状
感染者的分布情况建模,并籍此制定应对方法。
1.2 问题分析
针对第一个问题,可以收集世界确诊、康复、死亡随时间的变化数据,并与世界
GDP、人口数量、土地面积和国民调整平均净收入等,能够表征世界经济、医疗等情况的
数据相结合。同时,根据世界卫生组织宣布大流行的日期:3 月 11 日,给预处理的数据
打标签。从而将判断是否大流行的问题,转换为时序预测问题。之后,使用时序神经网络
——LSTM,在预处理后的数据进行训练即可。
训练完模型后,再将某个国家或地区的数据输入到模型中,即可输出相应的预测标签
序列。之后,将流行跃变到大流行的时刻,作为该国家或地区理应宣布(局部)大流行的
时间即可。再根据该时刻的疫情数据,即可分析出该国家或地区宣布大流行时疫情状况
(即定量条件)。
针对第二个问题,为了保证抽样的随机性、以及不同区域和年龄段样本的平衡性,本
文对地域和年龄段采取多重分层抽样的方式。之后,对于某一个区域,根据样本中无症状
感染者的人数,采用 U 检验的方式判断该区域是否属于高危区。其中 U 检验的原假设阀
值根据区域人是否大流行、区域确诊病例、无症状感染者在患者中的一般占比动态调整。
针对区域是否高危,可以考虑进行局部的全民检测,或再次分层检测来应对。
对于隔离措施,本文结合各大城市的隔离方案,整理了一套对感染者、密切接触者以
及治愈患者的隔离方法。另外,为了便于医疗资源、生活物资的合理配置,本文提出建立
隔离委员会的方法。并将隔离委员会的地址选取、工作小组的值班路径,转换为一个多旅
行商为题,从而使用遗传算法解决。
II 大流行预测模型的建立与求解
确定一个流行病在世界范围内是否“大流行”,必须根据目前流行病的确诊、康复和
死亡人数。当然,“大流行”不应该存在一个万能的阀值,使得其对任何流行病、任意时
2
间点都是用。这是因为世界是发展的,即使是 2020 年 3 月 11 日被认为是“大流行”的
新冠病毒,能够说它在 2025 年的同一时刻,依旧是“大流行”吗?答案是否定的。另外,
某传染病是否“大流行”,不应该静态的分析。换句话说,人们应该结合该传染病从开始
流行时刻起,到当前时间点的确诊、康复和死亡人数,来分析该时刻是否要定义该传染病
为“大流行”。
同样的,除了考虑数据的时序性之外,还要结合当前世界的经济情况、医疗条件、人
口密度,来分析当前是否有必要将传染病定义为“大流行”。由于世界的经济情况,可以
用各国的人均调整国民净收入来分析。而医疗条件,又与世界平均 GDP有关;同样,人口
密度与世界的土地面积、人口总数有关。因此,本文采用世界的人均调整国民净收入(以
下简称收入)、平均 GDP、人口总数和土地面积数据,来度量经济情况、医疗条件和人口
密度。
由于本文收集到的收入、平均 GDP、人口总数和土地面积数据,无法精确到天。为
了表述方便,后文将称这些数据为某个地区的静态数据。以 2018 年为例,世界的静态数
据如表1所示:
表 1. 2018 年世界静态数据1
GDP(万亿)1 人口 (十亿) 土地面积 (兆平方公里)1 收入 (千美元)
8.826
127.343
1 这里的美元都是指 2018 年年底的美元价格为单位,下同
2 即 1 106 平方公里
0.369
7.594
考虑到疫情大流的相特征,如持续时间、历史疫情、国家经济和医疗条件等相当复杂,
如果手工分析,未免挂一漏万。有鉴于此,本文将采用人工神经网络的方法,依靠机器学
习来自动地提取这些特征。因此,下面的预处理,是为接下来的神经网络模型 LSTM 准备
的。
2.1 数据预处理
如表1所示,由于有关世界状况的数据是静态的,而病毒的感染数据是时序的。因此,
在搭建神经网络之前,必须使用恰当的方法将两者融合起来。另外,为了将得出的模型应
用于其他情况,因此必须消除数据之间的量纲差。具体做法如下所示。
2.1.1 结合时序数据与静态数据
由于世界范围内,新冠病毒的确诊、康复和死亡人数是时序的,部分数据展示如表2所
示。
1数据来自世界银行:https://data.worldbank.org.cn/,由于 2018 年为最新数据,故后文亦将用此数据代
替 2020 年的静态数据
3
表 2. 世界范围内新冠病毒的感染情况
日期
2020/1/22 0:00
2020/1/23 0:00
2020/1/24 0:00
...
2020/5/8 0:00
2020/5/9 0:00
确诊
555
654
941
...
3938064
4024009
康复
28
30
36
...
1322050
1375624
死亡
17
18
26
...
274898
279311
然而,收入、平均 GDP、人口总数和土地面积数据等数据却是静态的。因此,这里
考虑将表2中的所有数据,除以收入、平均 GDP、人口总数和土地面积之积。设收入、平
均 GDP、人口总数和土地面积分别为 f1; f2; f3; f4,则上述处理可用式(1) 表示:
′
x
=
x
f1 f2 f3 f4
(1)
其中,x 为表格中任意数值。
经处理后,表格2转换为如表3所示。这样,在搭建模型时,就可以将静态数据与时序
数据同时考虑。虽然这种处理的方法看似比较粗糙,但应该说,数据预处理没有最好的方
法,只有最恰当的方式。结合后文的模型,读者就能够体会到这种做法的合理性。
表 3. 世界范围内新冠病毒的感染情况 (处理后)
日期
2020/1/22 0:00
2020/1/23 0:00
2020/1/24 0:00
...
2020/5/8 0:00
2020/5/9 0:00
确诊
1.767193
2.082423
2.996269
...
12539.32
12812.98
康复
0.089156
0.095524
0.114629
...
4209.582
4380.169
死亡
0.05413
0.057314
0.082787
...
875.3116
889.3632
2.1.2 最大最小值标准化
如前所述,由于后文采用的模型中,需要将表3的数据进行训练。即采用机器学习的
方法,挖掘出一个时序预测模型。所以数据量纲的不同,将会影响模型的训练效果。换句
话说,大量纲的数据将会无形之中,被给予较大的权重。这种与生俱来的大权重,会导致
模型“偏向”于某一列。
进行标准化,还可以降低模型的训练成本,提高收敛速度 [2]。另一方面,使用标准化
后的数据训练模型,还可以让模型更好地运用在除世界以外的国家、地区或城市中。换句
话说,这种标准化提高了模型的泛化能力。下面,本文将具体介绍其实现方法。
4
最大最小标准化是根据某一列的最大值、最小值,对该列进行处理,从而将数据压缩
为 [0; 1]。设某列数据为 x = fx1; x2; ; xmg,该列中最大值、最小值分别为 xmax; xmin,
于是最大最小值标准化可用式(2)表示:
xi xmin
xmax xmin
分别统计表格3中每一列的最大、最小值如表4所示。
xi =
(2)
表 4. 表格 3 中每一列的最大最小值
死亡
889.3632
0.05413
康复
4380.169
0.089156
最大值 12812.98
最小值 1.767193
确诊
对表3每一列的所有数据 xi,用式(2)对其进行标准化,从而转化为表 5,如下所示。
康复
死亡
确诊
表 5. 世界范围内新冠病毒的感染情况 (标准化后)
日期
2020/1/22 0:00
2020/1/23 0:00
2020/1/24 0:00
...
2020/5/8 0:00
2020/5/9 0:00
0
2.46E-05
9.59E-05
...
0.978639
1
0
1.45E-06
5.82E-06
...
0.961054
1
0
3.58E-06
3.22E-05
...
0.984199
1
2.2 模型原理与求解
由于“大流行”与否除了与世界的静态数据、当前疫情的蔓延状况有关以外,还与之
前的疫情状况有关,比如增长率、整体上升情况等。因此,判断“大流行”与否应该视为
一个序列预测问题。因此,可以使用序列学习算法,自动挖掘出“大流行”的判定条件。
由于序列学习属于机器学习之一,因此需要有一个训练集、测试集和模型,并且需要
给数据集打上标签。由于新冠病毒的“大流行”是 3 月 11 号开始公布的,因此对表5的数
据,将 3 月 11 号之前的都打上标签 0,3 月 11 号及之后的数据打上标签 1,表示“大流
行”,如表6所示:
5
表 6. 将数据打上标签,从而转换为序列学习问题
日期
2020/1/22 0:00
2020/1/23 0:00
2020/1/24 0:00
...
2020/5/8 0:00
2020/5/9 0:00
确诊
1.767193
2.082423
2.996269
...
0.978639
1
康复
0.089156
0.095524
0.114629
...
0.961054
1
死亡
0.05413
0.057314
0.082787
...
0.984199
1
大流行
0
0
0
...
1
1
于是,根据表6所示的数据,采用一个序列学习模型,即可自动挖掘出“大流行”的
定量条件。本文采用序列学习模型 -LSTM ,来挖掘定量条件。
LSTM 网络属于 RNN1网络中的一种。相对于 Elman、NARX 等序列神经网络 [3] [6],
LSTM 能够记录所有历史信息,而 Elman、NARX 只能记忆固定步长的信息。另外,不同
与传统的 RNN 网络,虽然其已能够记忆所有历史信息,但其长期记忆的能力却不如短期
记忆 [4]。而 LSTM 则没有这个缺点 [7],这也是其被称为 LSTM(Long-Short Term Model)
的原因。
下面,本文将详细介绍 LSTM 的原理,并搭建一个 LSTM 网络。同时将训练好的
LSTM 运用到国家层面,并展示其预测结果。
2.2.1 LSTM 神经元
BP 神经网络一般包含输入层、隐藏层和输出层。区别于 BP 神经网络,LSTM 神经
元的隐藏层的所有节点,均带有自循环。因此,本文更乐意称之为 LSTM 层。在 LSTM
层中,一个节点均带有反馈环节构成的自循环,将自循环展开,可将一个节点用图1 表示。
图 1. LSTM 层中神经元及其展开图2
其中 ht 为当前时刻,该神经节点的输出;xt 为输入;A 为运算处理块。
LSTM 神经元之所以能够学习时序数据,是根据 A 逐层传递的。如图2 所示,我们试
着观察经典 LSTM 网络2中,A 的内部结构:
1即 Recurrent Neuron Networks,序列神经网络意
2图1、2等均修改自http://colah.github.io/posts/2015-08-Understanding-LSTMs/
2也是本文采取的结构
6
图 2. A 的具体结构
其中 +; 分别表示向量加法、向量点积; 表示 sigmoid 激活函数,tanh 即正切函
数的反函数,两者如图3所示。
图 3. sigmoid 与 tanh 函数示意图
2.2.2 LSTM 处理原理
如图2所示,一个神经元包含一个复杂的运算处理块 A。为了展示其处理原理,分别
定义符号如图4所示:
图 4. 单个 LSTM 层神经节点的原理图
其中 Ct 为 t 时刻的胞状态;ht 为该神经节点的输出;xt 为输入向量;ft; it; C t; ot 为
7
中间变量,其可由如下公式算出:
ft = (Wf [ht−1; xt] + bf )
it = (Wi [ht−1; xt] + bi)
~Ct = tanh (WC [ht−1; xt] + bC)
Ct = ft Ct−1 + it ~Ct
(3)
(4)
(5)
(6)
其中 [ht−1; xt] 表示拼接向量 ht−1 与 xt 后得到的新向量;(); tanh() 分别为 sigmoid 和
tanh 函数;W; b 为中间变量对应的函数参数,两者需要通过训练求出。
在上式中,中间变量 ft 由 ht−1; xt 经由 sigmoid 函数输出。同理,ht−1; xt 经过 sigmoid
函数和 tanh 函数后得到 it; ~Ct。之后,胞状态 Ct 藉由 Ct−1; ft; it; ~Ct 根据式(6)求出,并与
ot 共同决定节点的输出 ht,如下所示。{
ot = (Wo [ht−1; xt] + bo)
ht = ot tanh (Ct)
(7)
(8)
从式(6)中可以看出,原胞状态 Ct−1 被 ft 点积,而 ft 为 sigmoid 函数的输出,必有
0 ft 1。因此,ft 也表示对原有状态的过滤或遗忘作用。这种遗忘作用,能够将太过久
远而对目前状态影响不大的信息遗忘掉,从而提高短期记忆能力。而 it; ~Ct 通过与 ft Ct−1
相加,表示累加作用,即将当前读取到的信息送入胞状态 Ct 中。通过这样的累加作用,
使得胞状态记忆了所有输入的历史信息。通过遗忘作用,又使得胞状态遗忘掉久远的、无
关紧要的信息。至于如何累加、遗忘,则依靠每个函数的参数 W; b,它们皆通过数据训练
得出。
因此,一个 LSTM 层的神经节点,通过存储上一时刻的胞状态 Ct−1, 输出 ht−1,并根
据当前输入 xt,结合式(8)最终算出 ht。通过遗忘、累加作用,使得神经节点能够动态的
记忆时序数据,并从中提取出有关信息。
2.3 模型建立、求解与评价
本节将根据上述内容,建立一个三层的 LSTM 网络。之后,使用表6所示的数据,将
其拆分为训练集、测试集,从而训练和评价该 LSTM 网络。
2.3.1 模型训练
本文建立一个三层的 LSTM 网络如图 5所示。
8