广义西珥在大型网络模型

下载幻灯片

西珥模型是一种广泛使用的模型模拟传染病的传播。在其最简单的形式,西珥模型假设个人的人口可以承担任何四个州:易感,暴露,感染和恢复(或删除),系统的演化建模为常微分方程组。虽然这个简单的模型表现良好在建模大量密集的人口,它不捕捉人口子结构和互动的变化的影响。

解决这些问题,一般西珥模型模型的人口作为一个网络节点是个人和边缘代表个体之间的相互作用。这个模型Covid19大流行期间吸引了更多的关注,有python实现,仿真在单个节点上运行。

在这个演讲,我们将讨论使用火花实现广义西珥模型和图表分析库如GraphFrames和使用随机模拟方法预测Covid19使用砖的传播。

看更多的火花+人工智能会话

免费试着砖

视频记录

今天,感谢大家加入。我的名字是阿米尔Kermany我解决方案架构师在砖,我关注我们的健康和生命科学实践。今天,我将谈论西珥模型,它是一个框架模型的传播传染性疾病在一个封闭的人口。我将展示如何使用mlflow和火花,在Python环境中有效地模拟COVID-19的传播。

建模传染病

所以,我真的很喜欢这个说,“所有模型都是错的,但有些是有用的。“所以,这些模型是用来做什么的,特别是对于建模传染病。

的主要用途是估计,我们想估计与传染病相关的基本参数,如传播的速度。每个人都是项目未来的行为方面的疾病和人口被感染,有多少人会感染或命运的死亡率为例,投影,并在此基础上,我们想通知的政策。所以,现在,我改变的行为,现在我们听说过平曲线直接植根于这西珥模型,西珥模型实际上,它是植根于先生的简单模型,这个模型假设,个体的人口是分为三个不删,他们可以采取三个州的易感,感染或从疾病中恢复或死亡。实际上,第一个例子这样的模型在一系列的论文发表在20年代末30年代初,或多或少地当你想到它是10年后西班牙流感大流行。

这个西珥模型添加额外的接触状态。这模型是用于疾病,有一个潜伏期,这意味着有一个时间之间的接触和感染发生的时间,这也许是COVID-19有效。

所以,在这个模型中,个体敏感的(听不清)状态。是一种过渡状态的暴露率β,β是他们个人每接触传播的速度。然后速度σ,在暴露个人传播感染,感染到被感染的传播速度是这种疾病的潜伏期的倒数。然后速率γ,人感染,恢复。回收率是传染期的逆COVID-19, W =我们知道这就像14天左右。或者个人的速度等于疾病的死亡率,他们可以删除。

也有可能,恢复个人,他们不维护他们的免疫力,他们可以回到敏感。在这种情况下,我们有另一个利率回到敏感状态。最初COVID-19,有最初的报道的相关研究我们发现,那些被感染,他们再次被感染(听不清)然而,事实证明,这是主要是由于误判率。因此,我们可以假设个体恢复他们维持他们的免疫力,这是假设,我们将致力于在这演讲。

基于这些假设,我们可以写下一系列微分方程,这基本上是一个描述系统的演化动力系统而言,有多少人在每个州有多少人受到感染或恢复。

的假设,当我们写作常微分方程组。所以,我们忽略了chasticity和系统中偶然事件。能够做到这一点我们假设人口规模较大,它是恒定的。和个人在这些州是独立个体的特征,比如年龄,或者,并发症和其他因素。此外,我们假设内疾病的传播是均匀的人口和没有交配子结构等网络效应。

确定性模型与测试

同时,我们可以添加测试的影响,该模型意义,例如,你可以问人暴露他们可以传输检测暴露或检测到传染性,取决于速度在人群中我们测试样品。

在python中广义西珥模型运行

