传统的network embedding的方法不太适用于大规模的网络运算
因为像MDS, LLE这样的线性映射方法都是需要矩阵操作的
凡是这样的操作,是比较难以实现分布式的处理,导致不能处理大的网络
但是在2015年微软的唐建等人提出了另一种network embedding的方式,能够处理大规模数据
这里就简单的记录一下这个LINE的处理方式,看有什么不一样的
LINE这种方式的出发点跟其他的算法差不多,都是对于一个大的网络G(V, E)
把网络中的所有的节点v, 映射到一个d维的向量中, 然后尽量保持原有网络的结构
在LINE中想要保持的结构就是1度关系和二度关系
先说1度关系:p1'代表的是原始的一度关系
p1'(i, j) = wij/W, 这里的wij是边的权值, W是所有边的权重之和
p1代表的是映射之后的1度关系表示, 那么p1(i, j) = 1/(1 + e^(-ui * uj))
ui代表点i映射后的向量, uj代表点j映射后的向量,ui*uj代表的是点积
O1 = d(p1'(., .), p1(., .))
这里的O1就是优化目标函数, d是距离公式, LINE中用的是KL散度,也就是
O1 = -∑wij*logp1(i, j)
这个优化的目标
然后再说一下2度关系, 定义p2'为原始图中的节点的二度关系
p2'(vj | vi) = wij /di wij表示i和j之间的权重, di表示的是节点i的outd