1. Learning Deep Representations for Graph Clustering
论文信息:Tian, Fei, et al. “Learning Deep Representations for Graph Clustering.” AAAI. 2014.
来自微软亚洲研究院,这是最早将深度学习应用于图聚类问题(graph clustering)的文章。论文的思路非常简单,首先将自编码器(autoencoder)应用到图结构中进行特征提取,然后使用 k-means 聚类。这种思路的 motivation 源于谱聚类(spectral clustering)。
由于自编码器的计算复杂度 O(n) (指训练好之后的前向传播过程) 要远低于谱聚类中的特征分解 O(n3) ,因此这个方法计算复杂度低于谱聚类。其次,当加入稀疏性限制之后,自编码网络可以转化为稀疏自编码,而稀疏谱聚类却无法直接实现。
个人感觉作者提出的这两个优点都颇为牵强。关于第一个优点,抛开模型的训练时间去谈预测时间有点耍流氓了,更何况文中使用的还是深层的栈式自编码网络(SAE);其次,拿稀疏性去要求谱聚类,这是以己之长比人之短,稀疏性只是为了避免自编码网络自身的缺陷而提出的改进策略,对图聚类的结果并没有实质的提升效果,作者也只是说这能 “improve the efficiency of the data processing”。
GraphEncoder模型
模型的核心结构是以稀疏自编码网络为基本单元构建的栈式自编码网络。给定一个 n 个节点的图
步骤如下:
step1
得到graph的 n×n 的邻接矩阵S和度矩阵Dstep2
将 D′S 作为SAE的输入,实际上是graph有n个node,作为n个sample的训练集输入到 SAE中,每个sample的feature的维度是n表示该点与其他各点的连接情况。step3
训练SAE,文中采用的是稀疏自编码的栈式形式。(自编码器一般都采用lbfgs的最优化策略来bp,效率和效果较好)step4
取栈底的AE的hidden层的vector作为node embedding的结果step5
将embedding结果作为k-means的输入,进行graph cluster,最后用 NMI 来评价cluster的结果
优点:
1. 速度快,相比于谱聚类(涉及了EVD)
2. 对于稀疏图而言,SAE有更好的表达效果
3. SAE更易于扩展成更deep的structure
缺点:
1. 需要遍历所有的node,存储所有node的邻接点信息,对于big graph 可能在效率上不怎么work
2. 只是考虑了1-hop的信息,embedding的效果可能不够好
(参考自BVL的博客:http://blog.csdn.net/bvl10101111/article/details/54292016 )
关于算法复杂度
算法复杂度: O(ncd) (不包括k-means的复杂度)
d : 隐藏层最大节点数