system: [SYSTEM]

user: 2. 相关工作 2.1. 经典PageRank算法 PageRank算法又称为佩奇排名算法，是谷歌用来衡量网页重要性、标识网页等级、进行网页排序的一种方法。经典的PageRank算法如公式(1)所示。 PageRank ( p i ) = 1 − q N + q ∑ p j PageRank ( p j ) L ( p j ) (1) 其中： p i 和 p j 表示网页页面，N表示网页页面的总数， L ( p j ) 表示页面 p j 的出链数，q表示阻尼系数。q一般取值q = 0.85。 2.2. 改进的用户影响力评价算法 用户间微博评论关系示意图如图1所示。 图1. 用户间的微博评论关系示意图 在图1上，用户A经常会评论用户B发布的微博。经典的PageRank算法在计算微博评论的PR值时，使用了图2所示的有向图。 图2. 传统PageRank算法PR值分配图 其中，Num表示用户A评论的微博所涉及的博主总数，m表示B、C之外的其他用户数量。尽管用户A评论用户B的微博次数多于评论用户C的微博次数，但由于采取了PR值均值策略，因此，在计算用户A的评论PR值时，均取1/Num值。这很显然与实际不符。实际上，应该给用户B分配多一点PR值会更合理一些。 但传统PageRank算法模型采取的是均值分配方式，所以如同2所示，用户C和用户B传递得到的PR值是相等的(PR = 1/Num)。这样相当于损失掉用户A传递给用户B的部分PR值。为了解决这个问题，本文根据用户微博转发和评论情况引入了调节参数，如图3所示： 图3. 改进后PageRank算法评论分配PR值有向图 其中W1、W2和W3为调节参数。通过统计每个用户评论的情况，可计算得到对应的W1、W2和W3 (具体计算见公式2和公式3)。根据图3可知，改进后的算法，虽然分配思想上还是按传统PageRank算法模型进行分配，但是通过统计用户评论情况，每条边都增加对应的调节参数，用户A传递给用户C和用户B的PR值大小与W2和W3有关，而不是传统PageRank算法的均值分配。通过计算用户A对各个用户微博的评论情况，使得用户A更加合理的传递PR值。 以下是计算微博用户影响力所涉及的几个定义和计算公式。 定义1：用户微博转发调节参数 W i j 。计算微博转发影响力时，根据微博用户实际转发情况合理调整PR调节参数 W i j ，如公式(2)所示。 W i j = r i j * Q R i R i (2) 其中： W i j 表示用户i对用户j转发出链的调节参数， Q R i 表示用户i所有转发微博涉及到的微博用户总数， r i j 表示用户i转发了用户j的微博总数， R i 表示用户i所有转发微博总数。 定义2：用户微博评论调节参数。计算微博评论影响力时，根据微博用户实际评论情况合理调整PR调节参数 u i j ，如公式(3)所示。 u i j = c i j * Q C i C i (3) 其中： u i j 表示用户i对用户j评论出链的调节参数，转发调节参数是在应用PageRank算法计算微博转发影响力时，根据微博用户评论情况合理地分配PR值调节变量。 定义3：微博用户粉丝间影响力。微博用户之间关系记为有向图 G = 〈 V ， E 〉 ，其中V表示被研究的微博用户集合(即有向图的顶点集合)，E表示被研究用户之间粉丝关注情况(即有向图的边)。微博用户i粉丝间影响力计算如公式(4)所示。 F_Rank ( i ) = 1 − q N + q ∑ j ∈ G F_Rank ( j ) L ( j ) (4) 其中： F_Rank ( i ) 表示用户i的粉丝影响力，j表示用户i的粉丝用户， L ( j ) 表示用户j粉丝数，T表示粉丝用户集合。 定义4：微博转发影响力。考虑微博用户影响不同，在微博转发过程中所带来的影响力值也不一样，所以传统算法使用微博的转发个数不能准确评价微博的影响力。RCRank算法计算微博转发影响力是通过构建微博用户转发关系列表，增加了微博转发调节参数。结合公式(2)用户i微博转发影响力计算如公式(5)所示。 R_Rank ( i ) = 1 − q N + q ∑ k ∈ T R_Rank ( k ) L ( k ) * W i k (5) 其中： R_Rank ( i ) 表示用户i微博转发的影响力，k表示转发用户， L ( k ) 表示用户k转发微博的个数，T表示转发用户集合。 定义5：微博评论影响力。同理，计算微博评论影响力时，也加入微博评论的调节参数 u i j ，最终的微博评论影响力如公式(6)所示。 C_Rank ( i ) = 1 − q N + q ∑ e ∈ M C_Rank ( e ) L ( e ) * U i e (6) 其中： C_Rank ( i ) 表示用户i微博评论影响力，e表示评论用户， L ( e ) 表示用户e评论微博的个数，M表示评论用户集合。 定义6：微博用户影响力。通过增加微博转发和评论可调参数与博粉丝影响力相结合，可得微博用户影响力计算公式，如公式(7)所示。 Rank ( i ) = α * F_Rank ( i ) + β * R_Rank ( i ) + γ * C_Rank ( i ) (7) 其中： Rank ( i ) 表示微博用户i的综合影响力，由于得到的用户粉丝影响力、微博转发和评论影响力不能直接相加，所以引入 α ， β 和 γ 作为权重(且满足 α + β + γ = 1 )，目的是可以通过设置不同权重值，得到更加合理的用户影响力。 实现算法流程： 第一步：用户所发微博转发调节参数 W i j 计算流程。 结合表1获取的数据格式(初始调节参数为1.000，暂为不需要调整的用户)，计算微博转发调节参数值的算法流程如下： 输入：微博转发关系列表。 处理核心流程： 1. 连接数据库 2. resultß查询微博转发关系表 3. While (result记录非空) 4. 初始化 r i j = 0， Q R i = 0， R i = 0， W i j = 1 5. if用户i转发了用户j的微博 6. r i j = r i j + 1 7. if转发用户id == 用户i 8. R i = R i + 1 9. if转发用户id == 用户i&&博主id不同 10. Q R i = Q R i + 1 11. 计算 W i j = r i j * Q R i / R i 12. 将调节参数计算结果 W i j 更新到微博转发关系表中 13. 重复循环步骤2 14. 循环体执行完，则程序结束 Table 1 Weibo forwarding relationshi 转发用户id 博主id 微博id 调节参数 164**6540 263**6803 M_F9V1vkI0L 1.000 164**6540 263**6803 M_F9V1vkI0L 1.000 164**6540 263**6803 M_F9V1vkI0L 1.000 164**6540 263**6803 M_FyifsbegN 1.000 …… …… :::::: …… 597**1984 194**8655 M_F85qx42sC 1.000 表1. 微博用户转发关系表 第二步：计算用户影响力算法 算法输入：用户信息表，用户关注粉丝表，带有调节参数的微博转发和评论关系表 1. 构建有向图Graph_f=(VE)、Graph_r=(VE)和Graph_c=(VE)。 2. PR_fßGraph_f .PageRank (0.01)微博用户粉丝表使用传统PageRank算法 3. PR_rßrunUntilConvergenceWithOptions (Graph_r， 0.01)微博转发使用改进的算法 4. PR_cßrunUntilConvergenceWithOptions (Graph_c， 0.01)微博评论使用改进的算法 5. Rank = α * Rank_f + β * Rank_r + γ * Rank_c 6. 通过计算的结果Rank，可得到微博用户最终影响力排名 算法输出：最终的用户影响力排名和对应的影响力值 runUntilConvergenceWithOptions()//函数具体实现代码如下： valpagerankGraph: Graph[(Double， Double)， Double] = graph.outerJoinVertices(graph.outDegrees) { (vid， vdata， deg) => deg.getOrElse(0)}.mapTriplets{e=>(1.0/e.srcAttr)*e.attr.toString.toDouble} //修改后的将每条边的调节参数加入且设定 δ = 0.01。用户影响力计算过程，主要通过用户关注粉丝、微博转发和评论加权求综合排序，得到最终排名。