美文网首页
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

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