因此,正如我所说的,这是一个动态系统。您可以使用Python容易为确定性模型。您可以使用Python来解决这个系统方程的数值。没有封闭形式解,所以我们总是使用数值方法来解决这些问题,我们将使用Python包中实现称为盈余在gitHub。这个包有一个确定的框架以及随机框架,我将稍后讨论,它结合了网络效应的影响为例,并允许您偏离这些假设,我们现在的确定性。相关显示我们如何开始使用数据库平台我们可以使用mlflow和hyperopt通知政策为例,我们希望看到关闭的影bob体育客户端下载响经济和社会距离,看看这些参数对死亡率假设产生影响。我还将讨论如何使用,引发大规模并行模拟许多随机路径,看看感染的平均数量。

这是编写运行盈余模型的一个例子。轻松你可以启动并实例化一个类的随机模型,初始化参数,默认参数实际上是基于我们知道COVID-19传输速率和再感染的速度恢复。所以,在这个例子中,你可以看到在左边的曲线,所以,如果我们运行仿真,仿真一段像300天,我们看到,16%的人口可以被感染。

确定性模型

然而,在这个包中,您可以指定检查点,在给定的时间,t0你强加,假设社会距离。并同意你显示社会距离的时间,你已经使用β,传播速度。然后看的影响。曲线,如您所见,现在的社会距离一段,比方说,50天,你明显,使感染的数量下降。这是一个例子,我们在谈论的护理。

拟合数据模型

让我们去看我们如何使用这个模型来执行他们提到的第一个任务,就是系统的参数估计。所以使用确定性模型,他们可以让得到一个封闭形式方程近似为疾病的传播。然后基于我们可以使用例如,古典工具如curve_fit scipy曲线拟合和估计这些模型。另一种方法是使用启发式方法,在这里,我将展示如何这样做。假设你想估计β和UI。

比较我们与西珥模型数据数据

首先,让我们来运行模型。所以仿真基于我们知道从COVID-19默认参数。在这种情况下,我运行它的周期与周期,我们已经为美国人口数据。所以左边的情节,你所看到的数据是包含在数据砖,COVID下数据集。和基于约翰霍普金斯医院的数据集,这是显示的感染和死亡人数在美国,这一段时间。如果我运行仿真使用默认参数在同一时间,这是你所看到的。所以你所看到的蓝色,右边图证实感染的数量,和橙色,你所看到的它是预测的模型。这实际上跟踪很好,记住,确诊病例的数量总是低于实际感染人数,因为确诊病例的发现。所以现在如果我想估计这些值,一个,我能做的是,写一个Python函数,仿真运行。然后运行仿真后,我得到他们想要的感染或死亡的数量,在这种情况下,我使用基于仿真的死亡数量。 And then also I read the data from the actual US population. And what I would do I define a distance is the Euclidean distance between the path between the simulated data and the actual data and we find the loss function based on that and return the but the output of the function is the loss function. Which is the distance between the predicted number of deaths and the actual number. Next, I can use hyperopt, which is this package in Python that used a Bayesian approach for searching a grid of hyper parameters to minimize a cost function. So if I run that, in this case, I want to estimate beta and DUI. And as you see after running it in parallel with (mumble), I can get a very good approximation, based on the model in orange what you see is the predicted number of deaths based on what we get from the model. And in blue is the actual number of deaths that you get from the data. So this is again, this is a very heuristic approach of searching the grid of parameters for finding the best fit to them all.

不同干预措施的影响是什么?

使用这张地图技术的另一个例子与hyperopt和管理mlflow,假设我想看看有什么影响(听不清)的干预?例如,我想知道,如何早期我们应该关闭,你知道,一个像人口社会距离应该多长时间,可能,也应该是多少,我们想降低传输速率。这是再一次,我可以指定一些超参数。然后在我成本函数,定义基于这个Python功能定义,成本函数可以总死亡人数,加上与关闭经济相关的费用,比如,你要关闭的时间,然后接下来我们可以运行一遍我是我用mlflow运行。

mlflow

