Influence maximization in social networks based on TOPSIS一文中,作者利用SIR模型如下:

即:种子节点处于感染阶段,其余节点处于易感,最终的评判以网络中恢复的人数来判断。
那么,不妨来了解下SIR模型是如何工作的。

SIR模型

经典的SIR模型提出比较早,我们都知道它存在三种状态,分别是:
Susceptible:易感人群,指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染;
Infective:感染人群,指染上传染病的人,他可以传播给易感人群;
Removed:移除人群,指因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。

随便百度下,我们都可以看见一些比较复杂的微分公式,如下图:

那么,接下来就来看看它是如何计算出来的。根据百度百科中介绍SIR模型的建立有几个基本假设:

基本假设

① 总人数N不变,即:不考虑人口的出生、死亡、流动等因素;即:
S+I+R=NS + I + R = N S+I+R=N
② 易感者、感染者和移出者的比例分别是s(t)i(t)r(t),满足:
s(t)+i(t)+r(t)=1s(t) + i(t) + r(t) = 1 s(t)+i(t)+r(t)=1
③ 易感者数目S和感染者数目I成正比,比例系数为β(感染系数);那么,单位时间(Δ(t)\Delta(t)Δ(t))内被感染的人数就是:
βNs(t)i(t)Δ(t)βNs(t)i(t)\Delta(t) βNs(t)i(t)Δ(t)
可以理解为:Ni(t)Ni(t)Ni(t)表示感染者的总人数,以感染系数βββ进行传播,而这种感染效应作用在以s(t)s(t)s(t)为比例的人群,而传播的时间为Δ(t)\Delta(t)Δ(t)。
也就是可以理解为,易感人群在时间Δ(t)\Delta(t)Δ(t)内,对易感人群进行的一个感染的结果。
④ 单位时间内从染病者中移出的人数与病人数量成正比,比例系数为γ(恢复系数),单位时间(Δ(t)\Delta(t)Δ(t))内移出者的人数为:
Ni(t)γΔ(t)Ni(t)γ\Delta(t) Ni(t)γΔ(t)
和上面的区别在于没有再乘r(t)r(t)r(t)的比例,因为Δr\Delta rΔr和RRR实际是无关的(即:现在治愈/死亡多少人和将来能治愈/死亡多少人无直接关系);而Δi\Delta iΔi的产生却和III是有关的(即:感染的人数一定是和原先就存在的感染人数是相关的)。

我们可以得出下面的一些结论:

相关结论

① 感染个体的增长率=期望的增长率-死亡/恢复率:
βs(t)i(t)−γi(t)βs(t)i(t) - γi(t) βs(t)i(t)−γi(t)
② 易感个体的下降率:
βs(t)i(t)βs(t)i(t) βs(t)i(t)
③ 移除个体的增长率:
γi(t)γi(t) γi(t)

