MapReduce平台上基于本地密度的聚类方法_2

文档序号:9261416阅读:来源:国知局
6] 附图中,
[0037] 图1为本发明MapRe化ce平台上基于本地密度的聚类方法一较佳实施例的流程 图。
【具体实施方式】
[003引下面结合附图,通过对本发明的【具体实施方式】详细描述,将使本发明的技术方案 及其有益效果显而易见。
[0039] 参见图1,其为本发明MapRe化ce平台上基于本地密度的聚类方法一较佳实施例 的流程图。该较佳实施例主要包括:
[0040] 步骤10、对待聚类的数据进行预处理,构造W节点表征数据的连通图,并W节点之 间的边的长度表征数据之间的相似度,节点之间的边越短,节点所表征的数据之间相似度 越高。步骤10中首先按照预先设定的规则计算待聚类数据之间的相似度,然后构造连通 图;W中国专利申请CN201410814330.4 "虚拟人建立方法及装置"为例,其中待聚类的数据 为账号,根据账号之间协同出现的情况来计算账号之间的相似度,进而构建连通图。
[0041] 步骤20、W连通图中的节点和边的信息作为输入数据,通过Map作业生成包括节 点W及邻边信息的键值对,通过Re化ce作业生成包括节点、节点的本地密度化0W及节点 所有邻边信息的输出,化0定义为连接本节点的长度低于预定义值化的邻边的数目。
[0042] 步骤20具体可W包括:
[0043] 步骤21、连通图中的节点和边的信息作为输入数据经由Map作业生成键值对,其 中,键包括标识节点的字段,值包括标识邻居节点的字段和标识该节点和邻居节点之间邻 边的边长的字段。邻边信息包括对应的邻居节点和邻边边长。作为优化,步骤21中,键还 可W包括标识该节点和邻居节点之间邻边的边长的字段。
[0044] 应用时,可W将输入数据的每一行对应一组节点之间的边信息。故为方便起见,可 W将输入数据设定为依次由小标识值节点a、大标识值节点b和边长len(a,b)组成的S元 组:[a,b,len(a,b)]。
[0045] 因为对于每个节点都需要计算它们的化o值,对连通图中的一条边信息,Map作 业将会有两次<Ifey,Value〉输出。每个Ifey值或Value值均依次由left和ri曲t两 个字段组成。具体来说,第一次的K巧值可W是K1 = <a,len(a,b)〉(该里,left= a,ri曲t=len(a,b)),Value值可W是VI= <b,len(a,b)〉,第二次的Key值可W是K2 = <b,len(a,b)〉,Value值可W是V2 = <a,len(a,b)〉。
[0046] 步骤22、对键值对按照键所包括的节点进行分区,键包括相同节点的键值对分配 至同一分区。在此实施例中具体来说,各记录所将归属的分区(Partition)的序列将只与 Map输出Key值的第一个字段有关。比如说,分区序列可W为Key的left字段的哈希值与 已知总分区数的余数,W伪代码表示即:
[0047]K.left.hashCode0 %总分区数。
[0048] 该实际上保证了相同节点left字段的节点的边信息,都会分配到同一个分区中 进行存储。
[0049] 步骤23、对于同一分区内的键值对按照键所包括的节点进行分组,键包括相同节 点的键值对分配至同一组;
[0050] 分组佑roupCompare)的结果将只与相比较的K巧值它们的第一个字段的比较结 果有关。举例来说,对于两个Key,kl和k2,相应的比较(compare)结果为;
[0051]kl.left,compare化2.left)。
[0化2] 该实际上保证了,每一个节点的所有边的信息(Value值,邻居点和边长),都会在 同一次Re化ce过程中调用。
[0化3] 步骤24、对于属于同一组的键值对按照键所包括的邻边的边长进行排序。步 骤24中的排序可W为升序排序。步骤24作为一个可选的优化措施,可W称为组内排序 (So;rtComparato;r,SC),可设定为按left和ri曲t次序两个字段先后进行比较的结果。W 伪代码表示即:
[0054]
[0 化 5]
[0化6] 由于Key的ri曲t值均表示边长,故该里实际上保证在Re化ce过程中的迭代式 时,边信息是按照边长的长短的升序顺序返回的。注;实际上,步骤21中Key值设定为由节 点标识和边长两个字段构成,就是为了进行该优化;若无该优化的考虑,则步骤21中Key值 仅有节点标识组成即可。
[0化7] 步骤25、经由Re化ce作业,通过对属于同一组的键值对的值的迭代来遍历同一节 点的所有的邻边,生成包括节点、节点的本地密度化0W及节点所有邻边信息的输出。
[0化引步骤25中Re化ce作业的输出为键值对,其中,键包括标识节点的字段,值包括标 识节点的字段,标识节点化0的字段W及标识节点所有邻边信息的字段。
[0化9] 经过上述步骤,在每一次Re化ce调用时,均可通过对Values的迭代来遍历同一节 点的所有的边。每次Re化ce过程调用时,都会输出如下S部分信息:当前节点n的标识,n的化0值,按边长进行排序后的n的所有邻边信息。
[0060] 当使用上述SC进行了优化时,化0值的计数可在迭代到的边长大于预定义值化时 便结束。同时,由于邻边已经借助SC进行了升序排序,邻边信息亦可按迭代时的先后拼接 即可。若未进行该优化,则化0值的计数需迭代到了最后一条边时才能结束,而邻边信息需 要排序后再作为Value值的一部分。
[0061] 作为举例,输出的格式可W为键值对:
[0062] [K=n,V= <n,化0 (n),nl:len(n,nl),n2:len<n,n2>…nN:len<n,nN〉>]。
[0063] 该较佳实施例通过W上所述的第一个MapRe化ce任务,主要实现计算化o值,并对 邻居节点按距离升序排序。接下来的第二个MapRe化ce任务,主要实现计算Delta值,并标 识类中屯、点。
[0064] 步骤30、对于步骤20中Re化ce作业的输出,通过Map作业生成包括节点、节点 化0、邻居节点化0W及邻边信息的键值对,对每个节点,通过Re化ce作业遍历节点化0、所 有邻居节点化0W及所有邻边信息,得出每个节点的离散度Delta,再结合预定规则来进行 类标识。
[00化]在此较佳实施例中预定规则为;节点的化〇和Delta分别高于作为输入参数的阔 值R_T和阔值D_T,则该节点为一个类的中心该节点的类标识取其自身类标识;否则,节 点的类标识取距离其最近且化0更高的邻居节点的类标识;孤立节点的类标识为自身类标 识。该预定规则与中国专利申请CN201410814330.4 "虚拟人建立方法及装置"中所采用的 规则类似一刚性的要求化0值和Delta值高于某个分别对应的阔值。
[0066] 该只是节点是否可标识为类中屯、的方法之一。从根本来说,节点是否可作为类中 屯、节点是根据节点的化0值和Delta值来进行的。其实,还存在其他利用包括化0值和Delta值在内的因素来进行判断的各种方法。本发明MapRe化ce平台上基于本地密度的聚 类方法在类中屯、点的确认方式上,也可w松懈,能更快的完成聚类操作。例如,预定规则可W包括;预先划分化0值可能取值区间W及对应的Delta值可能取值区间,如果节点的化0 值属于Rho值可能取值区间且节点的Delta值属于对应的Delta值可能取值区间,则该节 点为一个类的中屯、,该节点的类标识取其自身类标识;否则,节点的类标识取距离其最近且 化0更高的邻居节点的类标识;孤立节点的类标识为自身类标识。比如;如果节点的化0值 在[10, 20]范围,且Delta值也在[0. 9*10, 0. 8*20](即Delta值也在随化0值变动的某个 范围内,Delta值取值范围与化0值取值范围相对应,该节点也可标识为类中屯、)。
[0067] 求解某个节点的Delta值,需要取得其邻边对应的化0值。在步骤20中Re化ce作 业的输出下,可W借助通用的MapRe化ce上进行笛卡尔积(Cartesian Pro化ct)的方式,来 实现对邻居节点的化0值的遍历一通过自定义InputFormat来实现全连接。该里的遍历, 实际上是为了后续求出Delta值。相关的案例可参见[〈〈MapReduce Desi即Patterns〉〉, 0, Reilly, Dec. 2012, p: 128-13引所述。
[0068] 步骤30具体可W包括:
[0069] 步骤31、对于步骤20中Re化ce作
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1