课程链接:CS224W: Machine Learning with Graphs
课程视频:【课程】斯坦福 CS224W: 图机器学习 (2019 秋 | 英字)
目录
1. Probabilistic Spreading Model——从传染病的传播开始
基于概率的信息传播模型的一个很好的例子就是病毒的传播。我们可以基于随机树(random tree)来建立传染病的传播模型。(树可以看成是基于图传播过程的一种变体)
我们首先假设有一个“零号病人”感染了这个病毒。这个病人有
d
d
d个密切接触者,每个密切接触者有
q
>
0
q>0
q>0的概率被传染。那么,随着传染的过程,如果这个概率依旧大于零,病毒会继续传播下去;如果感染概率等于零,病毒将不会继续传播(所以切断传染源和隔离非常重要)。
设
p
h
p_h
ph表示第
h
h
h层的节点感染病毒的概率。那么:
也就是说,某一层节点被传染的概率和上一层节点被传染的概率相关。这样我们可以通过迭代去计算
lim
h
→
∞
p
h
\lim_{h \to \infin}p_h
limh→∞ph。我们考察迭代函数的性质:
f
(
x
)
=
1
−
(
1
−
q
⋅
x
)
d
f(x)=1-(1-q \cdot x)^d
f(x)=1−(1−q⋅x)d
递归方程从
x
=
1
x=1
x=1开始,
x
1
=
f
(
1
)
x_1=f(1)
x1=f(1),
x
2
=
f
(
x
1
)
x_2=f(x_1)
x2=f(x1),
x
3
=
f
(
x
2
)
x_3=f(x_2)
x3=f(x2),……。
我们可以定性地去分析一下
f
(
x
)
f(x)
f(x)的形状。
x
x
x表示第
h
−
1
h-1
h−1层的节点被传染的情况下,
h
h
h层节点被传染的概率。
- 由 f ( 0 ) = 0 f(0)=0 f(0)=0可知,函数 f ( x ) f(x) f(x)经过原点。也就是说,如果一个人的密切接触者都没有被传染,那么他也不会被传染。
- f ( 1 ) = 1 − ( 1 − q ) d < 1 f(1)=1-(1-q)^d<1 f(1)=1−(1−q)d<1。也就是说,即使一个人是一个确诊病人的密切接触者,但他也不一定被感染。
- f ′ ( x ) = q ⋅ d ⋅ ( 1 − q ⋅ x ) d − 1 f'(x)=q \cdot d \cdot (1-q \cdot x)^{d-1} f′(x)=q⋅d⋅(1−q⋅x)d−1,可知 f ( x ) f(x) f(x)的导数是单调递减函数,且 f ′ ( x ) ∈ [ 0 , 1 ] f'(x) \in [0,1] f′(x)∈[0,1],也就是说 f ( x ) f(x) f(x)随着 x x x的增加,曲线的斜率会越来越小,逐渐平缓。那么函数 f ( x ) f(x) f(x)的曲线形状如图中的红线所示。换句话说,如果一个人接触的人中被感染的概率越大,他自己被感染的风险也越大——但是这个风险值最终会趋于一个定值——这个定值会小于1。
如果我们希望疾病不再传播(die out),红色的曲线必须要在
y
=
x
=
1
y=x=1
y=x=1这条曲线之下。因为如果红色曲线与
y
=
x
=
1
y=x=1
y=x=1这条曲线有交点(如上图所示),那么就会出现一个不动点
f
(
x
)
=
x
f(x)=x
f(x)=x——也就是这两条曲线的其中一个交点。也就是说,如果某一层的感染概率达到了
x
x
x,那么它之后所有的节点被感染的概率都是
x
x
x了(注意函数
f
(
x
)
f(x)
f(x)表示的是上一层节点被感染的概率为
x
x
x时,这一层节点被感染的概率)——也就是说,病毒会以传染概率
x
x
x这样传播下去,不会消亡。
那么,我们又知道,函数
f
(
x
)
f(x)
f(x)的曲线斜率会不断平缓,最开始的斜率
f
′
(
0
)
=
q
⋅
d
f'(0)=q \cdot d
f′(0)=q⋅d决定了红色曲线的走势。并且,只有
f
′
(
0
)
=
q
⋅
d
<
1
f'(0)=q \cdot d<1
f′(0)=q⋅d<1时,才有
lim
h
→
∞
p
h
=
0
\lim_{h \to \infin}p_h=0
limh→∞ph=0。
在医学中,定义基本传染数 R 0 = q ⋅ d R_0=q \cdot d R0=q⋅d。只有 R 0 ≥ 1 R_0 \ge1 R0≥1时,也就是疾病传染人数大于1时,才会形成传染病的流行。,艾滋病的基本传染数为2-5,麻疹的基本传染数为12-18,埃博拉的基本传染数为1.5-2。基本传染数只是表示疾病在传播上的概念,并不能表明疾病的致死严重程度,例如埃博拉这种死亡率很高的疾病的基本传染数很低,是因为它的致死率太高了,病毒还没有来得及找到下一个宿主,现在的宿主就已经死亡,所以基本传染数会很低。
我们进一步分析基本传染数的公式 R 0 = q ⋅ d R_0=q \cdot d R0=q⋅d,可以发现有两个基本的遏制传染病传播的方式:
- 降低 q q q,也就是降低人与人之间的传染概率——养成良好的卫生习惯!
- 降低 d d d,也就是降低接触节点的数量——隔离!
2. 案例应用——Social cascades on Flickr and estimating R 0 R_0 R0 from real data
Flickr social network——用户通过好友链接与其他用户连接。用户之间可以互相点赞对方的图片。
图片可以通过用户的点赞来进行传播(这里的图片相当于病毒)。这个实验统计的就是某张图片在100天被点赞的情况——考察这张图片的点赞量随着网络传播的情况。
那么,我们从实际数据中得到的基本传染数
R
0
R_0
R0称为经验传染数。其中
q
q
q表示某个已经感染的节点,其邻居节点中被感染的期望。
分析结果:
对结果的讨论:
- 社交网络的 R 0 R_0 R0在1-190之间。
- 这比麻疹等传染性很强的疾病要高得多,说明社交网络是有效的传播媒介,在线内容具有很强的传染性。
3. 传染病模型 Epidemic models
这一节主要讲更general的传染病模型。
在这个模型中,定义两个参数:
- (Virus) Birth rate β \beta β:Probability that an infected neighbor attacks
- (Virus) Death rate δ \delta δ:Probability that an infected node heals
可以看到,和第一节的传染病模型相比,这一节的传染病模型考虑了人类医疗的介入。对于某个节点来说,他有一定的概率被治愈,相当于它的感染概率就被降低为0了。
传染病的传播动力学模型:
这类模型相当于建立了一个传染病的传播机制,用以模拟传染病的传播模式。对于埃博拉这类复杂的病毒,就需要构建一个SEIR模型去了解,有一篇论文Estimating the Reproduction Number of Ebola Virus (EBOV) During the 2014 Outbreak in West Africa可以看一下。
关于最近的新冠疫情也有很多分析是基于SEIR模型的,网上有蛮多关于这个模型介绍的资料的,可以自行搜索学习一下。
SIR model
在SIR模型中,传染病的传播机制只有“疑似-确诊-治愈”三个阶段,只适用于水痘或者瘟疫这样的传染病——一次得病,终身免疫。
图中表示的是三个阶段人数的变化趋势。这类传染病暴发时,疑似人数会越来越少,治愈人数会越来越多,感染人数会出现一个峰值,峰值之后每日的新增病例逐渐没有。
SIS model
类似的,SIS模型中病毒的传播机制有“疑似-感染-疑似”三个阶段。例如流感病毒,季节性爆发,不能终身免疫。不过,在刚刚病愈之后,你会获得很强免疫力。
这里定义一个参数——Virus “strength” 病毒强度:
s
=
β
δ
s=\frac{\beta}{\delta}
s=δβ
那么,如果病毒强度小于流行阈值(Epidemic threshold)
τ
\tau
τ,这类病毒就不会形成流行。流行阈值和图的连通性结构有关,初始感染的人数并不会影响病毒的传播走向(所以秋冬流感易发季节,我们要注意个人防护!)。
4. 案例应用——谣言传播模型:Rumor spread modeling using SEIZ model
传播动力学模型建模:
S——一般的推特用户
I——相信了谣言并转发了的用户
E——接触到了谣言但还没有相信的用户
Z——不信谣不传谣的好青年!
模型的细节:
这个模型和SIS模型对比,表现出了对于真实数据拟合的优越性。
因此,基于SEIZ模型进行了谣言检测(rumor detection)。
定义了一个新的参数
R
S
I
R_{SI}
RSI。并且在实际应用中很好地可以识别谣言和新闻。
5. Independent Cascade Model 独立级联模型
参考资料:
独立级联模型
独立级联模型可以理解为一种概率传播模型。但是,要确定所有边的概率是一个很复杂的工程,而如果认为所有的边上的概率都一致,这种简化又过于简单。
那么,我们定义两个节点状态——Exposure和Adoption来模拟这种传播的过程。相当于把“感染过程”进行分解,首先这个节点因为邻居都被感染,所以被“暴露(exposure)”了,接着这个节点会有一定的概率被感染(adoption)。