Meta Path Based Random Walk复现思路【基于元路径的随机游走模型】
title: Meta Path Based Random Walk
date: 2022-02-13 00:43:08
tags: NLP的一些收获
课题原因需要复现ARNN模型。即“An Attentional Recurrent Neural Networkfor Personalized Next Location Recommendation”这篇论文,早就听说随机游走模型以及PageRank之类的算法,现在算是自己动手复现了,因为其中需要使用随机游走来获得每个POI的neighbors,从而训练attention的权重。
本文详述该游走模型的复现思路,代码连接会给出,注释充足便不赘述,当然想必也存在不足,如有发现问题,还望及时提出以便修改。
首先描述一下随机游走(random walk)模型,给定一个含有n个节点都有向图,在有向图上定义随机游走,也就是一阶马尔可夫链,节点可用来表示状态,有向边表示状态之间的转移。
这里有一个假设,从一个节点通过有向边相连的所有节点的转移概率相等,当节点的type相同时,可以将转移关系描述为n阶的转移矩阵MMM。
它描述的是列下标对应的节点转移至行下标对应的节点的概率,换句话说,mijm_{ij}mij是j节点指向i节点的概率。那么它的性质也有了。第一个共识很显然,第二个就是如果存在由j指向i的有向边,那么该位置的值位j节点的出度分之一,理由就是他们是等概率的。
这个矩阵MMM也叫做随机矩阵(stochastic matrix)。
可以理解,MMM是用来进行表征节点的转移偏好的,但游走过程不仅由转移偏好决定,同时也受转移的起点决定。所以提出一个n维向量VtV_tVt来表征t时刻转移前,本次转移过程的初始节点的概率分布。
那么:
这里得到的t+1时间步的V就是时间步t这次转移活动在VtV_tVt初始分布前提下的转移结果分布,因此,可以以这种方式进行迭代,从而进行多次游走。
那么基于元路径的随机游走,大体与之相同,但是也有区别。既然要引入meta path的概念,那么图中节点的种类就不是唯一的,在ARNN要解决的任务中,图中存在三类节点,L:地点,U:访问者,V:地点种类,他们构成图。而基于“LL”、“LVL”、“LUL”这三类元路径的路径都要分别以他们为路径元素type的最小重复单元。
也就是每次转移的随机矩阵是需要不同的,“LL”就与上面讲的一样,而对“LVL”而言,需要两个随机矩阵,分别是(num_v, n)与(n, num_v),前者与地点分布向量相乘(单个path起点loc为1,其余均为0),从而得到type为v的节点概率分布向量,后者再与地点种类分布向量相乘,又得到地点分布向量,然后继续如此迭代。
“LUL”也是如此。
需要注意的是,这里我虽然将三类节点统一编码,并用三元组构成图谱,但并没有将所有类型的节点放在同一个tensor里,而是meta path在当前需要什么类型,我就单独把起点与终点的类型的节点构成tensor来进行计算,拓扑上讲就是讲图拆分,但是概率依赖关系不受影响。因为我认为所有实体的个数作为tensor的大小用来计算,效率会很低,不如拆分成多组tensor,直观且高效。
思路就是这样,代码实现方面,一开始按照@Xinbo Wu复现Personalised Page Rank的方法编写,使用dict来进行矩阵运算,结果显然是差强人意的,面对foursquare的数据运算效率就已经无法接受了,因此使用tensor放到GPU上进行运算,结果明显快了很多,效率勉强让人接受,其实也许可以通过解决矩阵稀疏的问题再加快游走效率,作者目前能力有限,没找到能更加提高效率的办法,希望大家给予思路。
代码链接如下:
https://github.com/hhy-huang/Meta-Path-Based-Random-Walk
【参考《统计学习方法》李航】
Meta Path Based Random Walk复现思路【基于元路径的随机游走模型】相关推荐
- 【蚊子无人机】基于matlab随机游走模型无人机消除蚊子路径规划【含Matlab源码 2433期】
⛄一.随机游走模型 随机游走模型是通过随机选取某一文献作为起点,随机游走所有的文献,根据信息特征相似性对游走线路作加权处理,查阅所有文献后完成聚类. 随机游走算法通过对数据集进行统一的定义,把给定的数 ...
- 随机游走模型(Random Surfer Model)
<这就是搜索引擎:核心技术详解>第6章链接分析,本章主要介绍一些著名的链接分析方法.本节为大家介绍随机游走模型(Random Surfer Model). 互联网用户在上网时,往往有类似的 ...
- 随机游走模型 matlab,基于随机游走的图像分割matlab代码
[实例简介] 利用随机游走模型对图像进行了分割 编程环境是matlab 含有示例图片 可以直接运行 [实例截图] [核心代码] Randomwalksforimagesegmentation_matl ...
- 在加权异构图上的基于元路径个性化推荐——SemRec
主要参考论文:<Semantic Path based Personalized Recommendation on Weighted Heterogeneous Information Net ...
- c语言随机漫步,基于最短路径的随机游走算法研究与应用
摘要: 近年来,人们越来越多地关注数据集中数据点之间的关系.不同种类的网络相继涌现.有链接和节点类型都单一的同质网络如以朋友友谊为基础建立起来的社交网站;以网络链接形成的互联网.另外还有多种链接和节点 ...
- 重启随机游走算法(RWR:Random Walk with Restart)
重启随机游走算法(RWR:Random Walk with Restart) 1 pagerank算法的基本原理 Pagerank算法是Google的网页排名算法,由拉里佩奇发明.其基本思想是民主表决 ...
- 随机游走(Random Walk)模型
Random Walk Model 1 模型及性质简介 给定一随机变量u(i)={1,−1}u(i)={\{1, -1\}}u(i)={1,−1} 随机游走模型可表示为随时间ttt变化的函数y(t)= ...
- 【图像融合】基于随机游走算法实现多焦点图像融合含Matlab代码
1 内容介绍 近几年来,随机游走模型(random walk)与引导滤波器(guided filter)在图像处理领域受到了研究者们的广泛关注.前者已经被应用于图像处理的多种领域--图像融合.图像平滑 ...
- 基于随机游走Random Walk的图节点Node表示
前言 在图中,如果能把节点表示成合适的数值,能做很多任务,例如节点分类,关系预测,聚类等等.如何把节点表示成计算机能看懂的数值目前也有很多方法,本文主要为大家介绍基于Random Walk的节点表示方 ...
最新文章
- C++11中std::lock_guard的使用
- 无法连接MySQL_MySQL不能从外部 连接的解决方法
- Three.js中使用requestAnimationFrame方法实现立方体转动和小球跳动的动画
- 双非二本的2019春招Java岗面试心得
- Linux入门学习(二)
- Pandas-层次化索引
- Hadoop 的核心(2)—— MapReduce YARN
- Echart饼图简单使用
- 【数据结构与算法】二分法的边界问题总结
- 在css中arial,Helvetica或Arial作为CSS中的基本字体?
- qq群管机器人php,常用几款QQ群管机器人软件功能和体验对比
- 文本相似度的方法对比
- 软件的发展历史(时间轴)
- 线性代数的本质(Essense Of Linear Algebra)[1]
- Sikuli+Selenium查询百度地图线路
- Excel 同一单元格显示不同颜色
- 数据分析师有哪些证书?目前数据分析师都有哪些国际认证?
- 连接Ubuntu 出现 Algorithm Negotiation failed 错误
- cmd查看端口占用,结束进程
- NVIDIA NX刷机,配置深度学习环境