一种基于单步添加团的社交网络的朋友自动分组方法

文档序号:10687067阅读:157来源:国知局
一种基于单步添加团的社交网络的朋友自动分组方法
【专利摘要】本发明公开了一种基于单步添加团的社交网络朋友自动分组方法,该方法将社交网络描述为一个二元组,利用基于单步添加团的重叠社团检测算法来解决社交网络朋友自动分组问题。本发明能快速实现社交网络中朋友圈自动分组,提高分组效率和准确性,从而可以通过准确的朋友分组,为用户推荐更可靠地朋友,减少用户在搜索志同道合朋友时产生的不必要麻烦。
【专利说明】
一种基于单步添加团的社交网络的朋友自动分组方法
技术领域
[0001] 本发明涉及社交网络中朋友自动分组技术领域,具体来说就是提出一种基于单步 添加团的社交网络的朋友自动分组方法。
【背景技术】
[0002] 随着互联网时代的到来,社交网络犹如雨后春笋得到了迅速地发展,吸引了国内 外学者的广泛关注。社交网络的出现改变了人们传统的思考、交流、工作及生活方式,越来 越多用户选择加入在线社交网络进行信息的交流,社交网络的用户规模呈爆炸式增长,加 剧了网络中信息增长的速度。网络信息的加剧导致用户无法从海量的数据中选择自己所需 的信息,也就是用户面临信息过载问题。如果用户对自己所在的在线社交网络进行手动的 朋友分组,这样不仅费时还费力,导致很多用户没有对他们的朋友进行分类,因此,大多数 社交网站都会根据用户的某些公共属性自动为用户分类好友。
[0003] 目前社交网络朋友推荐中的自动分组问题包含两类研究方法:
[0004] -类研究方法是基于社交网络全局特征的研究方法,这类方法需要探测社交网络 中所有的链路结构,获知网络的全局信息。但是这类方法计算成本较高,在复杂的社交网络 中可能会影响推荐算法的高效性。
[0005] -类研究方法是基于社交网络局部结构特性,该类方法以网络中节点的结构为研 究对象实现朋友推荐中的朋友分组问题。这类方法计算复杂度较低,但是通常由于所给信 息不充分导致社交网络中朋友分组不准确。

【发明内容】

