美文网首页
graph&networks

graph&networks

作者: satyrs_sh | 来源:发表于2017-11-04 18:36 被阅读0次
问题与概念域:

{

  • 重叠社区,非重叠社区,nested

  • nodes 属于多个 communities

  • 如何生成 graph(network)? 即有了nodes的set,如何定义edge?

  • 有graph如何生成能够generate这个network的 model?

}

Community-Affiliation Graph: AGM

{

  • community c
  • probability p ( each community has a single p)
  • memberships m
  • nodes v
    =>how to generate network?
  1. 对每个在community A中的nodes对,我们将两者以probability Pa 连接。(只要nodes对有相同的community那么两者就会以一定概率连接)
  2. 计算edge probability

}

BIGCLAM:

{

  • memberships have strength,越大则代表越活跃,0则非member

  • community membership strength matrix F:
    行为nodes,列为communities

  • 只有一个共同community,计算同一个community中nodes对连接的概率:1-exp(-F(nodea)*F(nodeb));share多个communities,计算则从反面考虑1-(1-p1)(1-p2)...(即计算至少有一个community将nodes对连接的概率)

  • 给定一个network G(V,E) 如何找到F,使得network的极大似然最大(极大似然的计算公式:有边的概率和无边的概率连×)?即 l(F) = log P(G|F),给定F条件下G的极大似然函数求对数形式。1.计算gradient 2.梯度下降,对每一行计算l对该行F的梯度,以学习步长更新该行F,迭代 3.如果该行F<0,则令其为0

  • 但是计算每行F的偏导是linear time,非常慢。
    对属于node u的邻节点,和不属于u的邻节点的F都出现在公式中,每次计算偏导都需要对所有node n个 进行遍历。

  • 改进:将所有node的F的和 cache,那么非邻节点部分的计算则转化为和减去邻节点,这样只需要遍历u的邻节点的F 即可计算偏导再进行迭代,加速明显。

  • 数据:BIGCLAM 5min处理300k节点的nets,其他需要10days,能够处理100M条边的连接。

}

Detecting cluster:

{

  • Goal: given network, find densely linked clusters(output: set of nodes in same cluster)

  • 应用场景:
    query - to - adveritser (许多广告都属于类似的几个query)
    actor - to -movie (subset of actors belong to a subset of movies)
    social circles,circles of trust (找到set of my family ,set of my classmates等等network的子集)

  • how to define a good cluster?
    最大化cluster内部的连接数量
    最小化cluster之间的链接数量
    即为 关于edges的cut函数

  • cut:(对于有权无权图来说都可用,无权则设所有权都为1) 是set of edges with only one node in the cluster cut(S) = 所有一个节点属于S另一个指向另一cluster的edge的weight和
    =>最小cut?最优cut?

  • 引入Conductance--Graph Partitioning Criteria:

  1. 给定set A ,Conductance = cut(A) / min(vol(A) , 2m-vol(A)),其中
    vol(A) = di的和 (i是A的node,di : degree of node i),m是graph的edges总数。
    注意这里的degree会对edges重复计算,因为是基于nodes的degree。
  2. min意味着,选择的cluster A的所有degree之和应当小于m/2,即总edges一半。否则如果A过大,那对这个比直接过影响太大。即相对于group自身的density来说group和其余network部分的连接。
    这个比值越低,意味着cut越好。
  • 为什么使用这个criteria?
    实践证明能够产生更多balanced partitions
    但是计算最优cut是np问题。

}

Spectral Graph Partitioning:

{

  • 从邻接矩阵来看,cluster会是什么样子?一块数字比较大,一块几乎是0。数字较大表明nodes之间关联强,属于同一个cluster。行列皆为nodes。

  • spectrum是邻接矩阵特征值的集合。那么和graph有什么关系?(考虑最简单的情况,graph有两个component,每个component中每个node的degree都为d)
    intuition:如果一个特征值有两个特征向量,则这两个子图分离;如果两个特征值相近,则两个字图之间有连接但非常弱。

  • 邻接矩阵重要性质:对称,特征值为实数且正交

  • Degree matrix:D= [dii] dii是node i的degree
    Laplacian matrix: L = D - A。
    性质:L *x =0 ;每行每列和为0 ;特征值为0

  • 对一个对称矩阵M第二小的特征值公式:math证明略。化简后问题转为找到最小化 (xi - xj)^2之和的 x ,i、j为一个cluster中的node。

  • 将partition(A,B)表达为一个向量,即属于A时,y为+1,属于B为-1。将 最小化 (xi - xj)^2之和 转为找x使得 (yi-yj)^2之和 最小。yi只能在-1,+1中取值。=>不能准确解决,将y松弛。恰好即为第二小的特征值。

  • Rayleigh Theorem
    总结:最优化cut的问题,即时最小化第二小特征值的问题,即时寻找参数 x的问题,而x又是第二小特征值的特征向量。x被称作Fiedler vector

  • 最后,根据L计算出的第二小特征值及特征向量进行分组,如何cluster?即如何选择splitting point的问题。排序,split at 0,分成正负两类。

  • 有降维的意思。x就能够涵盖cluster的信息即graph中所有nodes的信息,比L小得多。

  • 多个cluster 如何?
    k-way spectral clustering:

  1. 迭代bi-partitioning
  2. 使用多个特征向量,构成一个矩阵,使用一种聚类方式(kmeans等)进行对这个特征向量构成的矩阵聚类(每个node被特征向量中对应的值表示 i:(x1i, x2i ,x3i...)x1,x2...为特征向量)(实践效果很好)

}

Trawling:

{

  • 找到graph中的小的community?

  • 定义task:
    given:left 有 s个nodes,每个links all nodes on the right (fully connected);right 有 t个nodes。identify all the 完全二部子图(complete bipartite subgraphs)

  • frequent itemsets:
    找到所有subsets T of at least f times bought together by users。这个问题和完全二部子图的关联?=> frequent itemsets = complete bipartite subgraphs

  • 可以把一个graph转成itemsets,graph中出边指向的node即为set中的items,起始点即可视为为user的basket。完全二部子图是整个graph的一部分,可用频繁物品集表示。

}

相关文章

  • graph&networks

    问题与概念域: { 重叠社区,非重叠社区,nested nodes 属于多个 communities 如何生成 g...

网友评论

      本文标题:graph&networks

      本文链接:https://www.haomeiwen.com/subject/orhqmxtx.html