一种基于社会网络结构的并行推荐方法_3

文档序号:9750919阅读:来源:国知局
进行累 加以得到最终的S imRank值。
[0109] Delta-SimRank算法减少了MapReduce过程中数据传输的数量,从而提高了并行计 算的效率。改进的Delta-SimRank算法的具体迭代过程如下:
[0110] 输入:有向图G=<V,E>,初始化Δ*
[0111] l:Map Function((p,q), Δt(p,q))
[0112] 2: if p = q or Δ t(p,q) < ε
[0113] 3:return
[0114] 4: find p and q's out neighbors 0(p),0(q)respectively
[0115] 5: for each i e〇(p), i e〇(q) £
[0116] 6:output(i, j), | I(i)\\J(j)\A ^P,C^
[0117] 7: Reduce Function(key = (i,j),value = vs[])
[0118] 8: if(i = j)
[0119] 9:output At+1(i,j)=0
[0120] l〇:else
[0121] 11 : output Δ t+1 = sum(vs)
[0122] 输出:更新后的么*+1。
[0123] 本实例中,基于社会网络结构的并行推荐方法包括以下步骤:
[0124] 1)根据活跃节点选择策略,选取k个活跃节点作为中心节点;
[0125] 2)根据社区划分策略,以k个中心节点为初始聚类中心,对剩余的所有节点进行聚 类,将所有节点划分为以k个中心节点为中心的k个社区;
[0126] 3)根据上一步得到的k个社区,使用改进的Delta-SimRank并行算法分别计算每个 社区内所有用户间的相似度;
[0127] 4)计算与某用户最为相似的用户列表;
[0128] 5)重复(4)可以得到任意用户的相似用户列表;
[0129] 6)对于目标用户,分析其相似用户列表中用户的兴趣喜好对目标用户进行个性化 推荐。
[0130] 个性化推荐流程如图1所示。整个方法执行过程如下:
[0131] 输入:待研究的数据集
[0132] 1:数据集预处理,将数据集表示成图G=<V,E>,节点数n,边数e;
[0133] 2:将节点按度大到小排序得到队列Q={m,n2, . . .,nn},di,d2, . . .,dn为应的度;
[0134] 3:for(ru:Q) {
[0135] 4: Π? ->C;
[0136] 5: if(di,d2, · · ·,dn> = e or i> = n/10)break;}//得到中心节点集合 C,k个中节 点}
[0137] 6:for(ru:C) {
[0138] 7: BFSMapReduce(G,nk);}
[0139] 8:for(nj:V){//每个节点添加到最近的中心节点集合
[0140] 9: npCi;}//得到k个社区&,&,…,Ck
[0141] 10:for(Ci:Ck){
[0142] 11: Ci转化为Gi = <Vi,Ei>4Z^M^SimRanMts°;
[0143] 12: Delta-SimRankMapReduce(Gi,s°);
[0144] 13: update sM//社区内部用户间的相似度
[0145] 14:for(ru£V) {
[0146] 15: getSimilarityList(m);//得到任意节点的相似节点列表}
[0147] 输出:任意用户的相似用户列表。
[0148] 本发明以对新浪微博数据为例分析,通过用户的主题推荐对本发明方法进行进一 步说明。
[0149] 考虑到相似用户列表中每个用户关注的主题是不一样的,本方法分析每个主题在 所有相似用户间出现的次数与所有主题出现总次数的比率。
[0150] 如果用U表示相似用户集合,S表示相似用户集合关注的主题集合,SU表示用户m 关注主题那么主题j出现的次数百分比可以表示为
[0151]
i^U
[0152] 例如用户列表中有两个用户111(81,82,83),112(81,83,84),其中81表示用户关注的主 题,主题 81和83分别出现两次,82和84分别出现一次,而所有主题总共出现了 6次,那么主题S1 和S3的出现次数百分比相等为Α =/,? = 33.3%,/? =丄=16.7%。然后通过计算每 6 6 个主题出现次数与总次数的百分比来衡量该主题是否应该推荐给目标用户。
[0153] 设定主题阈值ε,本发明将仍> =£的主题推荐给目标用户,通过尝试不同的阈值ε 来达到最优的推荐效果。阈值的显式含义就是反映了推荐主题的数目。
【主权项】
1. 一种基于社会网络结构的并行推荐方法,其特征在于:所述推荐方法包括如下步骤: 1)根据活跃节点选择策略,选取k个活跃节点作为中屯、节点; 2似k个中屯、节点为初始聚类中屯、,对剩余的所有节点进行聚类,将所有节点划分为W k个中屯、节点为中屯、的k个社区; 3) 根据上一步得到的k个社区,使用SimRank算法分别计算每个社区内所有用户间的相 似度,过程如下: 3.1) 节点P和结点q的相似性通过所有P的入邻居节点和q的入邻居节点之间的相似性 的平均值来衡量,如果用s(p,q)表示节点P和结点q的相似性,那么SimRank的数学表达式写 成如下形式:其中C是一个0-1之间的常量,当./(尸)=0或者^y)=0时,s(p,q)=0 3.2) 假设第t次迭代的SimRank值为st(p,q),SimRank值初始化为: .V (/M) = J (2) [0 P叫 然后通过式(1)迭代更新,第t次迭代的SimRank值S*由t-1次迭代的SimRank值st-i通过 式(1)得到,最终的迭代结果st也将收敛于(1)式中SimRank值,即:3.3) 使用MapReduce并行框架进行处理,过程如下: 3.3.1) 预处理阶段 图的边(p,in:a,b,..」out: i,j,. . .),p表示图中的节点,in:后表示节点P的入邻居节 点,out:后表示节点P的出邻居节点; 在Map阶段,将输入的(p,q)转化为(P, out: q)和(q, in: P);在Reduce阶段,将具有相同 k巧值的记录进行整合,得到(p,in:a,b, . . . |out:i, j,...),整个预处理阶段后形成的结果 文件存放在分布式文件系统中,该文件描述了图的整个拓扑结构,用于后续SimRank计算阶 段使用; 3.3.2) SimRank迭代计算过程 每一次迭代都通过一个MapReduce任务完成,每次迭代的输入就是上次迭代的输出; 4) 计算与某用户最为相似的用户列表; 5) 重复4)得到任意用户的相似用户列表; 6) 对于目标用户,分析其相似用户列表中用户的兴趣喜好对目标用户进行个性化推 荐。2. 如权利要求1所述的一种基于社会网络结构的并行推荐方法,其特征在于:所述步骤 3.3.2)中,在SimRank迭代计算过程中,Map的输入是上次迭代计算的SimRank,格式为< (P, q),s(p,q)>,由于节点与它本身的相似性为1,所W初始的记录为<p,p, 1>,其余节点间 的相似性为〇;Map阶段中,寻找节点p,q各自的所有出邻居节点;Reduce阶段,对key值相同 记录的相似性分数汇总求和,并且更新所有节点对的SimRank值。3.如权利要求1或2所述的一种基于社会网络结构的并行推荐方法,其特征在于:所述 步骤3)中,对SimRank算法进行改写得到Delta-SimRank算法,利用A改写(1)式,得到;其中A t(p,q)表示第t次迭代相似性分数的增量;至此,就把计算SimRank问题转化为计 算SimRank增量的A,根据A就能得到最终的SimRank值: s"i(p,q) = st(p,q)+A "i(p,q) (5) Delta-SimRank算法将更新后的A值进行累加 W得到最终的SimRank值。
【专利摘要】一种基于社会网络结构的并行推荐方法,包括如下步骤:1)根据活跃节点选择策略,选取k个活跃节点作为中心节点;2)以k个中心节点为初始聚类中心,对剩余的所有节点进行聚类,将所有节点划分为以k个中心节点为中心的k个社区;3)根据上一步得到的k个社区,使用SimRank算法分别计算每个社区内所有用户间的相似度;4)计算与某用户最为相似的用户列表;5)重复4)得到任意用户的相似用户列表;6)对于目标用户,分析其相似用户列表中用户的兴趣喜好对目标用户进行个性化推荐。本发明提供一种有效性良好、在大数据集下具有较好的处理效率的基于社会网络结构的并行推荐方法。
【IPC分类】G06F17/30
【公开号】CN105512242
【申请号】CN201510860628
【发明人】江颉, 温瑞龙, 陈铁明, 王小号, 陈波
【申请人】浙江工业大学
【公开日】2016年4月20日
【申请日】2015年11月30日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1