Random walk算法及其各种延伸、应用笔记
文章目录
- Random Walk
- Random walk with start(RWR)
- RWR的实现
- 数学表达
- classic实现
- RWR的快速实现
- Off-line流程
- On-line查询流程
- Λ ~ \tilde{\Lambda} Λ~的含义
- !!!简化后的快速实现
- off-line部分
- on-line部分
- 低秩近似的实现
- 1. 特征值分解
- !!!2. 分区低秩近似
Random Walk
随机过程中定义的随机游走是每过一个单位时间,游走点固定向左或向右移动一个单位
推广到多维,一般情况下是:
对于点 x 0 ∈ R N x_0\in R^N x0∈RN,每个单位时间内:
- 随机生成一个n维向量 u u u
- 将其标准化为 u ′ = u ∑ i = 1 n u i 2 u'=\frac{u}{\sqrt{\sum_{i=1}^nu_i^2}} u′=∑i=1nui2 u
- 以可变步长 λ \lambda λ为幅度进行一次随机游动,即 x 1 = x 0 + λ u ′ x_1=x_0+\lambda u' x1=x0+λu′
对于图结构的数据,random walk是指,在一张图的任意一个顶点:
- 遍历者以概率1-a游走到这个定点的邻居
- 遍历者以a的概率跳跃到途中的任意一个顶点
这样的游走会以频率的方式体现出graph中每一个顶点被访问到的概率。
Random walk with start(RWR)
随机游走算法可以利用于检测整个图的概率分布,而RWR算法以及它的各种变体:
- 在CV研究中适用于图像分割
- 在graph结构中则适用于基于图结构中的一个base node,构建出它的邻居节点的分布情况。这一算法广泛应用于图结构的数据采样。
它的基本思想是:
- 从一个或一系列base node开始遍历一张图
- 在任意一个节点以1-a的概率移动到一个随机选择的邻点,以a概率跳回起点
RWR的实现
基于经典文章:Fast RandomWalk with Restart and Its Applications
符号定义:
数学表达
Input: The normalized weighted matrix W ~ \tilde{W} W~ and the starting vector e i ⃗ \vec{e_i} ei
Output: The ranking vector r i ⃗ \vec{r_i} ri
对于从指定位置( e i ⃗ \vec{e_i} ei )出发期望的遍历点位置 r i ⃗ \vec{r_i} ri ,它的值表示为:
r i ⃗ = c W ~ r i ⃗ + ( 1 − c ) e i ⃗ \vec{r_i}=c\tilde{W}\vec{r_i}+(1-c)\vec{e_i} ri =cW~ri +(1−c)ei (1)
从中可以计算出
r i ⃗ = ( 1 − c ) ( 1 − c W ~ ) − 1 e i ⃗ = ( 1 − c ) Q − 1 e i ⃗ \vec{r_i}=(1-c)(1-c\tilde{W})^{-1}\vec{e_i}\\ =(1-c)Q^{-1}\vec{e_i} ri =(1−c)(1−cW~)−1ei =(1−c)Q−1ei
可以看出在实际图含义上它是随机游动的,但是 r i ⃗ \vec{r_i} ri 是数值累计的。
classic实现
- OnTheFly
最基础的方法是按照(1)式递归收敛求解(条件一般是是 r i ⃗ \vec{r_i} ri 的L2范数的变化小于一定阈值 ξ 1 \xi_1 ξ1或指达到了指定的迭代次数m)。它被称为OnTheFly方法。这种方法在数据库较大时比较耗时。
优化点: r i ⃗ \vec{r_i} ri 的分布存在局部性(这体现出了graph中节点的community性),所以只对存在了节点i的图的parition(注意,这个分割并不一定意味着完全不连通,只不过是距离较远参考意义很小)进行计算,其他的 r i j r_{ij} rij显然可以直接置0. - PreCompute
预先计算出 Q − 1 Q^{-1} Q−1,这种方法在数据库较大时比较耗空间。
优化点:可以通过低秩近似来快速计算 Q − 1 Q^{-1} Q−1
RWR的快速实现
通过节点的locality,以及图的线性相关性,可以使用近似算法快速计算RWR。
Off-line流程
- 使用拉普拉斯正则化计算出 W ~ \tilde{W} W~
- 使用诸如METIS软件包等方法将图分割成k个partition(METIS简单实用可见https://metis.readthedocs.io/en/latest/)
- 将 W ~ \tilde{W} W~基于分割结果分为 W ~ = W 1 ~ + W 2 ~ \tilde{W}=\tilde{W_1}+\tilde{W_2} W~=W1~+W2~。其中 W 1 ~ \tilde{W_1} W1~包含全部partition内部的权重矩阵, W 2 ~ \tilde{W_2} W2~包含全部partition外部的权重矩阵,显然这二者交集为空。
- 按照partition序列将 W 1 ~ \tilde{W_1} W1~做成如下表示:
- 通过上述分解出的 W 1 ~ \tilde{W_1} W1~,计算 Q 1 , i − 1 Q_{1,i}^{-1} Q1,i−1:
Q 1 , i − 1 = ( 1 − c W 1 , i ~ ) − 1 Q_{1,i}^{-1}=(1-c\tilde{W_{1,i}})^{-1} Q1,i−1=(1−cW1,i~)−1 - 将Q与W值按同样的方式进行排列,得到 Q 1 − 1 Q_1^{-1} Q1−1:
- 对 W 2 ~ \tilde{W_2} W2~部分,做低秩近似:
W 2 ~ = U S V \tilde{W_2}=USV W2~=USV(这里似乎可以另开一个线程去做) - 计算parition间项 Λ ~ \tilde{\Lambda} Λ~:
Λ ~ = ( S − 1 − c V Q 1 − 1 U ) − 1 \tilde{\Lambda}=(S^{-1}-cVQ_1^{-1}U)^{-1} Λ~=(S−1−cVQ1−1U)−1
On-line查询流程
根据off-line计算的结果,直接计算 r i ⃗ \vec{r_i} ri :
r i ⃗ = ( 1 − c ) ( Q 1 − 1 e i ⃗ + c Q 1 − 1 U Λ ~ V Q 1 − 1 e i ⃗ ) \vec{r_i}=(1-c)(Q_1^{-1}\vec{e_i}+cQ_1^{-1}U\tilde{\Lambda}VQ_1^{-1}\vec{e_i}) ri =(1−c)(Q1−1ei +cQ1−1UΛ~VQ1−1ei )
Λ ~ \tilde{\Lambda} Λ~的含义
这里实际上是利用舍曼-莫里森公式求解矩阵逆运算的一种方式:
https://zhuanlan.zhihu.com/p/44607246
!!!简化后的快速实现
在上述实现中,如果k=n,也即每个节点都分一个partition,那么显然 W 1 ~ = 0 , W 2 ~ = W ~ \tilde{W_1}=0,\tilde{W_2}=\tilde{W} W1~=0,W2~=W~,并且因此 Q 1 = I Q_1=I Q1=I,这样可以对上述实现进行简化:
off-line部分
- 使用拉普拉斯正则化计算出 W ~ \tilde{W} W~
- 直接对正则化后的权重矩阵进行低秩近似:
W ~ = U S V \tilde{W}=USV W~=USV - node间项: Λ ~ = ( S − 1 − c V U ) − 1 \tilde{\Lambda}=(S^{-1}-cVU)^{-1} Λ~=(S−1−cVU)−1
on-line部分
查询计算: r i ⃗ = ( 1 − c ) ( e i ⃗ + c U Λ ~ V e i ⃗ ) \vec{r_i}=(1-c)(\vec{e_i}+cU\tilde{\Lambda}V\vec{e_i}) ri =(1−c)(ei +cUΛ~Vei )
低秩近似的实现
1. 特征值分解
特征值分解适用于拉普拉斯正则化处理的邻接矩阵,对其他方式处理的邻接矩阵,可以使用SVD分解
简单的实现是对W进行特征值分解:
W 2 ~ = U S U T V = U T \tilde{W_2}=USU^T\\V=U^T W2~=USUTV=UT
这样的方法可以减少50%的空间消耗,但是特征分解比较耗时。
!!!2. 分区低秩近似
如果将 W 2 ~ \tilde{W_2} W2~纵分为t个partition,name计算低秩近似的方法为:
- 构建 U ∈ R n × t U\in R^{n\times t} U∈Rn×t,其中 U i j = ∑ k ∈ i t h p a r t i t i o n W i k U_{ij}=\sum_{k\in i^{th}\ partition}W_{ik} Uij=∑k∈ith partitionWik,也即U的第i列是W第i个partition的列向量的和。
- S = ( U T U ) − 1 S=(U^TU)^{-1} S=(UTU)−1
- V = U T W 2 ~ V=U^T\tilde{W_2} V=UTW2~
Random walk算法及其各种延伸、应用笔记相关推荐
- 重启随机游走算法(RWR:Random Walk with Restart)
重启随机游走算法(RWR:Random Walk with Restart) 1 pagerank算法的基本原理 Pagerank算法是Google的网页排名算法,由拉里佩奇发明.其基本思想是民主表决 ...
- GNN笔记: random walk
1 随机游走定义 所谓随机游走(random walk),就是在网络上不断重复地随机选择游走路径,最终形成一条贯穿网络的路径. 从一个顶点出发,然后按照一定的概率随机移动到一个邻居节点,并将该节点作为 ...
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(5)Random Walk 2(推式子+矩阵逆+矩阵乘)
Random Walk 2 [2.4]Gauss-Jordan消元法求矩阵的逆 高斯消元求矩阵的逆,伴随单位矩阵一起消元即可. [A,I]→[I,A−1][\text A,\text I]\to [\ ...
- 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...
世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的. 随机漫步(Random Walk)是一种解决随机问题的方法,它 ...
- Machine Learning with Graphs 之 Random Walk with Restarts and Personalized PageRank
在一个推荐系统中,用一个二分图来代表用户以及商品,它们彼此之间用边连接,构成购买关系. 在图论中,二分图是一类特殊的图,又称为二部图.偶图.双分图.二分图的顶点可以分成两个互斥的独立集 U 和 V 的 ...
- 基于随机游走Random Walk的图节点Node表示
前言 在图中,如果能把节点表示成合适的数值,能做很多任务,例如节点分类,关系预测,聚类等等.如何把节点表示成计算机能看懂的数值目前也有很多方法,本文主要为大家介绍基于Random Walk的节点表示方 ...
- “随机漫步”(Random Walk)模拟演示
(1).任务描述 有一类问题总称为"随机漫步"(Random Walk)问题,这类问题长久以来吸引着数学界的兴趣.所有这些问题即使是最简单的解决起来也是极其困难的.而且它们在很大程 ...
- Random Walk(随机行走)
Random Walk(随机行走) 前言 本人对随机行走算法理解并不是非常透彻(甚至可以说是不理解),仅仅根据定义用python将随机行走进行实现出来,因此本文章一定漏洞百出,仅仅只能参考. 该程序是 ...
- 《Nature-Inspired Metaheuristic Algorithms》—— Random Walk
1 什么是随机游走random walk? 随机游走是由一系列随机步骤组成的随机过程. 随机游走SN=每个连续随机步骤Xi的和. 也就是说在N次游走时的位置SN是由第一次.第二次-第N-1次游走之后再 ...
最新文章
- Blender液体烟与火VFX特效制作教程 Blender VFX Liquid Smoke Fire
- 简解Css - 多变的边框
- python subprocess.Popen 使用简介
- python_面向对象进阶之多继承
- 1分钟读懂直播和音视频通话的区别
- 【Electron】Electron开发入门(八):自定义electron框架外壳(shell)的菜单(Menu)...
- 多线程的全局变量与局部变量
- 如何用PPT编制方案 (2)PPT内容的逻辑表达
- 深入理解Webpack核心模块Tapable钩子[同步版]
- Java解析中文数字字符串
- 如何检测java安装成功_如何检查jdk是否安装成功
- 炫彩与WKE浏览器交互
- 六轴机器人轨迹规划之matlab画直线
- SPSS统计分析与行业应用案例详解
- 系统分析与设计——UML图总结
- 从零开始的JAVA反序列化漏洞学习(一)
- CC2530单片机入门学习
- H3CIE(WLAN)学习笔记(4)——PHY层协议
- js 判断2月份多少天
- 获取设备唯一编号替代IMEI新方案
热门文章
- .Net高并发解决思路【转载】
- 创建BundleID唯一标示符App IDs(又称套装id,appid,BundleID,包名)
- 周易六十四卦——复卦
- 利用 numpy 实现物理计算--物理向量符号与numpy数组的对应 ( jupyterlab 例子)
- SCCM 2007 R2 setp by setp(十一)-软件分发
- nanomsg.nng 在windows下的安装
- 惊世骇俗?人工智能完虐柯洁前你要知道这些事儿
- 996高薪,955底薪,你选哪个?互联网大厂的薪酬一览
- scrapy实战之爬取简书
- 远程无法访问syn服务器,ping回显请求超时time out故障处理过程