推荐系统中的常用算法——DeepWalk算法

article/2025/10/21 22:21:19

1. 概述

DeepWalk算法是在KDD2014中提出的算法,最初应用在图表示(Graph Embedding)方向,由于在推荐系统中,用户的行为数据固然的可以表示成图的形式,如下图所示:

在这里插入图片描述
通过Graph Embedding得到图中每个item的Embedding表示,DeepWalk算法常被用于推荐系统。Graph Embedding使用低维稠密向量的形式表示图中的节点,使得在原始图中相似(不同的方法对相似的定义不同)的节点其在低维表达空间也接近。

2. 算法思想

DeepWalk算法借鉴了word2vec算法的思想,word2vec是NLP中一种常用的word embedding方法,word2vec通过语料库中的句子序列来描述词与词的共现关系,进而学习到词语的向量表示。DeepWalk算法与word2vec类似,使用图中节点与节点的共现关系来学习节点的向量表示。在DeepWalk中通过使用随机游走(RandomWalk)的方式在图中进行节点采样来模拟语料库中的预料,进而使用word2vec的方式学习出节点的共现关系,其具体过程如下图所示:

在这里插入图片描述
具体过程为:

  1. 抽取用户的行为序列,如图中(a)所示;
  2. 将用户的行为序列转换成图的表示方法,如图中(b)所示;
  3. 使用RandomWalk对图中节点采样,得到节点序列的表示,如图中©所示;
  4. 使用Skip-Gram学习出节点的Embedding表示,如图中(d)所示。

DeepWalk算法思想具体过程如下所示:

在这里插入图片描述

2.1. RandomWalk

RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。假设图为 G = ( V , E ) G=\left ( V,E \right ) G=(V,E),其中, V V V表示图中点的集合, E E E表示图中边的集合,在RandomWalk中关键的问题是如何计算从节点 v i v_i vi跳转到节点 v j v_j vj的概率 P ( v j ∣ v i ) P\left ( v_j\mid v_i \right ) P(vjvi)

