基于模块化的大规模图网络数据可视化(2016)
关键词
- 网络可视化(Network visualization)
- 模块分组(Module grouping)
- 社区检测(Community detection)
背景与问题
动态网络结构的高效可视化已成为许多大数据应用中的主要问题,例如大型网络分析、流量管理、资源分配图、物流、社交网络和大型文档存储库。
图连接模式在网络数据分析中是一种常见的分析模式,用于启发式探寻连接和聚类的特征,有助于我们寻觅大规模网络中的核心节点。然而,对于大型网络的可视化目前仍然存在挑战。
相关的工作
1. 图化简方案
-
Graph Summarization:【ACM SIGMOD 2008】
介绍了两种数据库风格的图聚合操作 SNAP 和 k-SNAP,用于汇总大图,同时允许用户以交互方式控制大图中每个聚合的分辨率。 -
HiMap:【IEEE PacificVIS 2009】
提出了一种针对大规模社交网络的层级可视化方案, HiMap将社交网络聚集成一个层次树,并且只呈现距根节点一定深度内的节点。这种策略大大减少了以前巨大的图形可视化设计中常见的视觉混乱。
-
K-Core:【Handbook of Optimization in Complex Networks 2012】
从图中删除度数小于k的所有顶点。其余顶点中的一些可能保持少于 k 条边。然后移除这些顶点,依此类推,直到无法进一步移除为止。通过迭代删除链接数少于k的节点来降低复杂度
-
Identification of core-periphery structure in networks:【IEEE TVCG 2015】
提出了一个全新的判断核心结构和外围结构的算法,在该算法中并不局限于以节点度数来衡量是否位于核心【与K-core的思路有明显的区别】,该算法与之前的算法得到结果差距并不大,但是作者认为新算法与老算法判断的一些差距能够有助于我们找到interesting or anomalous points。 -
Reducing Snapshots to Points【IEEE VAST 2015 best paper】
提出一种降维的方法,将包含时序的动态图(高维度)结构压缩成二维平面节点表示。主要流程是:离散化、向量化和投影。
2. 社区检测进展
-
Modularity and community structure in networks【Proc Natl Acad Sci 2006】
提出基于模块度分析的方法,将社区检测问题转化成模块度的优化问题,并且提出了衡量算法在社区检测上性能的方法。 -
之后依次有人在此基础上提出了降低社区检测复杂度的Louvain方法,和针对动态图演化的社区检测方法。
3. 可视化设计进展
-
Fast unfolding of communities in large networks【Journal of Statistical Mechanics: Theory and Experiment 2008】
反复迭代两个步骤:
- 对网络进行基于模块优化的社区检测
- 将检测到的社区进行聚合
-
Maps of random walks on complex networks reveal community structure【Proceedings of the National Academy of Sciences 2008】
通过特定的编码手段【基于哈夫曼编码的改进】,利用随机漫步得到的信息流揭示社区结构
-
Apolo:【Proceedings of the SIGCHI Conference on Human Factors in Computing Systems 2011】
介绍了作者构建的一个系统Apolo,该系统基于混合的主动方法,结合可视化、人机交互和机器学习【Belief Propagation】,引导用户渐进交互地理解大型数据。
-
Motif Simplification: Improving Network Visualization Readability with Fan, Connector, and Clique Glyphs:【Proceedings of the SIGCHI Conference on Human Factors in Computing Systems 2013】
通过使用扇形、连接器和团状结构来提升网络可视化的可读性。
-
Interactive Visual Summary of Major Communities in a Large Network:【IEEE PacificVIS 2015】
提出了Voronoi treemap和Voronoi cell的方法,用泰森多边形的形状、大小、颜色和位置距离来编码社区内部和社区之间的属性,交互式对社区质量和社区间关联信息进行可视化。
ModuleGraph及其核心思想
- ModuleGraph是论文团队提出的一个图可视化框架,按照模块化思想把大图的社区进行层级聚合,以帮助用户解决图大小限制并有效地深入了解属性图数据。
- 核心思想是将图按照社区划分为若干簇,并提供了一种可视化这些簇之间的关系的方法。我们可以启发性探索不同集群之间的联系。
- 和之前引用的related work的侧重点稍有不同,本文主要通过设计模块来预测大规模网络最终可视化布局的效果
工作流程
-
通过引入模块化方法来解决图可视化问题.
所谓的模块化方法就是把
将社区聚合之后变换为
其中每个M是有多个特征维度的向量,例如可以表征模块内子节点数量、子连边的数量、模块的种类等等。可视化目标是将M向量的所有信息展现出来。 -
提出混合方法来进行社区检测和聚合。
-
module classes的社区检测算法复杂度高,精度好但是速度慢。
-
Louvain方法降低了复杂度,虽然速度更快但是检测质量稍差。
-
考虑到如果图过大,经过一次聚合之后仍然会出现节点过多的情况,于是使用层级模块检测(hierarchical module detection)将之前聚合的模块(超点)再次视作普通节点,重新进行模块检测和聚合,不断重复,直到显示的节点数小于某一个阈值时停止。
-
依据模块的一些属性,设计了5种模块分类的类型,并且使用特定的符号而非简单节点来表示。【可根据我们的具体情况进行新的type的定义】
-
定义了一个三维向量 V f = [ α , β , δ ] V_f=\ [\alpha,\beta,\delta] Vf= [α,β,δ],满足:
(其中 e i e_i ei表示社区内第i个节点的邻接点数,n表示社区内总节点数) -
依据三维向量可以在三维空间中对应一个点坐标,在社区检测之后对每个社区计算V_f,得到每个社区在三维空间中的坐标。
-
进行类似K均值算法的操作,不过由于聚类数就是之前定义的模块type的数目(这里由上文可知设定为5),所以可以认为聚类数目确定。
-
基于之前对模块类型的定义,在图中选出对应5个模块的点作为初始聚类中心【或者认为设置一个标准的模块特征坐标】
-
进行类似K均值算法的迭代,直到达到一个定义的判断条件后停止。
-
- 提出K聚类方法(对K means clustering的改进)分析模块中的每个图形模式以增强模块可视化。
- 提出一个比较好的视觉设计。将超点进行美化的同时,配合弦图向用户展现了社区内和社区间更多的信息。
总结
个人认为本文的工作大部分是整合和加工前人的成果,思路比较常规,创新点并不突出,我认为主要的亮点是论文引入的视觉设计看起来还不错,相比之前的super-node,能更方便用户直观获取社区内和社区间的一些额外属性。
个人在阅读完论文之后最大的收获是通过这篇论文看了不少related work,里面引用的论文基本全是顶会和顶刊论文,帮助我了解了从2006年到2016年对于图简化、社区检测和模块聚合的一些权威进展,虽然这些论文发表时间距离现在都比较远,但是里面的很多思想对我来说是全新的、未曾了解的。