LINE理论

1)介绍

LINE也是一种基于邻域相似假设的方法,只不过与DeepWalk使用DFS构造邻域不同的是,LINE可以看作是一种使用BFS构造邻域的算法。此外,LINE还可以应用在带权图中(DeepWalk仅能用于无权图)。

两个曲线的相似度用python怎么比较 两条曲线相似度_深度优先

LINE在图上定义了两种相似度:一阶相似度与二阶相似度。

一阶相似度:用于描述图中成对顶点之间的局部相似度。形式化描述为若两个曲线的相似度用python怎么比较 两条曲线相似度_深度学习_02之间存在直连边,则边权两个曲线的相似度用python怎么比较 两条曲线相似度_图论_03即为两个顶点的相似度;若不存在直连边,则一阶相似度为0。如上图中的6、7两个结点就拥有很高的一阶相似度。

二阶相似度:所比较的是两个结点邻居的相似程度。若两个曲线的相似度用python怎么比较 两条曲线相似度_深度学习_02之间拥有相同的邻居,他们也更加的相似;若不存在相同的邻居顶点,则2阶相似度为0。例如下图中的5、6两点拥有很高的二阶相似度。用一句俗话来概括就是“我朋友的朋友也可能是我的朋友”

2)优化目标
一阶相似度

一阶相似度只能用于无向图当中。

对于每一条无向边 两个曲线的相似度用python怎么比较 两条曲线相似度_深度优先_05,定义经验分布(两个结点实际的一阶相似度):
两个曲线的相似度用python怎么比较 两条曲线相似度_图论_06
定义顶点两个曲线的相似度用python怎么比较 两条曲线相似度_两个曲线的相似度用python怎么比较_07两个曲线的相似度用python怎么比较 两条曲线相似度_图论_08之间的联合概率(两个结点embedding之间的相似度):
两个曲线的相似度用python怎么比较 两条曲线相似度_深度学习_09
优化目标为最小化:
两个曲线的相似度用python怎么比较 两条曲线相似度_算法_10
两个曲线的相似度用python怎么比较 两条曲线相似度_算法_11是两个分布的距离,常用的衡量两个概率分布差异的指标为KL散度:
两个曲线的相似度用python怎么比较 两条曲线相似度_图论_12
两个曲线的相似度用python怎么比较 两条曲线相似度_图论_13已知,为常数项,求最小值时可忽视,有:
两个曲线的相似度用python怎么比较 两条曲线相似度_深度学习_14

二阶相似度

这里对于每个顶点两个曲线的相似度用python怎么比较 两条曲线相似度_算法_15维护两个embedding向量,一个是该顶点本身的表示向量两个曲线的相似度用python怎么比较 两条曲线相似度_图论_16,一个是该点作为其他顶点的上下文顶点时的表示向量两个曲线的相似度用python怎么比较 两条曲线相似度_两个曲线的相似度用python怎么比较_17

对于有向边 两个曲线的相似度用python怎么比较 两条曲线相似度_深度优先_05,定义给定顶点 两个曲线的相似度用python怎么比较 两条曲线相似度_两个曲线的相似度用python怎么比较_07条件下,经验分布定义(两个结点实际的二阶相似度):
两个曲线的相似度用python怎么比较 两条曲线相似度_两个曲线的相似度用python怎么比较_20
其中,两个曲线的相似度用python怎么比较 两条曲线相似度_深度学习_21是边两个曲线的相似度用python怎么比较 两条曲线相似度_深度优先_05的边权两个曲线的相似度用python怎么比较 两条曲线相似度_深度优先_23两个曲线的相似度用python怎么比较 两条曲线相似度_图论_24是顶点两个曲线的相似度用python怎么比较 两条曲线相似度_两个曲线的相似度用python怎么比较_07的出度,对于带权图,两个曲线的相似度用python怎么比较 两条曲线相似度_算法_26

产生上下文(邻居)顶点两个曲线的相似度用python怎么比较 两条曲线相似度_图论_08的概率(两个结点embedding的相似度):
两个曲线的相似度用python怎么比较 两条曲线相似度_图论_28
其中,两个曲线的相似度用python怎么比较 两条曲线相似度_深度优先_29为上下文顶点的个数。

优化目标为最小化:
两个曲线的相似度用python怎么比较 两条曲线相似度_两个曲线的相似度用python怎么比较_30
其中,两个曲线的相似度用python怎么比较 两条曲线相似度_两个曲线的相似度用python怎么比较_31为控制节点重要性的因子,可以通过顶点的度数或者PageRank等方法估计得到。

使用KL散度并设 两个曲线的相似度用python怎么比较 两条曲线相似度_算法_32,忽略常数项,有:
两个曲线的相似度用python怎么比较 两条曲线相似度_深度学习_33
最终要获得同时包含有一阶相似度和二阶相似度的embedding,只需要将通过一阶相似度获得的embedding与通过二阶相似度获得的embedding拼接即可。