社交网络图挖掘3--重叠社区的发现及Simrank

来源:互联网 发布:php防sql注入代码 编辑:程序博客网 时间:2024/05/18 00:33

  • 重叠社区的发现
    • 相关知识点
    • 关系图模型
    • 避免成员隶属关系的离散式变化
  • Simrank
    • 带重启的随机游走

重叠社区的发现

相关知识点

社区的本质:一个实体有可能同时属于两个社区,任一社区内的边会十分密集,但是两个社区交集内的边会更加密集,而三个社区交集内的边还要密集。

极大似然估计(maximum likelihood estimation,MLE):我们对某种对象(如朋友图)实例的生成过程(即模型)建立某种假设。模型的参数确定了任一具体实例的生成概率,该概率称为这些参数值的似然(likelihood)。

关系图模型

社区-关系图(community-affiliation graph)
社区-关系图(community-affiliation graph)机制可以从社区生成社交网络图,规定如下:

  1. 存在给定数目的社区,存在给定数目的个体(图的节点);
  2. 每个社区可以拥有任意的个体集合作为成员,即个体对社区的隶属关系是模型的参数;
  3. 每个社区C都有一个概率Pc与之相关联,该概率表示C中两个成员由于都是C中成员而通过边连接的概率,这些概率也是模型参数;
  4. 如果一对节点属于两个或更多社区,那么如果某个包含这两个节点的社区按照规则3判定节点间有边的话,那它们之间就有边。

计算通过上述机制生成图的概率,计算的关键点:

  1. 给定个体到社区的分配
  2. Pc值;
  3. 如何计算边的概率。如果uv是社区的非空集合M中每个社区的成员,并且不是其他社区的成员,那么uv之间存在边的概率为:
    Puv=1CinM(1Pc)

那么E等于观察图中边集合的似然为:

(u,v)inEPuv(u,v)notinE(1Puv)

避免成员隶属关系的离散式变化

以连续方式对个体属于社区的隶属强度进行调整,直观上看,两个个体属于同一社区的程度越强,那么该社区促使两个个体之间有边的可能性也越大。改进的模型规则:

  1. 固定的社区和个体集合(同);
  2. 对每个社区C和个体x,有一个隶属强度参数FxC,参数为任意非负值,0意味着该个体不属于该社区。
  3. 社区C使得uv之间存在边的概率为:
    PC(u,v)=1eFuCFvC

节点uv之间存在边的概率为:

Puv=1C(1Pc(u,v)=1eCFuCFvC

那么E等于观察图中边集合的似然为:

(u,v)inEPuv(u,v)notinE(1Puv)=(u,v)inE(1eCFuCFvC)(u,v)notinEeCFuCFvC

对上式进行简化(某个函数最大化的同时也使得该函数的对数最大化),简化过程用到了log(ex)=x,于是有:

(u,v)inElog(1eCFuCFvC)(u,v)notinECFuCFvC

最后采用梯度下降法来寻找成员到社区的最佳分配方案,以使该分配得到的似然使最大的。即选择一个节点x,朝着上式值最大的方向调整所有FxC的值。

Simrank

  • Simrank理论上适用于任何图,但最适合应用于具有不多类型节点的图。
  • Simrank的目标:计算同类型节点之间的相识度,它通过考察随机游走这从某个点出发随机游走的最终状态来计算。
  • 局限:由于Simrank必须对每个初始化节点计算一次,因此它受限于能够完全采用这种方式进行分析的图的规模。

社交网络上的随机游走者:无向图节点N上的游走者会以等概论走到其邻居节点。

带重启的随机游走

思路:假定我们关注社交网络中的一个特定点N,我们想知道游走者从改点出发游走不远后到达的位置,我们可以修改转移概率矩阵,使得从任一节点转移到N的概率很小。

  • 令M为图G的转移概率矩阵,如果节点i的度数为k,且ij之间有边,则M中第i行第j列的元素为1/k,否则为0。
  • β为游走者继续随机游走的概率,则1β为游走者远程跳转到初始节点N的概率,令eN为一个列向量,v是下一轮位于每个节点的概率向量,则vv的关系是:
    v=βMv+(1β)eN

    注:由于初始的迭代中有振荡,因此整个收敛过程需要时间。收敛后可以看到所有节点与节点N的相似度矩阵。
阅读全文
1 0