前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 PageRank 找到关系网中的牛人

使用 PageRank 找到关系网中的牛人

作者头像
木东居士
发布2018-05-25 15:46:54
9770
发布2018-05-25 15:46:54
举报

0x00 前言

社交关系数据已经准备就绪,PageRank算法的原理和实现我们也已经大致掌握,下面就可以在此基础上做一些有意思的事情了。

本篇会在前面抓取的500w简书的粉丝数据上,使用 PageRank 找到其中的排名靠前的用户。

0x01 前期准备

1. 数据准备

数据的存储格式如下,这也是我们在生产环境中经常使用的数据格式,因此在爬虫获取的阶段已经处理完毕。这份数据是一个有向图,左边为用户,右边为他的粉丝。

备注: 这里面用的是简书生成的用户的ID,根据这个ID可以很方便地拼出来用户的主页。

2. 程序准备

这里还是要鄙视一下自己的程序,我没用自己的写的Demo程序,而用了一个Python包:NetworkX。懂了原理之后,用一些开源的实现,总是比自己靠谱一点。

NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

NetworkX用起来很方便,总的来讲三步就搞定:

  1. 引入NetworkX包
  2. 初始化一个图
  3. 计算PageRank值

0x02 实现和效果

实现

使用NetworkX包的话就很简单了,本来想用Matplotlib画一下关系图呢,但是数据量太大,后续到数据可是化的时候用Gephi或者Tableau玩一下。 下面是一个简单的代码,求取PageRank值。

对于最终结果,我们可以排一个序,然后打印出来PageRank值在前十的用户。如下图:

效果

效果的话,没什么好说的,自己跑一下数据然后取top的用户就会发现,排名考前的用户,大部分都是粉丝非常多的用户,相应的他们的博客的数量以及阅读量也都很多。

由于整个关系网是以我为入口爬取,因此在排名考前的一些用户中主要是三种类型:

  1. 数据相关的从业者(我关注的人以及我的粉丝大部分都会是类似的用户)
  2. 鸡汤类作家(简书的主旋律)
  3. 经常画画的简书用户(之前画过一些简笔画,因此有不少类似的关系)

0xFF 总结

做这一步只是为了好玩,然后顺便加深一下对PageRank算法的理解。 跑完程序之后感觉还是有不少收获的,也打开了不少的思路。

首先是观察到了一个非常有趣的现象:刚开始数据比较少的时候(20万左右)我就运行了一下程序,发现了有一个排名很靠前的用户,大概排名第七,但是他只有一个粉丝,看了一下他的粉丝,这个粉丝排名在第二,相应地把他拉到了第七的位置,这就验证了上一篇文章中提到的:如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高

然后数据量大起来后再运行了程序,在结果集中过滤掉鸡汤类用户之后,会发现很多之前没关注的博主,他们的博客都非常高。如果按照这种方式,简书或者CSDN这种博客网站,是不是可以将PageRank值作为推荐的一个权重,用于推荐系统中?不太清楚他们的推荐是怎么做的,不过没听说过哪个公司用PageRank作为推荐的一个权重,应该是有其局限性。

PageRank算法的原理的实现以及一个基本场景大致过了一遍,后续会来搞一下社区分区,然后再分别实现这些算法的MapReduce程序,以及在MapReduce程序中如何进行工程上的优化。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 前期准备
    • 1. 数据准备
      • 2. 程序准备
      • 0x02 实现和效果
        • 实现
          • 效果
          • 0xFF 总结
          相关产品与服务
          大数据
          全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档