我用hyperopt数据砖之间环境现场试验。但是我也使用mlflow跟踪所有这些不同的仿真。如果我看MLflow仪表板,我可以看,这些参数的影响。例如,在左上角,的散点图可以看出,显示的时间长度的影响,你关闭经济。在x轴上,你已经死亡。在x轴上,你有时间和轴的长度你有死亡。如你所见,时间越长,病死率越低。

下面的情节,这是更好地显示这些参数的影响,这三个参数,进入这个关闭运动,如果我们现在看看这个,我们看到,成本最低的死亡,是对应于早些时候关闭经济,社会,早些时候是t(模糊)。尽快和尽可能同时尽可能严重喜欢使用传输速率,这显然是一个检查的方法这是显而易见的,但你可以想象,在实际情况中,你可以有更复杂的场景,更复杂的成本函数,这些参数的影响并不明显,但仍然可以使用相同的技术来描述每一个在你的模型的影响。

这两个情节显示实际的曲线对应于最有效的策略是不关闭了很长一段时间。你看到第二波比较严重,你关闭它在很短的时间内,一个更长的时间和更严重的和你有一个不太严重的第二受欢迎的。

所以,我提到了假设我们在随机和确定的解决方案。第一个是人口规模大的常数。例如,另一个是易感性无关年龄和其他的事情。但我们现在知道COVID-19高度H,例如,是一个很大的行列式在病理和感染率。这不是一个假设:人们想要的。另一件事是假设传播的速度是独立的人口结构。这是我从《华盛顿邮报》,他们有一个很好的信息图表显示在韩国,个人参加教堂服务如何负责使很多人感染。这是一个很好的例子目录联系的网络效应,一些人为了明显不成比例地导致了疾病的传播。所以在此基础上,我们可以把网络的影响。

所以在这个盈余模型,您可以指定交互网络。的假设是建立在个体暴露人群中谁从社区作为一个整体或受感染的个人在其网络内的人口。所以,当你保存它可能假设概率P,个人承包的疾病社区,在这种情况下非常类似于确定性模型。和互补的概率1 - P,个人可以从一个人被感染,他或她是直接联系联系在网络或网络。类似于确定性模型,个人暴露现在转换到被感染概率的这个时候σ。然后同样,其他转换发生在人口为例,个人现在网络中感染可以得到另一个个体暴露,让个人可以去影响。现在个人感染转换与房地产伽马被恢复。所以,这是旧的,被从系统中删除。所以,这实际上是我使用的剩余包。您可以指定这个网络,它还带有预构建的网络,您可以指定两个参数的控制度的分布在网络的连通性。 And in this case, also you can specify for example, that social distancing is more realistically described can be Specify by imposing a network that the average connectivity of individuals are the average GPA of individuals is a lot lower. So, this example is running the surplus in the stochastic mode, where the initial network distribution of degrees in a network is shown in the histogram that you see on the right top side of the top right graph.

社会距离是由减少网络的平均度,这就是你看到底部直方图。如你所见,当你对这种社会距离,你看到的是一个压扁的感染。然后如果你回去打开这个,回到最初的交互网络,你将会看到一个峰值,但它走下来。

所以当我们谈论的是随机模拟,如果你熟悉什么,特性转化意味着每个仿真的实现将不同于另一个。所以通常,当我们有随机模拟,我们希望总结果和许多的模拟运行,这是一个尴尬的并行任务。所以我们想做什么,我们希望能够轻松地分发多个模拟,然后看看平均路径。这是一个很好的用例我们可以利用UDF的火花可以包装你的模拟器的功能你模拟这种情况下,这是你的经典的声学模拟,而不是Python函数,然后您可以使用Python UDF,火花UDF在大许多模拟运行。

并行模拟与火花

