基于派系过滤和标签传播的移动通信用户群组构造方法_3

文档序号:9828581阅读:来源:国知局
同 样阻碍了多标签的传播,使传播的标签数量急剧减少,不利于重叠节点的发现。
[0090] 而本实施方式的步骤5中利用改进的SLPA算法进行标签传播,具体包括步骤5.1至 步骤5.4:
[0091] 步骤5.1:利用Speaker策略发布用户的标签;
[0092] Speaker策略指的是节点基于自己历史标签集合对其邻接节点(即Listener)发布 标签的策略。设定一个比例阈值Tspemer,每次标签传播(标签更新)的迭代过程开始时从节 点历史标签集合中选取标签出现比例大于比例阈值的TsPEAKER的标签对外发布。如果没有任 何一个标签的出现比例满足阈值条件,则选择出现比例最大的标签作为该节点所对外发布 的标签,如果同时出现多个比例最大的标签则随机选择其中一个标签对外发布。
[0093]步骤5.2 :利用Listener策略接收用户的标签;
[0094] Listener策略指的是节点从其所有邻接节点(即Speaker)所发布的标签中选择一 个标签作为本轮迭代节点的更新标签并将其加入到自己的历史标签集合中的策略。定义节 点i所对应标签1的强度Siabe3I(i,1):
[0095]
[0096] 其中,NS(i,l)表示与节点i邻接并且其所发布的标签中含有标签1的节点集合,Wij 表示节点i与节点j连边的权值。
[0097] 迭代过程中,节点计算其所接收到的每个标签的标签强度,选择拥有最大标签强 度的标签作为该节点本轮迭代的标签,如果出现多个标签强度最大的标签,则随机从中选 择一个标签作为该节点本轮迭代更新的标签。
[0098] 步骤5.3:利用同步标签传播策略进行标签传播,即标签更新;
[0099] 同步标签传播策略易于多标签的传播,为了能够构造出更精确更符合实际的群 组,本发明采用同步标签传播策略。
[0100]步骤5.4:判断是否停止迭代,若是,则执行步骤5.5;
[01 01 ]设置两个闕值Tconvergence_rate和Tconvergence_times ; 在每次迭代过程中,统计收敛节点 数Nide3ntiC^i,即节点在新一轮迭代中所获的标签与其历史标签集合中出现次数最多标签相 同的节点数量;如果收敛节点数Nidentiul与网络中的总节点数NtcitaI的比值不小于阈值 Tccinvergenc^rate的情况连续超过阈值Tccinvergenc^ times次出现,则认为本算法已经收敛,迭代停 止。
[0102]本实施方式的步骤5还包括下面的步骤5.5:
[0103]步骤5.5:基于节点的标签将节点划分至对应的群组,完成社交关系群组的构造; [0104]迭代停止意味着网络中的绝大多数节点的标签已经收敛,此时可以基于节点的标 签将节点划分至对应的群组。如前所述,每个节点都存储了该节点在每一轮迭代中所接收 并选择的标签,为了能够发现重叠群组,设置一个比例阈值T pcistprC^sslng,针对每一个节点的 历史标签集合,选择其标签历史集合中标签出现次数占总次数比例不小于阈值T pcistprcic^sing 的标签作为标识该节点群组划分的标签。最终,拥有相同标签的节点构成一个群组。
[0105] 具体实验验证过程如下:
[0106]本实施方式将本发明的基于派系过滤和标签传播的移动通信用户群组构造方法 在Hadoop平台下进行了基于MapReduce的并行实现,并分别利用LFR基准网络、中国移动真 实通话记录数据集分别对在Hadoop平台下基于MapReduce并行实现的本发明的基于派系过 滤和标签传播的社交关系群组构造方法进行有效性评价。
[0107] (1)本实施方式将本发明的基于派系过滤和标签传播的移动通信用户群组构造方 法在Hadoop平台下基于MapReduce并行实现;
[0108] 一个MapReduce作业处理数据集的过程主要包括Map、Combine、Part it ion、Reduce 阶段。
[0109] 本发明方法中为每个节点分配标签后便开始进入迭代的标签传播过程。标签初始 化时,各个节点初始化为何种标签只取决于种子群组,各个节点间相互独立,因此可以以每 个节点为中心并行完成节点标签初始化过程。
[0110] 由于本发明方法中采用的是同步标签传播策略,因此节点新更新的标签完全取决 于其上一轮邻接节点所拥有的历史标签集合,与其本轮邻接节点所更新的标签毫无关系, 因此在每一轮迭代过程中节点间的标签传播是相互独立的,可以将标签传播的过程并行 化。在某一轮迭代中,针对每一个节点,如果其要完成标签传播过程,该节点需知晓其每个 邻接节点的标签集合以及该节点的邻接表,因此在进行标签传播前先利用MapReduce的按 键排序分组特性将节点标签更新所需数据信息划分在一起,随后即可并行进行标签传播。
[0111] 本实施方式基于种子群组初始化节点标签的伪代码如表1所示,该初始化只需一 个MapReduce过程。Map阶段的任务为分发节点标签与种子群组标签,如果所输入的为种子 群组,则以种子群组内各个节点的标签分别作为键,种子群组标签作为值进行输出,如果所 输入的为节点集合,则以节点标识作为键输出。Reduce阶段的任务是初始化节点标签,因为 Map阶段的输出均以节点的标识作为键,因此相同节点标识的Map输出会划分至同一个 Reduce任务节点的同一组中,鉴于此在Reduce任务节点中,如果对于每个输入键,其对应的 值集合中包含种子群组标识则说明该节点属于该种子群组,因此将其标签初始化为种子群 组标识,当然如果值集合中包含多个种子群组标识,则将其标签初始化为多个种子群组标 识。相反,如果值集合中不包含种子群组标识,则说明当前节点不属于任何种子群组,则按 照步骤4将其标签初始化为唯一标识,即该节点自身的节点标识。
[0112] 表1基于种子群组初始化节点标签的伪代码

