用户的关注关系本身就是一个图结构,要从用户关注关系生成用户的embedding表示,其实就是做graph的emebding表示。
deepwalk+word2vec 比较简单,效果也还可以。这种方法再此不再介绍。
接下里记下我对line算法的一些理解。
先说line算法要解决的问题。
1、需要能够表示有向图。
2、能够体现节点的权重,边的权重。节点的权重论文中使用了节点的出度作为节点的权重。
3、能够体现节点的结构相似性,其实就是有相似的上下文。这个line算法分别提出了一阶相似和二阶相似。
接下来详细说说一阶和二阶相似性。
其中一阶相似是指直接有边相连的节点i,j 。用i节点的向量推出j节点向量的概率有多大。如果i和j没有边相连接,则一阶相似性为0。如果对应于用户的关注关系组成的图的话,这个其实就是好友间的相似。还需要指出的是一阶对于边直接认为是无向图的边,不考虑方向性。对于用户间一阶相似性的边权重可以通过用户间互动行为,统计出来一个亲密度。
二阶相似性,为了解决一阶相似没有考虑朋友的朋友间的相似性,而提出的。这种朋友的朋友之间的相似性是通过给每个顶点增加一个上下文向量来实现的。一个顶点有两个向量分别是上下文向量和本身的节点向量。上下文向量是说一个节点可以作为其相邻节点的上下文。两个不直接相连的节点越相似,也就是说他们的共同上下文节点越多,也就是他们的共同好友越多。
二阶相似性,会考虑边的权重,和节点的权重。论文中节点的权重使用节点的出度。
line算法与deepwalk的对比:
line考虑了边的权重,二阶相似还会考虑有向图的情况,类似单向的关注关系。
line算法在实现和训练过程中优化:
line算法定义了一阶和二阶相似的经验概率,就是从i节点推