复杂网络节点重要性评价方法的对比-基于igraph C library

前言   

     在此之前,笔者写过一篇关于复杂网络中节点重要性评估方法的文章(http://blog.csdn.net/a_step_further/article/details/51176964),当时用spark实现过比较简单的方法。近期在业务应用中,又遇到需要对业务问题中不同用户的影响力进行分级的需求,那么重新捡起来复习下。这次使用igraph C library来做,因为它内置了不少已经开发好的接口,使用起来很是方便。本文将几种方法简单做一个对比。

方法讨论

      评价网络中节点重要性程度的主流方法有:节点度、中心度、点介数、PageRank、特征向量等,而igraph包含有所有这些方法的实现,对应关系是:

方法 igraph接口 备注
节点度 igraph_strength 在简单的度数统计之外,还引入了边的权重。即所有相关的边的权重相加,就是这里的节点强度
中心度 igraph_closeness 直观理解起来,就是刻画一个点有多快可以被其它点沿着某一条路径达到
点介数 igraph_betweenness 经过该点的网络中测地线的数量
PageRank igraph_pagerank 太著名了,不解释
特征向量法 igraph_eigenvector_centrality 在评价某节点时,不仅考虑它自己的影响力,还要考虑其邻居节点的影响力,即你认识的人越重要,你自己也越重要

实践讨论

    本文在业务分析中使用的是微博中转发、评论等关系所构造的图结构,图中每个节点代表一个腾讯微博账号,一条边代表一次转发或评论关系,边的权重代表某段时间内的互动次数。该图的规模是52万个节点,365万条边,使用的单机配置是64G内存,2个物理CPU,6核心。在实践中进行尝试的一些数据如下:

  对于上面3种跑出结果的数据进行标准化,画出数据分布图如下所示,可见均符合长尾分布  

  

你可能感兴趣的:(复杂网络节点重要性评价方法的对比-基于igraph C library)