PageRank算法
来源:互联网 发布:怎样注册农村淘宝网店 编辑:程序博客网 时间:2024/05/19 03:26
Point 1:什么是pagerank?
PageRank的Page可是认为是网页,表示网页排名,PageRank算法计算每一个网页的PageRank值,然后根据这个值的大小对网页的重要性进行排序。它的思想是模拟一个悠闲的上网者,上网者首先随机选择一个网页打开,然后在这个网页上呆了几分钟后,跳转到该网页所指向的链接,这样无所事事、漫无目的地在网页上跳来跳去,PageRank就是估计这个悠闲的上网者分布在各个网页上的概率。
Point 2:最简化的PageRank模型
互联网中的网页可以看出是一个有向图,其中网页是结点,如果网页A有链接到网页B,则存在一条有向边A->B,下面是一个简单的示例:
这个例子中只有四个网页,如果当前在A网页,那么悠闲的上网者将会各以1/3的概率跳转到B、C、D,这里的3表示A有3条出链,如果一个网页有k条出链,那么跳转任意一个出链上的概率是1/k,同理D到B、C的概率各为1/2,而B到C的概率为0。一般用转移矩阵表示上网者的跳转概率,如果用n表示网页的数目,则转移矩阵M是一个n*n的方阵;如果网页j有k个出链,那么对每一个出链指向的网页i,有M[i][j]=1/k,而其他网页的M[i][j]=0;上面示例图对应的转移矩阵如下:
初试时,假设上网者在每一个网页的概率都是相等的,即1/n,于是初试的概率分布就是一个所有值都为1/n的n维列向量V0,用V0去右乘转移矩阵M,就得到了第一步之后上网者的概率分布向量MV0,(nXn)*(nX1)依然得到一个nX1的矩阵。下面是V1的计算过程:
注意矩阵M中M[i][j]不为0表示用一个链接从j指向i,M的第一行乘以V0,表示累加所有网页到网页A的概率即得到9/24。得到了V1后,再用V1去右乘M得到V2,一直下去,最终V会收敛,即Vn=MV(n-1),上面的图示例,不断的迭代,最终V=[3/9,2/9,2/9,2/9]’:
Point 3:
上面的演算过程,采用矩阵相乘,不断迭代,直到迭代前后概率分布向量的值变化不大,一般迭代到30次以上就收敛了。真的的web结构的转移矩阵非常大,目前的网页数量已经超过100亿,转移矩阵是100亿*100亿的矩阵,直接按矩阵乘法的计算方法不可行,需要借助Map-Reduce的计算方式来解决。
考虑转移矩阵是一个很多的稀疏矩阵,我们可以用稀疏矩阵的形式表示,我们把web图中的每一个网页及其链出的网页作为一行,这样第四节中的web图结构用如下方式表示:
A B C DB A DC CD B C
A有三条出链,分布指向A、B、C,实际上,我们爬取的网页结构数据就是这样的。
1、Map阶段
Map操作的每一行,对所有出链发射当前网页概率值的1/k,k是当前网页的出链数,比如对第一行输出<B,1/3*1/4>,<C,1/3*1/4>,<D,1/3*1/4>;
2、Reduce阶段
Reduce操作收集网页id相同的值,累加并按权重计算,pj=a*(p1+p2+…Pm)+(1-a)*1/n,其中m是指向网页j的网页j数,n所有网页数。
思路就是这么简单,但是实践的时候,怎样在Map阶段知道当前行网页的概率值,需要一个单独的文件专门保存上一轮的概率分布值,先进行一次排序,让出链行与概率值按网页id出现在同一Mapper里面,整个流程如下:
这样进行一次迭代相当于需要两次MapReduce,但第一次的MapReduce只是简单的排序.
Point 4:
. PageRank算法优缺点
优点:
是一个与查询无关的静态算法,所有网页的PageRank值通过离线计算获得;有效减少在线查询时的计算量,极大降低了查询响应时间。
缺点:
人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主题性降低
旧的页面等级会比新页面高。因为即使是非常好的新页面也不会有很多上游链接,除非它是某个站点的子站点。
- PageRank算法
- PageRank算法
- PageRank 算法
- PageRank算法
- PageRank算法
- PageRank算法
- PageRank算法
- PageRank算法
- PageRank算法
- PageRank算法
- PageRank算法
- PageRank算法
- PageRank算法
- pagerank算法
- PageRank算法
- PageRank算法
- PageRank 算法
- PageRank算法
- 【微营销】第2天 微营销实战技巧之官方微博、品牌微博、产品微博、专业知识微博
- Hibernate之查询
- 2017中北大学程序设计大赛决赛题解
- FFmpeg常用命令记录(1):录取屏幕、剪切视频、将视频转化为GIF
- jquery入口函数
- PageRank算法
- Enemy is weak
- Swift 文件 只有 import Foundation 而需要UIViewController
- MByteToWChar WCharToMByte
- TensorFlow CIFAR-10数据集
- CSS设计美丽之横排页面(小作品)
- nginx 点播mp4方法
- RSA私钥和公钥文件格式 (pkcs#7, pkcs#8, pkcs#12, pem)
- HSSFSheet导出excel