system: [SYSTEM]

user: 3. 实验与结果分析 3.1. 实验数据收集 目前，新浪微博的数据获取主流有两种方法：一种是通过微博开发商提供的API获取，这种方法首先需要申请开发者权限，获取授权用户API接口，且授权用户对接口访问频率有限制，难于短时间获取大量的数据；另一种是使用网络爬虫工具，简单轻巧，并且使用起来非常方便。 RCRank算法因需要获取大量的微博转发和评论用户id列表，考虑到微博官方提供的API接口访问频率受限，为了快速获取数据信息，本文采取API结合爬虫两种方式采集数据。 获取数据的环境为：在虚拟机搭建7个Ubuntu系统，其中分配一个主节点(Redis服务器)用于管理爬虫请求队列，剩下的6个作为子节点(Spider爬虫服务器)用于爬取网页数据，如图4所示。 图4. 分布式爬虫数据获取原理框架 采用爬虫获取到100，000个微博用户数据，包含有用户的粉丝关系数据和2017年11月至2017年12月份的微博转发和评论关系数据。数据清洗后，得到69，000个用户，然后随机截取出5000微博用户作为实验数据，虽然用户数量少了，但用户之间的关系保留完整。 3.2. 实验结果与分析 为了证明RCRank算法的有效性，本文采用传统的PageRank算法、TunkRank算法与RCRank算法在相同的数据集上进行对比实验。TunkRank算法如公式(8)所示。 I n f l u e n c e ( v ) = ∑ u ∈ F o l l o w e r s ( v ) 1 + p * I n f l u e n c e ( u ) ‖ F o l l o w i n g ( u ) ‖ (8) 其中： I n f l u e n c e ( v ) 表示 v 的所有粉丝集合， F o l l o w i n g ( u ) 表示关注用户u的用户集合。 p 表示假定用户v阅读一条用户u发布的微博后转发该微博的概率。 从公式(8)可以看出，TunkRank算法在计算用户影响力是将微博用户的粉丝影响力 1 / F o l l o w i n g ( u ) 与粉丝转发微博所带来的影响力 p * I n f l u e n c e ( u ) / F o l l o w i n g ( u ) 相结合，这样可以有效解决“僵尸粉”问题。 为了验证RCRank算法得到的用户影响力更接近真实影响力，引入新浪微博官方影响力评价方法。该方法影响力构成：用户粉丝质量，短微博/长微博/视频发布数，被转发，评论，赞次数；被阅读，打赏，订阅，曝光次数等。计算公式如公式(9)所示。 影 响 力 = a × 活 跃 度 + b × 互 动 力 + c × 覆 盖 度 (9) 满分为100分，由活跃度，互动力，覆盖度三部分完成，所占比例分别为：25%，55%，20%。活跃度主要评测指标为短微博/长微博/视频发布量；互动力主要评测指标为短微博/长微博/视频被转，被评论，被赞次数；覆盖度主要评测指标有粉丝数，阅读数，打赏，曝光，篇均阅读等。 由于微博V认证用户与普通用户间影响力差距很大，为方便观察和对比，将所有实验计算得到的分数限制到一定区间，活跃度，互动力和覆盖度按上述比例采用归一化算法进行计算，以100分为上限，保留四位小数，以四舍五入原则计入。如公式(10)所示。 X s c o r e = X − X min X max − X min * 100 (10) 其中：X表示计算出的当前用户的影响力值， X min 表示所有用户影响力的最小值， X max 表示用户中影响力的最大值。 其中表2为微博官方影响力评价方法得到的用户影响力排名，表3为使用RCRank算法得到的用户影响力排名。从图5发现四种方法计算得到的最后用户影响力排名有一定差别，传统PageRank算法和RCRank算法计算得到的最后排名比较接近，但RCRank算法在传统PageRank算法基础上结合微博转发和评论具体情况引入可调参数，对传统的PageRank算法进行了改进，使用非均值分配PR值思想代替传统PageRank算法的PR值的均值分配思想。 为了更加清楚看出实验对比结果，引入均方根误差(RMSE)来准确度量三种算法来计算排名结果与真实排名的误差值。具体的评测公式如公式(11)所示。 RMSE = ∑ i = 1 n ( X model ， i − X r e a l ， i ) 2 (11) Table 2 Ranking of influences based on official formula 排名 微博用户名 粉丝数 微博数 评论转发总数 排名得分 1 coser狱凰 1166 190 282 8.0222 2 甄洋洋洋 1197 110 131 5.3211 3 宋波小疯子 1163 56 100 4.4510 4 蕴华同人 1128 85 88 4.4510 5 抹茶阿姨i- 1427 70 37 4.1916 6 狸奴__女 1346 12 67 4.1188 7 闪闪-Marbury 897 109 96 4.0765 8 魔王1号微 790 88 120 4.0683 9 护肤常识- 1714 5 8 4.0413 10 Cogitoergo 1270 34 55 3.8863 表2. 根据官方公式得到的影响力排名 Table 3 RCRank algorithm calculation result 排名 微博用户名 粉丝数 转发总数 评论总数 排名得分 1 coser狱凰 1166 117 165 2448.42 2 甄洋洋洋 1197 100 31 335.78 3 蕴华同人 1128 30 58 258.75 4 抹茶阿姨i- 1427 0 37 169.33 5 闪闪-Marbury 897 28 68 158.62 6 宋波小疯子 1163 0 100 155.17 7 魔王1号微 790 67 55 137.51 8 护肤常识- 1714 1 7 134.64 9 Cogitoergo 1270 7 48 134.50 10 狸奴__女 1346 34 33 120.38 表3. RCRank算法计算结果 图5. 不同方法计算得出的微博用户排名顺序 其中： n 表示测量次数， X model ， i 表示模型的计算值， X r e a l ， i 表示真实值。用真实排名位次表示 X r e a l ， i 数值，使用算法计算出的排名位次来表示 X model ， i 。 通过最后实验对比可知，RCRank算法得出的RMSE = 5.83095189485，为最低值，表明改进后的算法模型计算得到的结果排名和真实排名更接近，如表4所示。 Table 4 RMSE values calculated by the three algorithm 算法名称 PageRank算法 TunkRank算法 RCRank算法 RMSE 6.48074069841 6.0 5.83095189485 表4. 三种算法计算的结果RMSE值 这也进一步体现了改进后的算法，更加符合实际情况。综上所述，RCRank算法是可以合理调整微博用户传递分配的PR值，使每个微博用户所分配PR值更合理。 通过图6显示用户“闪闪-Marbury”微博被转发和评论的情况，调节参数大于1表示这些用户转发或评论了博主多条微博。调节参数小于1表示这些用户更多的关注其他用户，对用户“闪闪-marbury”只是偶尔转发或评论一次，如果根据RCRank算法思想，对关注度更大的用户传递更多PR值，所以调节参数小于1，能够传递到“闪闪-marbury”的PR值相对更少。对于图6，调节参数等于1有两种情况：第一，表示这些用户只转发了或评论了“闪闪-marbury”的微博。第二，表示这些用户对其它用户的微博转发或评论次数相同，所以还是按原来的分配值进行分配，不作调整。 通过引入公式来度量调节参数越大，属于忠实粉丝的概率越大，概率公式如公式(12)所示。 p 概 率 = 1 − 1 e x (12) 其中x为调节参数值，范围 x ∈ [ 0 ， + ∞ ) ，当x = 0表示该用户没有评论，假设该用户转发的调节参数值为0，综合考虑转发和评论情况，可知该用户是博主忠实粉丝的概率为0%。当x值越大，表明该用户对博主用户发布的微博评论所占比重越高，通过公式(12)可计算得出该用户是博主忠实粉丝概率越接近100%。结合上述公式得到见图7。 综合上述对图6解释，结合观察图7可以在一定程度上挖掘出用户“闪闪-marbury”忠实粉丝有哪些，例如用户“5848468419”，对博主微博评论调节参数值达到1.50，说明相对其它用户，更热衷于评论“闪闪-marbury”所发布的微博。相反，用户“1646406540”对“闪闪-marbury”微博转发调节参数为0.1，说明相对其它用户基本不转发“闪闪-marbury”的微博，很有可能只是一个路过者，偶尔转发过一次。通过观察用户“闪闪-marbury”的粉丝列表发现用户“5848468419”在博主的粉丝列表中，而用户“1646406540”不在博主的粉丝列表中。 图6. 转发和评论用户“闪闪-Marbury”微博产生的调节参数分布 图7. 评论用户“闪闪-Marbury”微博产生的调节参数分布