网络嵌入方法(Network Embedding)旨在学习网络中节点的低维度潜在表示,所学习到的特征表示可以用作基于图的各种任务的特征,例如分类,聚类,链路预测和可视化。
传统意义上的 Graph Embedding 被看成是一个降维的过程,而主要的方法包括主成分分析(PCA)和多维缩放(MDS)。所有的方法都可以理解成运用一个 n × k 的矩阵来表示原始的 n × m 矩阵,其中 k << n。
在 2000 年代早期,又提出了其他方法,如 IsoMap 和 LLE,以保持非线性流形的整体结构。总的来说,这些方法都在小型网络上提供了良好的性能。 然而这些方法的时间复杂性至少是二次的,这使得它们无法在大规模网络上运行。
另一类流行的降维技术使用可从图中导出的矩阵的光谱特性(例如,特征向量)来嵌入图的节点。拉普拉斯特征映射(Laplacian eigenmaps)通过与其k个最小非平凡特征值相关联的特征向量表示图中的每个节点。
MDS
Isomap
LLE
LLE用到了近邻的思想,用近邻样本来线性加权来近似目标样本;Embedding是指在低维空间学习嵌入表示,保持这些表示的近邻关系和原来的近邻关系基本一致。LLE的总体思想可以概括为两个部分:高维空间近邻线性重构 & 低维空间嵌入表示保持近邻关系。
LLE优化目标
PCA
设有m条n维数据,将m条n维数据化为m行n列的矩阵X
- 将矩阵X中的每一行减去改行的均值
- 计算协方差矩阵
- 计算协方差矩阵的特征值和特征向量
-
计算协方差矩阵的特征值,将特征值从高到低排序,然后每个特征值对应一个特征向量。前k个特征向量组成矩阵P
-
降维后的数据为
Laplacian Eigenmaps
普拉斯特征映射是一种基于图的降维算法,它希望在高维相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近,从而在降维后仍能保持原有的数据结构。
使用时算法具体步骤为:
- 步骤1:构建图:使用某一种方法来将所有的点构建成一个图,例如使用KNN算法,将每个点最近的K个点连上边。K是一个预先设定的值。
- 步骤2:确定权重:确定点与点之间的权重大小,一种可选的简化设定是
如果点ii,jj相连,否则
。
- 步骤3:特征映射: 计算拉普拉斯矩阵L的特征向量与特征值:
- 使用最小的m个非零特征值对应的特征向量作为降维后的结果输出。
W是图的邻接矩阵,对角矩阵D是图的度矩阵(),
为图的拉普拉斯矩阵
DeepWalk
DeepWalk算法主要包括两个步骤,第一步为随机游走采样节点序列,第二步为使用skip-gram model word2vec学习表达向量。
①构建同构网络,从网络中的每个节点开始分别进行Random Walk 采样,得到局部相关联的训练数据; ②对采样数据进行SkipGram训练,将离散的网络节点表示成向量化,最大化节点共现,使用Hierarchical Softmax来做超大规模分类的分类器
RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。
Node2Vec
通过特定的游走方式进行采样,对于每个点都会生成对应的序列。再将这些序列视为文本导入word2vec中的cbow或者skip-gram模型,即可得到每个节点的向量(对应word2vec中每个词的向量)
说到随机游走的采样,本文分析了两种图的游走方式,深度优先游走(Depth-first Sampling,DFS)和广度优先游走(Breadth-first Sampling,BFS)。
复杂网络处理的任务其实离不开两种特性,前面也提到过:一种是同质性,就是之前所说的社区。一种就是结构相似性,值得注意的是,结构相似的两个点未必相连,可以是相距很远的两个节点。
BFS倾向于在初始节点的周围游走,可以反映出一个节点的邻居的微观特性;而DFS一般会跑的离初始节点越来越远,可以反映出一个节点邻居的宏观特性。
对于一个随机游走,如果已经采样了t,现在停留在节点v上,那么下一个要采样的节点x是哪个?作者定义了一个概率分布,也就是一个节点到它的不同邻居的转移概率:
直观的解释一下这个分布:
- 如果t与x相等,那么采样x的概率为
;
- 如果t与x相连,那么采样x的概率1;
- 如果t与x不相连,那么采样x概率为
。
参数p、q的意义分别如下:
返回概率p:
- 如果
,那么采样会尽量不往回走,对应上图的情况,就是下一个节点不太可能是上一个访问的节点t。
- 如果
,那么采样会更倾向于返回上一个节点,这样就会一直在起始点周围某些节点来回转来转去。
出入参数q:
- 如果q>1,那么游走会倾向于在起始点周围的节点之间跑,可以反映出一个节点的BFS特性。
- 如果q<1,那么游走会倾向于往远处跑,反映出DFS特性。
当p=1,q=1时,游走方式就等同于DeepWalk中的随机游走。