P ( v j ∣ v i ) = { M i j ∑ j ∈ N + ( v i ) M i j if  v i ∈ N + ( v i ) 0 if  e i j ∉ E P\left ( v_j\mid v_i \right )=\begin{cases} \frac{M_{ij}}{\sum _{j\in N_+\left ( v_i \right )}M_{ij}} & \text{ if } v_i\in N_+\left ( v_i \right ) \\ 0 & \text{ if } e_{ij}\notin E \end{cases} P(vjvi)={jN+(vi)MijMij0 if viN+(vi) if eij/E

其中, E E E是图中所有边的集合, N + ( v i ) N_+\left ( v_i \right ) N+(vi)是节点 v i v_i vi所有的出边的集合, M i j M_{ij} Mij是节点 v i v_i vi到节点 v j v_j vj的边的权重,对于无向无权图 M i j = 1 M_{ij}=1 Mij=1。RandomWalk的代码大致如下:

def deep_worker(self):for _ in range(self.nums):for node in self.G.nodes():self.node_series.append(self.random_walker(node))def random_walker(self, first_node):series = [first_node]for _ in range(1, self.walk_length):nodes_list = list(self.G.adj[first_node])first_node = random.choice(nodes_list)series.append(first_node)return series

2.2. word2vec

word2vec的基本原理不再在本文中详细给出,可以参阅其他的一些材料,Python下可以通过gensim里的Word2Vec实践:

from gensim.models import Word2Vec
w2v_model = Word2Vec(walks,sg=1,hs=1)

参考文献

  • Perozzi B, Alrfou R, Skiena S. DeepWalk: online learning of social representations[J]. 2014:701-710.
  • Wang J , Huang P , Zhao H , et al. Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba[J]. 2018.
  • DeepWalk源码
  • 《DeepWalk: Online Learning of Social Representations》笔记
  • C实现的DeepWalk

http://chatgpt.dhexx.cn/article/ZRoMs9If.shtml

相关文章

DeepWalk(深度游走)算法

整理自: Deepwalk(深度游走)算法简介_Mr.Cheng1996的博客-CSDN博客 【论文笔记】DeepWalk - 知乎 DeepWalk是一种将随机游走(random walk)和word2vec两种算法相结合的图结构数据挖掘算法。该算法能够学习网络的隐藏信息,能够将图中的节点表示为一个包…

Deepwalk(深度游走)算法简介

深度游走:一种社交表示的在线学习算法 主要思想Deepwalk算法参考文献 主要思想 Deepwalk是一种将随机游走(random walk)和word2vec两种算法相结合的图结构数据挖掘算法。该算法能够学习网络的隐藏信息,能够将图中的节点表示为一个包含潜在信息的向量&…

python中dumps的用法

json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。 若在数据写入json文件时,未先进行转换,报错如下: 转换后再写入,则不报错:

VS自带工具:dumpbin的使用查看Lib,dll等

VS自带工具:dumpbin的使用查看Lib,dll等 参考链接: https://blog.csdn.net/great3779/article/details/7161150 https://blog.csdn.net/ermen2009/article/details/17964813 https://blog.csdn.net/blpluto/article/details/5706757 https://blog.cs…

读懂DUMP文件

目录 一、什么是Dump文件 二、Dump文件的类型 2.1 内核模式Dump 2.2 用户模式Dump 三、Dump文件的生成 3.1 通过调试工具生成 3.2 通过使用任务管理器生成 3.3 通过编程自动生成 四、各种抓取DUMP的工具 一、什么是Dump文件 对于程序崩溃,最快的解决方式是…

Dump文件

1. Dump文件 1. Dump文件介绍 Dump文件(Dump File),也叫转储文件,以.DMP为文件后缀。dump文件是进程在内存中的镜像文件,通过转换然后存储成以.DMP后缀的文件。dump文件根据存储时的选项不同,会生成不同大小的文件,其中…

DUMP文件分析1:DUMP文件简介

1.1 DUMP文件类型 Windows下Dump文件分为两大类,内核模式Dump和用户模式Dump。内核模式Dump是操作系统创建的崩溃转储,最经典的就是系统蓝屏,这时候会自动创建内核模式的Dump。用户模式Dump进一步可以分为完整Dump(Full Dump&…

VS中dumpbin.exe工具的使用

用VS2010生成的.obj文件、.lib库、.dll库、.exe执行文件,如果想查看其中这些文件或库包含了哪些函数以及相关的信息(符号清单),可以通过VS2010自带的dumpbin工具来完成。 dumpbin.exe为Microsoft COFF二进制文件转换器,它显示有关通用对象文…

查看dll或exe文件的依赖项——使用vs自带的dumpbin工具

在使用vs写程序的时候,我们经常会将程序生成为dll或是exe文件,而这些文件通常也会需要依赖其他库的dll才能单独使用。那我们该如何确定某个dll或是exe文件依赖了哪些dll呢?这个问题可以通过使用vs自带的dumpbin工具来解决。下面详细介绍其使用…

用dumpbin.exe工具查看DLL

用dumpbin.exe工具查看DLL,dumpbin.exe是VS自带的工具。我装的是VS2010,所以路径是:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\下就可以看到dumpbin.exe了。 怎么使用dumpbin.exe呢?因为dumpbin.exe有可…

dump文件,windbg

dump文件,在VC中的调试还是非常非常非常有用的,因为我们也不会经每一行代码都加上日志,当然如果你愿意,也可以每一行都加上日志; 在Windows上,添加dump文件方法: 方法一:一个是在程…

dump分析

在项目运行过程中会产生很多的数据,如果这些数据是强引用是不会被垃圾回收器回收的,如果不及时手动清理则会越来越多,造成内存溢出。 在启动时在jvm命令增加内存溢出生成dump文件,这样在内存溢出的时候就会生成内存快照文件&#…

dumpbin工具的使用(配图)

WINR CMD进入指令界面 作用:配置dumpbin在CMD的运行环境 vs2010->VC->bin Dumpbin所在位置:X86系统 和X64系统的可运行文件 双击运行可使用,显示可运行的指令 查看静态库的信息要用命令行来实现: dumpbin /LINKERMEMBE…

VS2010中dumpbin工具的使用

用VS2010生成的.obj文件、.lib库、.dll库、.exe执行文件,如果想查看其中这些文件或库包含了哪些函数以及相关的信息(符号清单),可以通过VS2010自带的dumpbin工具来完成。 dumpbin.exe为Microsoft COFF二进制文件转换器,它显示有关通用对象文…

VS自带工具:dumpbin的使用

用VS2010生成的.obj文件、.lib库、.dll库、.exe执行文件,如果想查看其中这些文件或库包含了哪些函数以及相关的信息(符号清单),可以通过VS2010自带的dumpbin工具来完成。 1.输入Dumpbin -imports calldll.exe查看它的输入信息,可以看到它加载…

DUMPBIN工具的使用

dumpbin.exe是微软二进制文件转储器。显示有关通用对象文件格式 (COFF) 的二进制文件的信息。 可以使用 DUMPBIN 检查 COFF 对象文件、 COFF 对象、 可执行文件和动态链接库 (Dll) 的标准库。 dumpbin.exe所在路径是 vs安装目录\VC\bin\dumpbin.exe。 我的电脑VS安装路径是E:…

Java中常见异常及异常处理方式

Java异常的继承体系结构 java.lang.Throwable是Java语言中所有错误或异常的超类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型Error类是指Java运行…

23、Java——常见异常的原因和解决办法

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:乐趣国学的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

java各种异常总结

一、java异常汇总 1.Throwable 是所有异常的祖先,Throwable有两个子类,Error和Exception; 2.Error是错误,表示运行应用程序中出现了严重错误,都是通过Error抛出的,一般程序无法处理; Exception是异常&am…

Java中常见的异常类型

异常类型 在 Java 中所有异常类型都是内置类 java.lang.Throwable 类的子类,即 Throwable 位于异常类层次结构的顶层。Throwable 类下有两个异常分支 Exception 和 Error,如图 1 所示。 Throwable 类是所有异常和错误的超类,下面有 Error 和…