zoukankan      html  css  js  c++  java
  • SLAP(Speaker-Listener Label Propagation Algorithm)社区发现算法

    其中部分转载的社区发现SLPA算法文章

     一、概念

    社区(community)定义:同一社区内的节点与节点之间关系紧密,而社区与社区之间的关系稀疏。

    设图G=G(V,E),所谓社区发现是指在图G中确定nc(>=1)个社区C={C1,C2,...,Cnv},使得各社区的顶点集合构成V的一个覆盖。

    若任意两个社区的顶点集合的交际均为空,则称C为非重叠社区(disjoint communities);否则称为重叠社区(overlapping communities)。

    二、SLPA算法思想与流程 

    SLPA(Speaker-listener Label Propagation Algorithm)算法是一种社区发现算法,它是对LPA算法(标签传播算法)的拓展。SLAP重叠社区的发现主要认为每个节点不光只有一个标签,每次迭代增加一个标签,最后再通过r进行筛选

    算法思想如下:

    输入参数:迭代次数T,满足社区次数要求的阈值r

    输出参数:每一个节点的社区分布

    (1)首先,每一个节点的存储器中初始化一个唯一的标签。

    (2)然后,重复进行以下步骤,直到达到最大迭代T:

      a. 选择一个节点作为监听器;

      b. 所选节点的每个邻居随机选择概率正比于该标签在其存储器中的出现频率的标签,把所选择的标签(speakervote)发送到听众(listener);

      c. 监听器增加接收到的最流行的标签到内存。

    (3)最后,根据在存储器里的标签和阈值r,后处理被用于输出社区

    三、代码实现

    实现代码可在GitHub网站上下载,Python下载地址

    伪代码:

    //Algorithm 1 : SLPA(T, r)
    [n,Nodes]=loadnetwork();
    //Stage 1: initialization
    for i = 1 : n do
    Nodes(i).Mem=i;
    //Stage 2: evolution
    for t = 1 : T do
    Nodes.ShuffleOrder();
    for i = 1 : n do
    Listener=Nodes(i);
    Speakers=Nodes(i).getNbs();
    for j = 1 : Speakers.len do
    LabelList(j)= Speakers(j).speakerRule();
    w=Listener.listenerRule(LabelList);
    Listener.Mem.add(w);
    //Stage 3: post-processing
    for i = 1 : n do
    remove Nodes(i) labels seen with probability < r;
    

      

    四、References

    Xie J, Szymanski B K, Liu X. SLPA: Uncovering Overlapping Communities in Social Networks via a Speaker-Listener Interaction Dynamic Process[C]// IEEE, International Conference on Data Mining Workshops. IEEE Computer Society, 2011:344-349.

    注意事项:

    SLAP算法是异步更新,但是原文并没有提到节点排序的具体规则,Python中调用代码numpy.random.permutation(x),对矩阵进行洗牌,并返回洗牌后的矩阵副本;

    其次T根据网络结构和规模取值不一,实验证明当T>=20时,节点社区划分结果一般就稳定了。r>=0.04

  • 相关阅读:
    转:高并发场景下强一致预算/库存扣减方案
    转:Dubbo性能调优参数及原理
    转:java线程状态说明,Jstack线程状态BLOCKED/TIMED_WAITING/WAITING解释
    使用增强学习法之SQ3R主动阅读
    建立实用投资计划
    使用smarty方法实现目标
    主动学习
    小知识
    大脑的处理模式
    真正的随笔
  • 原文地址:https://www.cnblogs.com/bethansy/p/6710899.html
Copyright © 2011-2022 走看看