博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mapreduce版pagernak
阅读量:4658 次
发布时间:2019-06-09

本文共 1028 字,大约阅读时间需要 3 分钟。

 PageRank是什么

PageRank,网页排名。PageRank 计算每一个网页的PageRank值,并根据PageRank值的大小对网页的重要性进行排序。PageRank的基本思想是:对于一个网页A来说,链接到A的页面越多,且链接到A的页面的PageRank值越大,网页A的PageRank值越大。

简单的PageRank计算

首先我们对整个Web进行一个简单化处理:

  1. 将每一个页面看做一个节点;

  2. 如果页面A 链接页面B,则存在一条从A到B的有向边。

    整个Web就被抽象成一个有向图,现在假设只有四张网页,它的结构如图所示。

显然该图是强联通的(从任一节点出发都可以达到另一任节点)。对于页面A来说,它链接到页面B,C,D,即A有3个出链,则它跳转到每个出链B,C,D的概率均为1/3.。如果A有k个出链,跳转到每个出链的概率为1/k。同理B到A,C,D的概率为1/2,0,1/2。C到A,B,D的概率为1,0,0。D到A,B,C的概率为0,1/2,1/2。

通常我们使用一种合适的数据结构来表示页面间的链接关系。设一共有N个页面,则要生成一个N维矩阵,其中第i行表示的是其他页面对 第i个页面链接的概率,第j列表示的是第j个页面对其他页面链接的概率。这样的矩阵叫做转移矩阵。对应到上图,转移矩阵为:

在上图中,第一列为页面A对各个页面转移的概率,第一行为各个页面对页面A转移的概率。初始时,每一个页面的PageRank值都是均等的,为1/N,这里也即是1/4。然后对于页面A来说,根据每一个页面的PageRank值和每个页面对页面A的转移概率,可以算出新一轮页面A的PageRank值。这里,只有页面B和页面C转移了自己的1/2给A。所以新一轮A的PageRank值为1/41/2+1/41/2=9/24。

为了计算方便,我们设置各页面初始的PageRank值为一个列向量V0。然后再基于转移矩阵,我们可以直接求出新一轮各个页面的PageRank值。即 :

现在得到了各页面新的PageRank值V1, 继续用M 去乘以V1 ,就会得到更新的PageRank值。一直迭代这个过程,可以证明出V最终会收敛。此时停止迭代。这时的V就是各个页面的PageRank值。在上图中,一直迭代的中间V如下:

 mapreduce版pagerank实现:

 

转载于:https://www.cnblogs.com/xiangyuguan/p/11166087.html

你可能感兴趣的文章
通过取父级for循环的i来理解闭包,iife,匿名函数
查看>>
HDU 3374 String Problem
查看>>
数据集
查看>>
[Leetcode] unique paths ii 独特路径
查看>>
HDU 1217 Arbitrage (Floyd + SPFA判环)
查看>>
IntelliJ idea学习资源
查看>>
Django Rest Framework -解析器
查看>>
ExtJs 分组表格控件----监听
查看>>
Hibernate二级缓存配置
查看>>
LoadRunner常用术语
查看>>
关于jedis2.4以上版本的连接池配置,及工具类
查看>>
记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
查看>>
FactoryBean
查看>>
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
C3P0连接池工具类使用
查看>>
SVN常用命令备注
查看>>
孩子教育
查看>>
解决Cacti监控图像断断续续问题
查看>>
结构体的传参理解成员的存储方式
查看>>
python 进程与线程(理论部分)
查看>>