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