logo资料库

广州数模联赛垃圾论文.pdf

第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
资料共36页,剩余部分请下载后查看
介绍
问题重述
问题分析
大流行预测模型的建立与求解
数据预处理
结合时序数据与静态数据
最大最小值标准化
模型原理与求解
LSTM 神经元
LSTM 处理原理
模型建立、求解与评价
模型训练
模型求解与评价
大流行模型的运用
不同年代的世界“大流行”的条件求解
国家层面的大流行宣布时间推算
地区层面的大流行宣布时间推算
抽样方法、分布模型与隔离措施
抽样方法与假设检验
多重分层抽样法
单侧U检验
阀值po的确定
无症状感染者的分布模型
隔离措施
不同情况下具体的隔离措施实现
隔离委员会地址的选取
遗传算法求解委员会地址、小组工作路径
结束语
模型优点
模型的缺点
未来工作
附录
附录
代码文件:1世界卫生数据处理.py
代码文件:2数据预处理与模型训练.py
代码文件:model_use_for_world.py
代码文件:model_use_for_china.py
代码文件:mtspofs_ga.m
代码文件:MTSP.m
队伍编号 题号 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
分享到:
收藏