易感者从患病到移出的过程可以用微分方程表示如下:
{ds(t)dt=−βs(t)i(t);di(t)dt=βs(t)i(t)−γi(t);di(t)dt=γi(t);i(0)=i0;s(0)=s0;通常初始取r(0)=0,i(0)+s(0)+r(0)=1;\begin{cases} \frac{ds(t)}{dt} = - βs(t)i(t) ;\\ \frac{di(t)}{dt} = βs(t)i(t) - γi(t) ;\\ \frac{di(t)}{dt} = γi(t) ;\\ i(0) = i_0 ;\\ s(0) = s_0 ;\\ 通常初始取r(0)=0,i(0) + s(0) + r(0) = 1; \end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​dtds(t)​=−βs(t)i(t);dtdi(t)​=βs(t)i(t)−γi(t);dtdi(t)​=γi(t);i(0)=i0​;s(0)=s0​;通常初始取r(0)=0,i(0)+s(0)+r(0)=1;​
关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线。

那么,我们不妨用Python来模拟下:

# %matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeintclass SIR(object):def __init__(self, beta, gama, s0, i0, r0):"""初始化模型参数:param beta: 感染系数:param gama: 恢复系数"""self.beta = betaself.gama = gamaself.initalization(s0, i0, r0)def initalization(self, s0, i0, r0):"""初始化易感者、感染者和移除者在总体人数N中的比例:param s0::param i0::param r0::return:"""self.s0 = s0self.i0 = i0self.r0 = r0def sir_model(self, y, t, beta, gama):"""定义模型函数,以输入到odeint()函数odeint()函数是scipy库中一个数值求解微分方程的函数即:dy/dt = [ds_dt, di_dt, dr_dt]  的微分方程"""s, i, r = yds_dt = - beta * s * idi_dt = beta * s * i - gama * idr_dt = gama * ireturn np.array([ds_dt, di_dt, dr_dt])def calc(self):# 均匀生成1-100的100000个数的时间点time = np.linspace(1, 100, 100000)# odeint()函数是scipy库中一个数值求解微分方程的函数return time, odeint(self.sir_model, [self.s0, self.i0, self.r0], time, args=(self.beta, self.gama))def plot(self):time, res = self.calc()plt.figure()plt.plot(time, res[:, 0], label="S(t)")plt.plot(time, res[:, 1], label="I(t)")plt.plot(time, res[:, 2], label="R(t)")plt.legend()plt.grid()plt.xlabel("time")plt.ylabel("proportions")plt.title("SIR model simulation")plt.show()if __name__ == '__main__':SIR(0.55, 0.1, 0.8, 0.2, 0).plot()

在上面的过程中,虽然拟合了SIR模型,但是存在一个问题,就是文中是如何处理的,也就是如何处理:所选定的不同种子节点集合在SIR传播模型上,最终传播效果有所不同?

因为,在上面SIR模型中,并非是针对特定的节点进行模拟,而是根据初始S/I/R三种状态的比例,以及感染系数beta、恢复系数gama来进行,而没有考虑到不同的节点的因素。那么如何确定所选定的K个种子节点,就是选择的最优的呢?

这个问题我们在下篇进行思考。

SIR模型的应用 - Influence maximization in social networks based on TOPSIS(3)相关推荐

  1. Influence maximization in social networks using transfer learning via graph-based LSTM

    基于图LSTM的社交网络影响力最大化问题迁移学习 前言 文章内容 摘要 特征提取 标签生成 用基于图的LSTM训练模型 选LSTM的原因: 基于图的LSTM: 迁移学习 提出的模型架构 提出的算法 训 ...

  2. Information and Influence Propagation in Social Networks学习笔记

    Information and Influence Propagation in Social Networks学习笔记 Wei Chen dalao写的书,在传播问题上感觉写的写的很详细,因为之前看 ...

  3. FIP: A fast overlapping community-based influence maximization algorithm using probability coefficie

    FIP: A fast overlapping community-based influence maximization algorithm using probability coefficie ...

  4. Grain: Improving Data Efficiency of Graph Neural Networks via Diversified Influence Maximization分析

    Grain论文详解 Link: Grain: Improving Data Efficiency of Graph Neural Networks via Diversified Influence ...

  5. 结点重要性与SIR模型基础代码

    SIR模型 # simulate the information diffusion under SI model import networkx as nx import numpy as np i ...

  6. vecm模型怎么写系数_经典传染病的SIR模型(基于MATLAB)

    经典的SIR模型是一种发明于上个世纪早期的经典传染病模型,此模型能够较为粗略地展示出一种传染病的发病到结束的过程,其核心在于微分方程,本次我们利用matlab来对此方程进行 其中三个主要量 S是易感人 ...

  7. 生物计算:SIR模型笔记

    1SIR模型 susceptible(易受感染的但没有被感染的) infected(感染的) recovered(恢复并免疫了的) 1.1  状态定义 第t天: 状态为S的人数 x(t) 状态为I的人 ...

  8. 【论文阅读】SIR模型下网络中多信息源检测 2014-IEEE

    多地方传染,多地方泄露. 三种算法: (1)树状网络,已知信息源数量,识别信息源. (2)一般网络的启发式算法,已知源数量,识别信息源. (3)信息源数量未知,估计源数目. (一)(聚类和定位) &q ...

  9. 《改进SIR 模型在社交网络信息传播中的应用》仿真实现

    摘要 基于<改进SIR 模型在社交网络信息传播中的应用>一文中提出的改进SIR模型,使用Matlab进行了仿真实现.另外,基于原文的模型,依据实际话题热度进行了其它仿真和分析. 背景 信息 ...

  10. 传播动力学--SIR模型及其应用

    王道谊 2020年3月 1.   传播动力学 "道生一,一生二,二生三,三生万物."  ---<道德经> 所谓"不积跬步无以至千里",任何变化都是由 ...

最新文章

  1. 论文: 贝叶斯优化方法和应用综述(1)--------陈述设计类问题举例子,与 model-free优化计算的对比
  2. Android 自定义 圆环,Android自定义view实现圆环效果实例代码
  3. linux--监控系统之Zabbix简介(二)
  4. OpenCASCADE:Modeling Algorithms模块几何工具之来自约束的线和圆
  5. 面试题解(3):SQL
  6. 为什么银行大额存单没有4年期?想存4年期怎么办?
  7. python 新式类和旧式类_python新式类和旧式类区别
  8. MySQL数据库专家分享资深DBA经验
  9. 1.2 架构结构和视图
  10. 军用软件开发周期和文档
  11. mtk刷机工具sp flash tool_qpst刷机(翻到高中刷机时的记录,想来qpst对现在玩机的人也有用吧...
  12. 计算机网络实验二局域网络搭建,计算机网络实验二简单共享局域网组建.doc
  13. PS修改图片上的文字
  14. 如何在论文中正确引用参考文献(自动标注)
  15. 1.一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。 这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?2.角谷定理。
  16. 做硬件,想当然,犯大错
  17. 任性安装苹果应用,安装包在手天下我有
  18. 文本上划线_如何在Word中对文本进行上划线
  19. c语言的积木编程,c语言入门3,自己造积木,掌握它就能随心所欲的完成各种工作了...
  20. Java简单语句项目练习——英雄联盟商城

热门文章

  1. 【计算机毕业设计】基于SpringBoot的物流管理系统
  2. 超轻量级Web安全漏洞扫描工具Netsparker使用教程介绍
  3. 使用补丁修改DSDT/SSDT [DSDT/SSDT综合教程]
  4. C语言--大小端转换
  5. LNMP(Nginx服务,MySQL 服务,安装PHP服务 手动安装技术文档)
  6. chromium thirt_party skia编译shared_liberary
  7. SPSS26版本软件超详细安装指导+内附安装资源
  8. Unity3D编译器汉化
  9. 益智棋类游戏--走四棋儿
  10. 简单介绍四方聚合支付系统