您的位置:首页 > 理论基础 > 计算机网络

从数据预处理开始学习网络可视化——社团发现算法

2017-11-28 18:45 399 查看

读“Finding and evaluating community structure in networks”有感

最近开始做毕业设计,我的方向是复杂网络拓扑的可视化,这个方向早在2012年左右就已经做得很火热了,经过我的搜索,最近几年对拓扑可视化的研究实在很少。在前人的研究成果上,暂时能做的就是加上一些限制条件使之成为一个较新的研究问题,而我目前加入的则是地理信息对网络拓扑的限制,这样的话就会在限制的区域内进行拓扑的布局绘制,从而改进相应的布局算法。


既然是可视化,那么就有对应的可视化对象。输入对象是文本节点号,表征一个连接关系,其实表征的是拓扑节点之间相连的边。

从输入到最终的可视化,大的步骤会有两个:数据预处理和布局渲染。

首先我将要从数据预处理的角度去接近可视化这个问题。当输入是一个超大型网络的节点关系时,一味地直接布局一定是杂乱而且复杂的,需要按照一定的属性特点对输入的数据进行一个聚类以减少绘制节点的数量,这就是社团发现。社团发现将联系紧密的节点归为一个社团,这样在实际可视化的时候就能用一个点来代替聚集的这一部分社团,从而达到简化图形效果且便于观察的目的。

社团发现与图论的关联

从我最初了解到的而言,社团发现就是在一堆复杂的关系数据中找出具有紧密联系的一些节点作为一个整体,从而将复杂的关系梳理成几个小的团体。那么什么叫做有紧密联系什么又不是呢?这里就涉及一个内部属性的定义问题,而且这建立在一个至少有相对多的节点的情况下,否则如果只有两个节点,没有对比,怎么能叫做紧密联系呢。

所以,社团发现第一个重要点是对输入数据的理解,首先会有相对多的连接关系,然后这些关系间有些节点有间内部有很多条不同边路径可达,而有些节点需要经过相同路径连系在一起。这时就产生了不同的群聚关系。

一开始我对社团的理解总是从点的角度去理解,毕竟,社团是对点的一个聚合。直到阅读了Newman的论文“Finding and evaluating community structure in networks”后,才领会到其实要描述社团结构从边的角度去理解可能会有更好的视角。当某条边是很多节点到达彼此经过的最短路径的必由之路时,这条边是非常重要的,那么如果删除了这条边,可能就会导致原本连通的一个节点拓扑图变得弱连通甚至不连通,那么从这个角度出发,当我们不断删除重要边的时候,就会慢慢得到一些相对封闭的独立块,而这些块正是我们之前需要理解和发现的社团。这个思想也正是Newman提出的基于边的betweenness而达到分割图得到社团的一个方法。

很神奇的是,原本一个对点集的划分,居然从边的角度得到了一个相对理想的回答,所以事物不能只看到它的本身,还要发现与其相连的相关的属性,从而去理解事物解决问题,或者说从其他领域借鉴思想。

基于借鉴的思想,我才发现之前对社团的理解其实太过于狭隘,其实稍微思考一下,就会发现,我们的输入关系其实就是一副简单的无向无权图,对于图的处理,不外乎就是涉及到度,连通度或者边等相关问题。而社团,从某种角度而言,也是一个独立的连通图划分。甚至说,可以是树的生成问题等等。

这样一来,对于网络社团发现的问题我们就转化成了图论中的数学问题,这样的话,从理论上就会更扎实。

社团划分的方法

文中给出了一个关键属性——边的betweenness,这是从以前对点的重要性判断中提出的属性betweenness的一个迁移,也算是对前人思想的一个迁移。所以在学习过程中,也要有迁移能力。


边的betweenness是描述边的重要性的一个概念,当任意两个节点间的最短路(原文有三种路径定义,除了最短路还有随机路径或者电阻路径)经过某条边特别多次时,该边就相对整个连通结构很重要,而我们可以优先删除betweenness高的边,然后逐渐得到满意的社团。

另外一点,本文提到其关键步骤不仅仅是计算上述属性并删除最大的,而更重要的是每删除一次就更新计算,重新得出大小关系,这是与以前论文不同的关键,而必须通过这个步骤,才能得到较满意的社团划分。

社团发现好坏的验证

接着刚才那篇论文继续聊,文中给出了具体的通过边的思想来划分社团的方法,同时也给出了一个验证社团划分好坏的方法——Modularity。


Newman给出了先后两个Modularity定义来衡量社团发现的结果好坏。为什么有两个,因为第一个定义在针对一个完整的只有一个划分(也就是不划分)的情况下其Modularity是最好的,这显然不合社团划分的要求。所以后来他改进了其定义:

Q=∑ieii−ai2=Tr(e)−||e2||

其中,e类似社团的邻接关系矩阵,而||x||表示矩阵x的各项之和。

大体意思是社团内部连接关系程度减去同规模社团随机连接的期望,从而获取这样判断关系。原文中对公式的解释我没有理解很清楚,可能还需要继续理解。但是表征的物理含义则是社团划分的结果越好,那么社团内部联系越紧密,边数越多,而社团之间的连接边数越少,通过这样一个比例来验证划分社团的好坏,这也是其算法过程中选取优秀划分的一个衡量标准。

算法总结

上述论文的算法其实是基于分裂的聚类算法,而在那个年代,分裂的方法相对较少,所以他的研究算是很有开创性的一个研究,一个是提出了关于应用在网络拓扑中的几个关键属性,二是提出了不断更新计算的算法步骤。

而针对聚类,其实还有很多分类。比如基于聚合的聚类方法,即从下而上。本篇参考论文中使用的则是基于分裂的聚类方法,即从上而下。而目前机器学习还有基于划分的聚类算法,如k-means等;或者基于网格;或者基于最优化目标函数等的启发式算法;或者基于标签传播的算法等等。

其实传统的聚类是针对一些属性对节点进行聚类,而本文中的网络拓扑聚类反而是相对特殊,因为他给出的是节点的关系连接的聚类,所以更类似图论中的图。所以相关的邻接矩阵或者图算法也是可以用来参考的一些方法,后面可以继续深入学习理解。

参考:“Finding and evaluating community structure in networks”——M. E. J. Newman and M. Girvan
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  可视化 结构 网络
相关文章推荐