从word2vec算法发表以后,各种嵌入方法越来越火热,而LINE算法就是一种网络嵌入的算法。
使用LargeVis可视化的MNIST数据集
所谓网络嵌入,就是将一个网络里面的各个节点用向量表示出来。例如,所有节点都使用一个二维向量表示,那么就说这个网络嵌入了一个二维空间。类似的,也可以嵌入三维或更高维的空间。
LINE算法
基本思路是:如果两个节点在网络上相连,那么它们所对应的向量之间的距离也应该比较小。
要学习的参数就是每个节点对应的向量,例如共有10个节点,每个节点打算嵌入到3维空间里,那么就共有10*3=30个参数需要学习。
而学习的目标就是:最小化相邻节点对应向量之间的距离,同时最大化不相邻节点对应向量之间的距离。
上述思路是保留网络上的一阶连接关系,LINE算法还可以保留二阶关系,思路是类似的,本文就不深入展开了。
LargeVis算法
LargeVis是一种基于LINE的高维数据可视化算法。其流程为:
1、将高维数据表示为网络
2、使用LINE算法将网络嵌入到2维或3维空间
3、绘制出嵌入后得到的向量。
后面两步基于上文的LINE算法可以做到,那么如何将高维数据表示为网络呢?一个常用的方法就是构建kNN网络,即对每个样本,计算出距离其最近的k个样本,作为它在网络上的邻节点。
从高维数据构建kNN网络
LargeVis算法虽然简单,但效果却很不错,下面是一些数据集的可视化效果。注意,可视化过程是无监督的,颜色是后期根据样本类别加上去的。
DBLP上的作者合作关系可视化,颜色表示不同的领域
人脸的二维嵌入结果,相似的人脸位于相近的位置
领取专属 10元无门槛券
私享最新 技术干货