[0006] 本发明针对现有技术中存在的不足之处,提供一种基于单步添加团的社交网络的 朋友自动分组方法,以期能快速实现社交网络中朋友圈自动分组,提高分组效率和准确性, 从而可以通过准确的朋友分组,为用户推荐更可靠地朋友,减少用户在搜索志同道合朋友 时产生的不必要麻烦。
[0007] 本发明为解决技术问题采用如下技术方案:
[0008] 本发明一种基于单步添加团的社交网络的朋友自动分组方法的特点是按如下步 骤进行:
[0009] 步骤一、定义所述社交网络表征为二元组{V,E},V= {vi,V2r",Vi,…,vn}表示所 述社交网络中所有用户的集合,Vl表示第i个用户;n为用户的总数;E={ eij|i = l,2,…,n;j =1,2,…,n}表示任意两个用户之间的联系的集合;ei请示第i个用户Vl与第j个用户^之 间的联系;若e^ = l表示第i个用户Vl与第j个用户^之间有边相连,且第i个用户Vl与第j个 用户~互为称为邻居用户;若叫=〇,表示第i个用户 Vl与第j个用户~之间无边相连,即不存 在联系;
[0010] 步骤二、采用基于单步添加团的重叠网络社团检测算法将所述社交网络G划分成k 个分组集合,记为C={Ci,C2,~,Cx,-_,Cx} ;Ca表示第X个分组;x=l,2,-_,X;从而实现社交 网络的朋友自动分组。
[0011] 本发明所述的基于单步添加团的社交网络的朋友自动分组方法的特点也在于,
[0012] 所述步骤二中的基于单步添加团的重叠网络社团检测算法是按如下步骤进行:
[0013] 步骤0、初始化x=l;以所述社交网络的所有用户的集合V作为第x个预备组的候选 用户集合,记为V(x);定义迭代变量t;定义迭代变量r;
[0014] 步骤1、初始化t = l;
[0015] 步骤2、从所述第x个预备组的候选用户V(x)中随机选取第t次迭代的用户v(x)(t);
[0016] 步骤3、利用式(1)计算第t次迭代的用户v(x)(t)的聚类系数G(x)(t):
[0018] 式(1)中,表示第x个预备组中第t次迭代的用户v(x)(t)的邻居用户的数量, %WW表示第t次迭代的用户v (x)(t)的所有个邻居用户间的有边相连的边数;
[0019] 步骤4、利用式(1)计算第x个预备组中第t次迭代的用户v(x)(t)的气._个邻居用户 的聚类系数,并分别与算第t次迭代的用户v (x)(t)的聚类系数G(x)(t)比较,若能找到具有最大 聚类系数且最大聚类系数大于G (x)(t)的邻居用户,则将所找到的邻居用户作为第x个预备组 中第t+1次迭代的用户v(x)(t+1);并执行步骤5;否则,保留所述第t次迭代的用户v (x)(t)作为第 x个预备组中的核心用户;
[0020] 步骤5、将t+1赋值给t;并重复执行步骤3;
[0021] 步骤6、初始化r = l;
[0022] 步骤7、找到第x个预备组中第t次迭代的核心用户v(x)(t)所连接的一个k团;所述核 心用户v (x)(t)所连接的k团中的所有用户均为邻居用户;以所述核心用户v(x)(t)所连接的k团 作为第x个预备组中第r次迭代的社团C (x)W;k>3;
[0023] 步骤8、根据式⑵计算第x个预备组中第r次迭代的社团C(x)(1^社团适应度值F(X)W:
[0025]式(2)中,a是可调节的参数; <,丨#、分别表示第r次迭代初始社团(^)(1:)的 内部度数和外部度数,内部度数为第r次迭代的社团C(x)w中所有用户间有边相连的 边数的2倍;外部度数为第r次迭代的社团C (x)w*所有用户与外部用户有边相连的边 数;
[0026]步骤9、找到第r次迭代的社团C(X)W中所有用户的邻居用户并进行并集处理,从而 构成第x个预备组中第r次迭代的社团C(x)w的邻居用户;
[0027] 步骤10、判断所述第x个预备组中第r次迭代的社团(^)(1:)的邻居用户各自是否存 在自身所连接的一个k团;若存在,则将邻居用户各自的所连接的一个k团分别加入到第r次 迭代的社团C (X)W*计算相应的社团适应度值;若不存在,则直接将相应的邻居用户加入到 第r次迭代的社团C(x)w*计算相应的社团适应度值;
[0028] 步骤11、若能找到使得所述社团适应度值F(X)W增值最大的邻居用户或邻居用户 所连接的k团;则将增值最大的邻居用户或邻居用户所连接的k团加入到第r次迭代的初始 社团C(x)w*,并作为第r+1次迭代的社团C(x)fr+1),执行步骤12;否则,保所述第X个预备组中 第r次迭代的初始社团C(x)w作为第x个分组;并执行步骤13;
[0029]步骤12、将r+1赋值给r;并重复执行步骤8;
[0030]步骤13、从所述第x个预备组的候选用户V(x)中去除所述第x个分组,从而获得第x+ 1个预备组的候选用户V(x+1);
[0031] 步骤14、将x+1赋值给x;并返回步骤1执行,从而得到X个分组,进而实现社交网络 的朋友自动分组。
[0032]与已有技术相比,本发明有益效果体现在:
[0033] 1、本发明根据局部社团扩充的思想,在对社交网络进行朋友自动分组时采用基于 单步添加团的社团扩充方式,以完成社交网络的自动分组。本发明在社团扩充过程只需要 获取社交网络中用户的局部信息就可以完成用户自动分组,无需获知整个社交网络的全局 信息和节点信息,这样可以快速的检测出社交网络的各个朋友分组,获得社交网络中较为 准确的朋友分组结果;解决了基于全局结构特征方法高计算成本的问题,也解决了某些基 于局部结构特征方法中网络划分不准确的问题。
[0034] 2、在进行朋友自动分组时首先要选择初始朋友分组,本发明的初始朋友分组是通 过核心节点搜索得到的。核心节点作为一个分组或者图中最特殊的节点,是分组的中心节 点并对分组内用户的连通起着关键作用,这样可以在一定程度上避免由初始分组选择不准 确带来的随机性,从而提高了社交网络朋友自动分组的准确性。
[0035] 3、目前存在的基于局部扩充的方法在朋友分组过程中每次只加入一个用户节点, 没有充分考虑用户节点的局部信息会导致分组不准确。本发明引用团的概念:团是一个完 全连通子图,它们在分组划分过程中极有可能同属于一个分组,所以如果一个用户节点属 于某一个分组,那么该用户节点所在的团也更有可能成为这个分组的一部分。本发明在扩 充时每次添加一个团,不仅考虑了被添加用户点与已有分组的连接强度,同时较好考虑了 被添加用户内部的连接情况,更可以准确的发现属于同时多个分组的用户。
【附图说明】
[0036]图1为本发明算法流程图;
[0037] 图2为本发明举例的一个简单网络示意图。
【具体实施方式】
[0038] 在实施例中,一种基于单步添加团的社交网络朋友自动分组方法将社交网络中的 朋友自动分组问题转化为复杂网络社团检测问题,通过利用基于单步添加团的复杂网络社 团检测算法来解决社交网络中朋友自动分组问题,从而得到社交网络中的朋友分组;具体 地说是按如下步骤进行:
[0039] 步骤一、定义所述社交网络表征为二元组{V,E},V= {vi,V2,~,vi,…,vn}表示所 述社交网络中所有用户的集合,Vl表示第i个用户;n为用户的总数;E={eij|i = l,2,…,n;j =1,2,…,n}表示任意两个用户之间的联系的集合;ei谦示第i个用户Vl与第j个用户^之 间的联系;若e^ = l表示第i个用户Vl与第j个用户^之间有边相连,且第i个用户Vl与第j个 用户W互为称为邻居用户;若叫=〇,表示第i个用户 Vl与第j个用户W之间无边相连,即不存 在联系;如图2所示为一个包含11个用户的简单社交网络结构图,其中每个节点代表社交网 络中的用户,每条边代表用户之间存在联系;
[0040] 步骤二、采用基于单步添加团的重叠网络社团检测算法将所述社交网络G划分成k 个分组集合,记为C={Ci,C2,~,Cx,-_,Cx} ;Ca表示第X个分组;x=l,2,-_,X;从而实现社交 网络的朋友自动分组。
[0041] 具体的说,如图1所示,基于单步添加团的重叠网络社团检测算法是按如下步骤进 行:
[0042] 步骤0、初始化x=l;以所述社交网络的所有用户的集合V作为第x个预备组的候选 用户集合,记为V(x);定义迭代变量t;定义迭代变量r;
[0043] 步骤1、初始化t = l;
[0044] 步骤2、从所述第x个预备组的候选用户V(x)中随机选取第t次迭代的用户v(x)(t);
[0045] 步骤3、利用式(1)计算第t次迭代的用户v(x)(t)的聚类系数G(x)(t):
[0047] 式(1)中,表示第x个预备组中第t次迭代的用户v(x)(t)的邻居用户的数量, 表示第t次迭代的用户v (x) (t)的所有~心个邻居用户间的有边相连的边数;
[0048] 步骤4、利用式(1)计算第x个预备组中第t次迭代的用户v(x)(t)的^ ^个邻居用户 的聚类系数,并分别与算第t次迭代的用户v(x)(t)的聚类系数G(x)(t)比较,若能找到具有最大 聚类系数且最大聚类系数大于G (x)(t)的邻居用户,则将所找到的邻居用户作为第x个预备组 中第t+1次迭代的用户v(x)(t+1);并执行步骤5;否则,保留所述第t次迭代的用户v (x)(t)作为第 x个预备组中的核心用户;
[0049]步骤5、将t+1赋值给t;并重复执行步骤3;
[0050] 步骤6、初始化r = l;
[0051]步骤7、找到第x个预备组中第t次迭代的核心用户v(x)(t)所连接的一个k团;所述核 心用户v(x)(t)所连接的k团中的所有用户均为邻居用户;以所述核心用户v(x)(t)所连接的k团 作为第x个预备组中第r次迭代的社团C (x)W;k>3;例如在图2中,假设初始预备组由用户节 点{1,2,3,4,5}构成,此时,设置k = 3;
[0052]步骤8、根据式(2)计算第x个预备组中第r次迭代的社团(^)(1:)的社团适应度值F(x Hr) |
[0054] 式(2)中,a是可调节的参数;1分别表示第r次迭代初始社团(^)(1^的 内部度数和外部度数,内部度数为第r次迭代的社团C (X)W中所有用户间有边相连的 边数的2倍;外部度数尤为第r次迭代的社团C(x)w*所有用户与外部用户有边相连的边 数,根据公式(2)计算出第1个预备分组{1,2,3,4,5}的适应度值为0.824;
[0055] 步骤9、找到第r次迭代的社团C(X)W中所有用户的邻居用户并进行并集处理,从而 构成第x个预备组中第r次迭代的社团C (x)w的邻居用户,这样可知第1个预备分组{1,2,3, 4,5}的邻居用户为{6,7,8};
[0056]步骤10、判断所述第x个预备组中第r次迭代的社团(^)(1:)的邻居用户各自是否存 在自身所连接的一个k团;若存在,则将邻居用户各自的所连接的一个k团分别加入到第r次 迭代的社团C(x)w*计算相应的社团适应度值;若不存在,则直接将相应的邻居用户加入到 第r次迭代的社团C (x)w*计算相应的社团适应度值;则本实施例中,第1个预备分组{1,2, 3,4,5}的邻居用户{6,7,8}所连接的 k 团分别为{(6,7,8),(6,7,8),(8,9,11)};
[0057]步骤11、若能找到使得所述社团适应度值F(X)W增值最大的邻居用户或邻居用户 所连接的k团;则将增值最大的邻居用户或邻居用户所连接的k团加入到第r次迭代的初始 社团中,并作为第r+1次迭代的社团cWfrM,执行步骤 12;否则,保所述第x个预备组中 第r次迭代的初始社团C(x)w作为第x个分组;并执行步骤13;本实施例中,通过计算可知6号 用户所在的k团加入第1个预备组{1,2,3,4,5}得到的分组{1,2,3,4,5,6,7,8}的适应度值 为0.897,使得分组的适应度值增加最大,因此选择6号用户连接的k团加入到预备分组中得 到新的分组{1,2,3,4,5,6,7,8},如果再添加新的用户或用户所连接的1^团不会使分组的适 应度值增加,因此得到这个社交网络的第1个分组为{1,2,3,4,5,6,7,8};
[0058]步骤12、将r+1赋值给r;并重复执行步骤8;
[0059]步骤13、从所述第x个预备组的候选用户V(x)中去除所述第x个分组,从而获得第x+ 1个预备组的候选用户V(x+1),此时,图2示例中候选用户为{9,10,11,12};
[0060] 步骤14、将x+1赋值给x;并返回步骤1执行,从而得到X个分组,进而实现社交网络 的朋友自动分组,在图2展示的示例中,应用本发明得到的朋友自动分组为{1,2,3,4,5,6, 7,8}和{9,10,11,12}。
【主权项】
1. 一种基于单步添加团的社交网络的朋友自动分组方法,其特征是按如下步骤进行: 步骤一、定义所述社交网络表征为二元组{ V,E},V= { VI,V2,…,Vi,…,Vn}表示所述社交 网络中所有用户的集合,Vl表示第i个用户;11为用户的总数;E={eij|i = l,2,~,n;j = l, 2,…,n}表示任意两个用户之间的联系的集合;eij表示第i个用户Vl与第j个用户^之间的 联系;若e^ = l表示第i个用户Vl与第j个用户W之间有边相连,且第i个用户Vl与第j个用户 互为称为邻居用户;若明=0,表示第i个用户 Vl与第j个用户W之间无边相连,即不存在联 系; 步骤二、采用基于单步添加团的重叠网络社团检测算法将所述社交网络G划分成k个分 组集合,记为…,Cx,…,Cx};Ca表示第X个分组;x=l,2,…,X;从而实现社交网络 的朋友自动分组。2. 根据权利要求1所述的基于单步添加团的社交网络的朋友自动分组方法,其特征在 于:所述步骤二中的基于单步添加团的重叠网络社团检测算法是按如下步骤进行: 步骤〇、初始化x= 1;以所述社交网络的所有用户的集合V作为第x个预备组的候选用户 集合,记为V(x);定义迭代变量t;定义迭代变量r; 步骤1、初始化t = l; 步骤2、从所述第x个预备组的候选用户V(x)中随机选取第t次迭代的用户v(x)(t); 步骤3、利用式(1)计算第t次迭代的用户v(x)(t)的聚类系数G(x)(t):式(1)中,气_表示第x个预备组中第t次迭代的用户v(x)(t)的邻居用户的数量,表 示第t次迭代的用户v(x)(t)的所有个邻居用户间的有边相连的边数; 步骤4、利用式(1)计算第x个预备组中第t次迭代的用户v(x)(t)的个邻居用户的聚类 系数,并分别与算第t次迭代的用户v(x)(t)的聚类系数G(x)(t)比较,若能找到具有最大聚类系 数且最大聚类系数大于G (x)(t)的邻居用户,则将所找到的邻居用户作为第x个预备组中第t+ 1次迭代的用户v(x)(t+1);并执行步骤5;否则,保留所述第t次迭代的用户v (x)(t)作为第x个预 备组中的核心用户; 步骤5、将t+1赋值给t;并重复执行步骤3; 步骤6、初始化r=l; 步骤7、找到第x个预备组中第t次迭代的核心用户v(x)(t)所连接的一个k团;所述核心用 户v(x)(t)所连接的k团中的所有用户均为邻居用户;以所述核心用户v(x)(t)所连接的k团作为 第x个预备组中第r次迭代的社团C (x)w;k>3; 步骤8、根据式(2)计算第x个预备组中第r次迭代的社团社团适应度值F(x)w:式(2)中,a是可调节的参数;分别表示第r次迭代初始社团C(X)W的内部度 数和外部度数,内部度数CKM为第r次迭代的社团C(x)w中所有用户间有边相连的边数的2 倍;外部度数为第r次迭代的社团C (x)w中所有用户与外部用户有边相连的边数; 步骤9、找到第r次迭代的社团C(x)w中所有用户的邻居用户并进行并集处理,从而构成 第x个预备组中第r次迭代的社团C(x)w的邻居用户; 步骤10、判断所述第x个预备组中第r次迭代的社团C(x)w的邻居用户各自是否存在自 身所连接的一个k团;若存在,则将邻居用户各自的所连接的一个k团分别加入到第r次迭代 的社团C(x)w*计算相应的社团适应度值;若不存在,则直接将相应的邻居用户加入到第r 次迭代的社团C(x)w*计算相应的社团适应度值; 步骤11、若能找到使得所述社团适应度值F(x)(1:4|值最大的邻居用户或邻居用户所连 接的k团;则将增值最大的邻居用户或邻居用户所连接的k团加入到第r次迭代的初始社团C (X)W中,并作为第r+1次迭代的社团C(x)(rf),执行步骤12;否则,保所述第x个预备组中第r次 迭代的初始社团C (x)w作为第x个分组;并执行步骤13; 步骤12、将r+1赋值给r;并重复执行步骤8; 步骤13、从所述第x个预备组的候选用户V(x)中去除所述第x个分组,从而获得第x+1个 预备组的候选用户V(x+1); 步骤14、将x+1赋值给x;并返回步骤1执行,从而得到X个分组,进而实现社交网络的朋 友自动分组。
【文档编号】G06F17/30GK106055568SQ201610338452
【公开日】2016年10月26日
【申请日】2016年5月18日
【发明人】张兴义, 苏延森, 郑雯, 谢莹
【申请人】安徽大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1