Chapter 10 Mining Social-Network Graphs 主讲人:李玉国 There is much information to be gained by analyzing the large-scale data that is derived from social networks. In this chapter, we shall study techniques for discovering communities , discovering similarities among nodes , counting triangles , measuring the neighborhood size of nodes , and show the effect of those properties above. Part 1: Introduction of Socail Network Section 10.1 Part 2: Communities of social graphs Section 10.2,10.3,10.4,10.5 Part 3: Similarities among nodes Section 10.6 Part 4: Triangles number of a social graph Section 10.7 Part 5: Neighborhood size of nodes in a social graph Section 10.8 10.1 Social Networks as Graphs 社交网络的三个特性: 有实体参与、实体间至少存在一种关系、关系的不随机性。 组成元素:点和边(边的两端点间存在某种联系),其中图中的节点可以 属于不同的类型。 社交网络的分类:“friend”network ,telephone network , email network Collaboration network等。 part2 Discovering communities 10.2 Clustering of social network graphs 聚类:对点集进行观察并按照某种距离测度,将他们聚成多个“簇”的过程。 最终使得簇内的点距离较近,而不同簇中的点距离较远。按照聚类算法所使用的 两种不同的策略,可以将聚类算法大致分为层次和点分配两类。 1.层次聚类 初始化:将每个点自己单独看成一个簇(簇的表示) while(为达到结束条件) 选择两个合适(距离近)的两个簇合并(*距离的表示) 将这两个簇合并成一个簇,并更新相关信息 end Section 10.2 2.点分配聚类 初始化:获得簇的数量,选择彼此间距离尽可能远的点作为初始簇; while(没有剩余的点) 将剩余点集中的一个点分配到合适(距离近)的簇中; 更新相关信息; end 分析 communities {A, B, C} communities {D, E, F, G} 该图中两点间的距离表示(无权图): 例如: value=1 (两点间有边连接)and value=1.5(两点间没有边连接) Section 10.2 思考 从分析中看到常规的两种聚类算法无法很好的完成对图中节点的聚类,因此 我们下边采用一种特殊的聚类算法来实现对图中的点的聚类从而生成相对正确的 communities。 分析 连接两个社区的边,通常是社区中的点到另外一个社区的点最短路径中的一部 分,因此,我们可以用一个边在任意两点最短路径中出现的次数(betweenness)作 为聚类的标准。bt越大说明它越可能是communities之间的边,bt越小说明他越可能 是community内的边。 实现 求取每个边的betweenness,并将边按其bt值的大小进行排序,然后按照这个 次序从单个点开始对其进行聚类。 改进:从图开始,依次从图中删除bt值大的边,最终得到期望的communities。 Section 10.2 求bt 使用Girvan-Newman Algorithm(GN)依次求取每个边e的betweenness。GN的实 现流程如下: 生成以边e为root的 BFS 为每个节点标记从e 到该点的路径数 计算e的bt: 1.每个点的bt初始为1 2.非leaf=1+所有以它 为上端点的e的值 3. 边 e=e 的 下 端 点 的 值*Pi/(P1+P2+… +Pk) 10.3 Direct discovery of communities(Frequent Itemsets) 思路:我们将一个一般图,转化成二部图,然后从二部图中寻找完全二部子图 Ks,t(其寻找过程是一个频繁项集挖掘过程,一个节点数是t的项集,至少在s个购物篮 中出现),然后以此完全二部子图作为communities的核心,进行扩展(将与当前社区中 已有节点之间有很多边的点加入到带扩展的community中)。 Basket: a = {1, 4},b = {2, 3}, c = {1} and d = {3} If s = 2 and t = 1, K2,1= { 1 a ,1 or{ 3 b ,3 c} d} 10.4 Partitioning of Graphs(matrix theory) 分割原则:将图进行分割,尽量使完成分割过程中隔断的边的数量最少。 分割评估: S T S = {H} T = {A, B, C, D, E, F, G} Cut (S, T ) = 1 Vol (S) = 1 Vol (T ) = 11 1+1/11=1.09 S = {A,B,C,H} T = {D, E, F, G} Cut (S, T ) = 2 Vol (S) = 6 Vol (T ) = 7 2/6+2/17=0.62 Section 10.4 本节中借助矩阵理论,使用Laplacian Matrix,通过求取其特征值和特征向量,然后 根据特征向量进行分割,从而使得分割图的过程中,分割尽可能少的边。 Laplacian matrix: L = D − A(D是图的邻接矩阵,A是图的等级矩阵) - = L D A Section 10.4 求Laplacian matrix的特征值和特征向量,然后根据特征向量中的值来分割(值相近 的放一组)。下面通过一个例子说明。 10.5 Finding overlapping communities 在实际应用或环境中,社区中的成员是相互重叠的。例如,一个学校的学生,他 可以既属于学校的乒乓球社团也可以属于篮球社团等社区。本节,将基于社区中成员 重叠这一性质和Maximum-Likelihood Estimation这一工具,在图中实现社区成员可以重 叠社区的挖掘。 方法: 使用一个模型(含有参数),通过调整参数可以使模型具有最大可能性的产生, 一个特定的产品。 本例中通过使用Affiliation-Graph Model,根据communities(含有参数:实体在 社区中分配情况和社区内两个实体有边相连的概率),产生给定的图。通过使用梯度 下降算法找出,使模型产生给定图具有最大可能性的参数值,从而求出实体在社区中 分配情况,即得到该图中的社区。 An example Consider the tiny social graph . Suppose there are two communities C and D, with associated probabilities pC and pD. Also, suppose that we have determined (or are using as a temporary hypothesis) that C = {w, x, y} and D = {w, y, z}. Pd=0.5 10.6 Random Walks with Restart 任务:给定一个点,从图中(最好是多节点类型的图)来测量所有图中(同一类 型中)所有节点,找出如给定点最近似的点。 方法:有一定规模的随机行走者,它们沿着图中的边在图中随机的行走着,每时 每刻都有行走者在图上结束行走,也会有一些新加入的行走着。如果每次新的行走者 都是从同一节点v上加入,通过不断的随机行走,可以预见最终会有很多的行走者分布 在v节点以及跟v关系紧密的节点上。因此,通过最后查看各节点上的行走者数目,得到 节点v的相似点(行走者数目达的点)。 下面通过一个例子来说明该方法。 Section10.6 Transition matrix for the graph above: Iterate Distribution of the walker that we get 10.7 Counting Triangles 三角形的个数是社交网络图中非常有用的一个属性,通过分析一个普通图中三角 形的数量可以来判断该是一个社交图的程度,通过这一属性也可以用来判断一个社区 存在的时间。本节将会介绍两种获得图中三角形个数的方法。 1.The first algorithm for finding triangles 假设我们有一个图,有n个点(1,2,3,…,n)和m>=n条边。如果一个点有至少 𝑚 条边,我们称这个点为hitter。可以看出,本图中最多只有2 𝑚 个hitter。 数据准备: (1)记录每一个点的degree,O(m); (2)记录每一条边,以边的两个端点为key,O(m);边的两个端点是有序的) (3)记录与一个点相来连接的所有点。 对于hitter部分: 因为最多会有2 𝑚个点,所以任意三个点组合来判断是否构成三角形,所以 此过程的时间复杂度为O(𝑚3/2 )。 Section10.7 对于非hitter部分: for(each e){//m条边 if(e.1不是hitter){ for( 𝑚 ){//e.1的所有邻接点,最多有 𝑚个 if(邻接点和e.2之间有边){ count++; } } } } 时间复杂度为O(𝑚3/2 )=m* 𝑚 所以,综合这两部分,该算法最终的时间复杂度仍然是O(𝑚3/2 )。 Section10.7 2.通过MapReduce实现 通过使用多路连接,将三个可能形成三角形的边放到同一桶内,然后再查看桶内 三角形的个数。 z y x 10.8 Neighborhood properties of Graphs 定义: Neighborhood:给定一个点v和长度d,从v出发经过小于等于d的长度到达的所有点 的集合,记作N(v,d)。 图的直径(diameter):如果一个图是强联通图,图中所有点距离中的最大值记 作该圆的直径。 传递闭包(transitive closure):对于任意两点u、v之间存在从u到v的路径,那么 (u,v)属于传递闭包。 可达性(reachability):给定一个点v,找到所有以v为起点所能到达的所有的点。 Section 10.8 1. 求传递闭包 1.1 Transitive closure via mapreduce log2d rounds 1.2 Transitive closure by graph reduction 感谢老师、学长/姐和同学的聆听,欢迎大家 对讲解过程中存在的不足和错误之处批评指正! 2014.09.11