Paper:http://www.perozzi.net/publications/14_kdd_deepwalk.pdf
代码解析: https://blog.csdn.net/weixin_42486623/article/details/124666025
2014 | DeepWalk: Online Learning of Social Representations
摘要
文章提出了DeepWalk,一种学习网络中节点潜在表示的新方法。这些潜在的表示将社会关系编码在一个连续的向量空间中,很容易被统计模型利用。DeepWalk概括了从单词序列到图表中语言建模和无监督特征学习(或深度学习)的最新进展。
DeepWalk利用从截短的随机游动中获得的局部信息,将游动视为句子的等价物,从而学习潜在表示。作者演示了DeepWalk在多个多标签网络分类任务上的潜在表示,用于社交网络,如Blog-Catalog、Flickr和YouTube。结果显示,DeepWalk的表现优于具有挑战性的基线,这些基线允许网络的全局视图,特别是在存在缺失信息的情况下。当标记数据是稀疏的时,DeepWalk的表示可以提供比竞争方法高10%的F1分数。在一些实验中,同时使用60%的训练数据,DeepWalk的表示能够超过所有基线方法。
DeepWalk也是可扩展的。它是一种在线学习算法,建立有用的增量结果,并可并行化。这些特性使它适用于广泛的现实世界应用,如网络分类和异常检测。
模型结构
Deepwalk算法的核心步骤分为两步:
- 随机游走采样节点序列
- 使用Skip-gram model学习表达向量
随机游走生成器在图G上进行均匀采样一个节点 v i v_i vi作为根节点,进行随机游走产生序列 W v i W_{v_i} Wvi。每次游走均匀采样一个邻居节点,直到最后一个节点达到最大长度 t t t。在实际实验中,对每个起始节点都制定了一些长度为 t t t的随机游走 γ γ γ。外循环中,循环次数 γ γ γ每次都会重新在某个节点(作为根节点)开始随机游走。内循环中,在每个节点上进行迭代,对于每个节点 v i v_i vi,我们产生一个随机游走 W v i = t W_{v_i}=t Wvi=t,然后我们用SkipGram算法来更新表征。
使用random walk生成了大量的训练数据。后面就采用训练word2vec相同的思路来训练就可以了。w2v有两种训练方式,这里使用的是skipgram的方式也就是用一个词来预测它的上下文,这里忽略的词序的信息以及和当前词的距离。
实验
论文中采用的实验参数为:
- γ \gamma γ =80(每个节点被采样的次数)
- w w w = 10 (滑动窗口)
- d d d = 128 (向量的维度)
- t t t = 40 (游走的节点长度)
Baseline Methods 包括SpectralClustering、Modularity、EdgeCluster、wvRN、Majority。
结论
提出了DeepWalk,一种学习顶点潜在社会表征的新方法。利用截断随机游动的局部信息作为输入,该方法学习了一个编码结构规则的表示。在各种不同图表上的实验说明了该方法在挑战性的多标签分类任务上的有效性。