1. Random Walk with Restart(RWR): 带重启的随机游走算法
参考博客: Random Walk with Restart and its application
参考博客:重启随机游走算法RWR
在带重启的随机游走算法中, 一个节点转移到另一个节点的概率有两个(为了避免混乱, 应当心中常记这两项):
- 转移矩阵中的概率(我们简单的称之为
转移概率
)- 综合了转移矩阵和重启(restart)概率的转移概率(这里我称之为
综合转移概率
)注意, 这些说法只是为了在这篇笔记中不至于使人混乱, 真实、权威的叫法未必如此.
带重启的随机游走算法考虑的是一个网络: G ( V , E ) G(V,E) G(V,E).
首先我们有一个转移概率矩阵: P = [ P 00 P 01 P 10 P 11 ] P=\begin{bmatrix} P^{00} & P^{01} \\ P^{10} & P^{11} \end{bmatrix} P=[P00P10P01P11], 对角线的值应该全为0
此外我们有一个重启概率(restart probability), 当从节点 x x x进行下一步随机游走时,有一个概率 a a a: 从节点 x x x触发将会到达随机的一个邻居节点,同时有 1 − a 1-a 1−a的概率会停留在节点 x x x.
如果
q
x
y
q_{xy}
qxy定义为游走器从
x
x
x到
y
y
y的概率,
q
y
q_y
qy是从
x
x
x出发到达各个节点的概率向量, 那么:
q
x
⃗
=
a
P
T
q
x
⃗
+
(
1
−
a
)
e
x
⃗
\vec{q_{x}}=a\bold{P}^T\vec{q_x}+(1-a)\vec{e_x}
qx=aPTqx+(1−a)ex
上面这个式子可以改写为:
q
x
⃗
=
(
1
−
a
)
(
1
−
a
P
)
−
1
e
x
⃗
\vec{q_x}=(1-a)(1-aP)^{-1}\vec{e_x}
qx=(1−a)(1−aP)−1ex
这个
q
x
⃗
\vec{q_x}
qx通过解方程得到, 因为转移概率矩阵
P
P
P是在不考虑重启(restart)情况下的,当具有重启后,
x
x
x转义到各个节点的真实概率应当重启计算.
在这, e x ⃗ \vec{e_x} ex和 q x ⃗ \vec{q_x} qx这两个向量维度一样, 不同之处在于, e x ⃗ \vec{e_x} ex只有第 x x x个元素为1(其余为0). e x ⃗ \vec{e_x} ex代表了从 x x x节点游走回 x x x节点这个操作.
最终: 节点
x
x
x和
y
y
y的相似度可以定义为:
S
x
y
R
W
R
=
q
x
y
+
q
y
x
S_{xy}^{RWR} = q_{xy} + q_{yx}
SxyRWR=qxy+qyx
上面求解 q x ⃗ \vec{q_x} qx的式子虽然看起来直观但是实现时就会产生疑问, P P P是二维矩阵而 q x ⃗ \vec{q_x} qx是一维向量,相乘如何有意义?为此,下面从细节来阐述。此时我们不在局限于某一点到零一点的转移向量,我们考虑的是全局转移矩阵:
首先我们考虑计算综合概率矩阵的第一项(这里我们忽略 a a a, 因为对于一个确定的重启概率, a a a不过是一个常量:
最终会得到一个矩阵
A
A
A, 该矩阵应该从列
的方向上看, 譬如第1列, 代表从第一个节点到其他节点的综合转移概率. [事实上, 行列的规定, 与
P
P
P和
Q
Q
Q矩阵的行列息息相关并无定式]
接下来我们再考虑第二项, 之前我们说到,
e
x
⃗
\vec{e_x}
ex向量是只有第
x
x
x个元素为1其余为0的向量, 把其组合为矩阵, 就得到一个单位矩阵(对角线为1, 其余元素为0的矩阵
)! 这个单位矩阵与
1
−
a
1-a
1−a相乘, 再加到第一项上, 就可以达到这样一种效果:
上文中我们提过, 转移概率矩阵 P P P的对角线元素都是0-即节点不会游走到自己(概率为0), 最终的综合概率矩阵对角线元素也应全为0, 但通过restart重启, 将第二项加到综合概率矩阵上, 得到的综合概率矩阵就不为0了, 这也恰恰符合带重启的随机游走算法会停留在当前节点的行为!