[0115]表2所示的伪代码为基于MapReduce并行化设计的本发明方法中一次标签传播迭 代流程,该流程共包含两个MapReduce过程,其中第二个MapReduce使用默认的Map设计。第 一个MapReduce过程的作用为分发节点标签与邻接信息,具体而言第一 Map阶段将节点标签 信息以节点标识作为键,标签信息作为值输出,将邻接信息以邻接表中的每个邻接节点分 别作为键,该邻接表所对应的节点标识作为值输出,此外由于在标签传播部分仍需邻接表 信息,因此此处同时将邻接表信息输出。Reducel阶段将第一Map阶段所输出的信息进行汇 总,由于第一Map阶段的输出均是以节点标识为键,因此在Reducel阶段可以将节点以及其 邻接节点与其对应的历史标签集合统一起来,并以待更新节点标签的节点(Listener节点) 标识作为键,其节点本身及其邻接节点(Speaker节点)的各历史标签集合分别作为值进行 输出。基于第一个MapReduce过程,每个节点的邻接信息以及其邻接点对应的标签集合均会 划分至同一个Reduce任务节点的同一组中,从而第二个MapReduce过程即可按照设计完成 每个节点的标签更新并将其存储在自己的标签集合中。在更新各节点标签的同时,需同时 判定当前节点是否已经进入收敛状态,统计进入收敛状态的节点数量,为迭代停止判定提 供依据。
[0116]表2基于MapReduce并行化设计的本发明方法中一次标签传播迭代流程 [0117] 输入:(1)节点上一轮迭代结束后的历史标签集合,(2)邻接表 输出:节点本轮迭代后的新标签集合 BEGIN Mapl: I: IF input is node label /*输入为节点的标签信息*/ 2: Mbelnodeid, _ddabel> /*0、节貞标识为敏,.其标签信 息作为值输出V 3: END IF 4: IF input is ac$aeency list /*输入为邻接表信息V 5: ΕΜΓΓ <udjacctK:y nodeici, adjacency list> 严以 中个令叫姿 节点标识作为键,邻接表作为值输出V 6: FOR each adjacency node in adjacency list /* 针对邻接表中每个 邻接节点*/ 7: EMIT <adjacency node id, adjacency list nodeid> 严以邻liikk 中每个邻接节点标识作为键,该邻接表所对应的节点标识作为值输出*/ 8; END FOR 9: END IF Reducel 10: FOReach input key adjacency nodeid emitted by Mapl 11: :IF value in input value set is: Woifefahe/ /*z卖入翰入澄蘖合中游元素 为节点标签信息*/ 12; Store nodelabel into memory /*将节点标签信息存储,为后 续辅!出使用~ 13: EMIT <key, nodelabet> /*以输入键作为键,节点标签信息 作为值输出*/ 14: E 卿 IF 15: IF value in input value set is adjacency list /*值集合中的元素为 邻接表信息 16: EMIT <adjacency list tiodeid, adjacency Ust> I* 该邻接表所
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1