我只是给这个例子,你跑到给定的系统参数,但实际用例价值显示本身如果你假设你想看看大量参数和运行多个模拟的同时,你可以喂这些参数到这个UDF和同时运行很多模拟。引发聚合的方法,例如,在数据帧平均找到的意思。现在,让我们看看什么网络的影响所以我感兴趣,我将运行仿真,在这种情况下,我在运行简单的socastic模拟20倍。然后取平均的预测数量的时间序列的预测感染的数量。然后我要这些不同模拟之间的不同是,我改变了我的网络结构,从左边的左边,我有一个网络,人们的平均程度不是很多,向右,我增加了平均程度的度的分布在网络中,人们相互联系得更加紧密。如你所见的情况下,网络更多的是一种紧密的网络,我们有更多的偏离将确定在这种情况下的预测。和增加网络的程度我很抱歉,这个我们可以回到一个幻灯片吗?

这是我重新开始的地方。

是的,不用担心,这有点复杂。我现在开始。所以我想知道的是比较这个随机预测的确定性预测为例,在这种情况下,我运行仿真的20倍,唯一我穿不同运行之间的不同是,我改变网络的结构。这下,如你所见,在左边,我有一个网络,紧张和个人不是很多连接到网络平均度约11个人非常连接。所以你有平均互动的人很多。如你所见,在左边,我最偏离预测的确定性模型。这是预期,因为确定性模型忽略了网络结构。我增加了度,我越来越接近确定性模型的预测。在这种情况下,然而,我假设5050年分裂的可能性,一个人被感染由于与整个社区交互相比还有50%的机会,个人实际上是构造仅在其网络这是亲密的朋友或家人

所以,现在如果我改变,平衡,这样更加重视的收缩来自网络,即个人直接相互作用

社区作为一个整体。所以,相当于将想象我们正在关闭

工作区人们在家工作等等。在这种情况下,你看到的是,你甚至有更多的偏差与网络,人们在网络互动很多,你有很多更多的确定性模型的偏差。所以,其实你有很多感染更少。所以,这是一种模拟表明,是的,如果人们住在网络,很明显,感染的总数将会更少。所以,其他参数现在我可以改变我的值的大小网络如果我增加,这并不是说,效果将消失还是我们将看到这个偏差甚至确定性模型的一个更大的人口。这东西肯定不是因为如果你还记得假设人口人口对于确定的情况下,被认为是大。和另一件事是,我们假设有一个人口子结构和它所强调的偏差,我们看到确定性情况主要是由于网络的结构,而不是人口的规模。如你所见,现在效果才更光滑解释这段录像。

总结一下,我只是想告诉你,如何在Python中使用此西珥的实现两个组合起来使用mlflow和hyperopt运行

并行模拟随机和确定的设置,运行模拟,使用,例如,观察行为的影响不同的政策,不同的参数对疾病的传播的影响,这可以使一个有用的投影的感染。我还表明,我们可以使用如何引发并行化模拟。这是有趣的原因通常当你起飞引发越来越多我一个ETL工具,有很多并行工作。但是优点之一,使用火花是它可以很容易地分配其样本模拟等任务,在许多机器,非常灵活。如果你看着云环境,你可以分配在很多机器,您可以运行很多模拟同时,然后马上在产出和使用聚合得到的结果非常及时。同时运行的仿真和实验,我们看到一些有趣的因素,例如,我们看到的一件事是他们实际上我们正在考虑实施网络和子结构和网络结构。在西珥类中,我们看到显著偏离从确定性模型预测。显然,这是一个例子的一个例子。有许多其他的例子,我们使用,我们有机构模拟传染病,还有其他西珥的实现,或者你甚至可以在Python中使用自己的代码实现和轻松。但是,我们可以获取和使用这些技术来运行实验和运行在一个分布式的方式。

看更多的火花+人工智能会话

免费试着砖
«回来
对阿米尔Kermany

阿米尔Kermany砖的是健康和生命科学的解决方案架构师,他利用他的专长在基因组学和机器学习来帮助公司解决他们的问题的空间产生可行的见解从大量的健康相关的数据集。Amir过去的职位包括AncestryDNA老员工科学家,老在Shopify数据科学家,博士后学者霍华德休斯医学研究所和蒙特利尔大学的。他拥有一个博士学位的数学生物学,MSc在电气工程和二元同步通信。在物理。