1. PageRank算法概述

PageRank,即网页排名,又称网页级别Google左側排名佩奇排名。

        在谷歌主导互联网搜索之前, 多数搜索引擎採用的排序方法, 是以被搜索词语在网页中的出现次数来决定排序——出现次数越多的网页排在越前面。 这个判据不能说毫无道理, 由于用户搜索一个词语。 通常表明对该词语感兴趣。

既然如此, 那该词语在网页中的出现次数越多, 就越有可能表示该网页是用户所须要的。
可惜的是, 这个貌似合理的方法实际上却行不大通。

由于依照这样的方法, 不论什么一个象祥林嫂一样翻来复去倒腾某些关键词的网页, 不管水平多烂, 一旦被搜索到。 都立马会 “金榜题名”, 这简直就是广告及垃圾网页制造者的天堂。 

是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后。该算法也成为其他搜索引擎和学术界十分关注的计算模型。

眼下许多重要的链接分析算法都是在PageRank算法基础上衍生出来的。PageRank是Google用于用来标识网页的等级/重要性的一种方法。是Google用来衡量一个站点的好坏的唯一标准。在揉合了诸如Title标识和Keywords标识等全部其他因素之后,Google通过PageRank来调整结果,使那些更具“等级/重要性”的网页在搜索结果中另站点排名获得提升,从而提高搜索结果的相关性和质量。其级别从0到10级,10级为满分。PR值越高说明该网页越受欢迎(越重要)。比如:一个PR值为1的站点表明这个站点不太具有流行度,而PR值为7到10则表明这个站点很受欢迎(或者说极其重要)。

一般PR值达到4。就算是一个不错的站点了。Google把自己的站点的PR值定到10,这说明Google这个站点是很受欢迎的,也能够说这个站点很重要。

2. 从入链数量到 PageRank

在PageRank提出之前,已经有研究者提出利用网页的入链数量来进行链接分析计算。这样的入链方法如果一个网页的入链越多,则该网页越重要。早期的非常多搜索引擎也採纳了入链数量作为链接分析方法,对于搜索引擎效果提升也有较明显的效果。 PageRank除了考虑到入链数量的影响,还參考了网页质量因素,两者相结合获得了更好的网页重要性评价标准。

对于某个互联网网页A来说,该网页PageRank的计算基于下面两个基本如果:

     数量如果:在Web图模型中,如果一个页面节点接收到的其它网页指向的入链数量越多,那么这个页面越重要。

     质量如果:指向页面A的入链质量不同。质量高的页面会通过链接向其它页面传递很多其它的权重。所以越是质量高的页面指向页面A。则页面A越重要。

       利用以上两个如果。PageRank算法刚開始赋予每一个网页同样的重要性得分,通过迭代递归计算来更新每一个页面节点的PageRank得分,直到得分稳定为止。 PageRank计算得出的结果是网页的重要性评价,这和用户输入的查询是没有不论什么关系的,即算法是主题无关的。

如果有一个搜索引擎。其相似度计算函数不考虑内容相似因素,全然採用PageRank来进行排序,那么这个搜索引擎的表现是什么样子的呢?这个搜索引擎对于随意不同的查询请求,返回的结果都是同样的。即返回PageRank值最高的页面。

3. PageRank算法原理

PageRank的计算充分利用了两个如果:数量如果和质量如果。过程例如以下:

      1)在初始阶段:网页通过链接关系构建起Web图,每一个页面设置同样的PageRank值,通过若干轮的计算,会得到每一个页面所获得的终于PageRank值。

随着每一轮的计算进行。网页当前的PageRank值会不断得到更新。

2)在一轮中更新页面PageRank得分的计算方法:在一轮更新页面PageRank得分的计算中,每一个页面将其当前的PageRank值平均分配到本页面包括的出链上,这样每一个链接即获得了对应的权值。而每一个页面将全部指向本页面的入链所传入的权值求和,就可以得到新的PageRank得分。当每一个页面都获得了更新后的PageRank值,就完毕了一轮PageRank计算。

3.2 基本思想:

假设网页T存在一个指向网页A的连接,则表明T的全部者觉得A比較重要,从而把T的一部分重要性得分赋予A。这个重要性得分值为:PR(T)/L(T)

     当中PR(T)为T的PageRank值,L(T)为T的出链数

则A的PageRank值为一系列类似于T的页面重要性得分值的累加。

即一个页面的得票数由全部链向它的页面的重要性来决定,到一个页面的超链接相当于对该页投一票。一个页面的PageRank是由全部链向它的页面(链入页面)的重要性经过递归算法得到的。一个有较多链入的页面会有较高的等级,相反假设一个页面没有不论什么链入页面,那么它没有等级。

3.3 PageRank简单计算:

如果一个由仅仅有4个页面组成的集合:A。B,C和D。如果全部页面都链向A,那么A的PR(PageRank)值将是B,C及D的和。

继续如果B也有链接到C,而且D也有链接到包含A的3个页面。一个页面不能投票2次。所以B给每一个页面半票。以相同的逻辑,D投出的票仅仅有三分之中的一个算到了A的PageRank上。

换句话说,依据链出总数平分一个页面的PR值。

样例:

图1 所看到的的样例来说明PageRank的详细计算过程。

3.4  修正PageRank计算公式:

         因为存在一些出链为0。也就是那些不链接不论什么其它网页的网。 也称为孤立网页,使得非常多网页能被訪问到。

因此须要对 PageRank公式进行修正。即在简单公式的基础上添加了阻尼系数(damping
factor)
q。 q一般取值q=0.85。

其意义是。在随意时刻,用户到达某页面后并继续向后浏览的概率。 1- q= 0.15就是用户停止点击。随机跳到新URL的概率)的算法被用到了全部页面上,估算页面可能被上网者放入书签的概率。

最后。即全部这些被换算为一个百分比再乘上一个系数q。因为以下的算法,没有页面的PageRank会是0。

所以,Google通过数学系统给了每一个页面一个最小值。

这个公式就是.S Brin 和 L. Page 在《The Anatomy of a Large- scale Hypertextual Web Search Engine Computer Networks and ISDN Systems 》定义的公式。

所以一个页面的PageRank是由其它页面的PageRank计算得到。Google不断的反复计算每一个页面的PageRank。假设给每一个页面一个随机PageRank值(非0),那么经过不断的反复计算,这些页面的PR值会趋向于正常和稳定。

这就是搜索引擎使用它的原因。

4. PageRank幂法计算(线性代数应用)

4.1 完整公式:

关于这节内容,能够查阅:谷歌背后的数学

首先求完整的公式:

Arvind Arasu 在《Junghoo Cho Hector Garcia - Molina, Andreas Paepcke, Sriram Raghavan. Searching the Web》 更加准确的表达为:

是被研究的页面。链入页面的数量,链出页面的数量。而N是全部页面的数量。

PageRank值是一个特殊矩阵中的特征向量。这个特征向量为:

R是例如以下等式的一个解:

假设网页i有指向网页j的一个链接,则

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="62" width="131" alt="">

否则=0。

4.2 使用幂法求PageRank

那我们PageRank 公式能够转换为求解的值。

当中矩阵为 A = q  × P + ( 1 一 q) *  /N 。 P 为概率转移矩阵,为 n  维的全 1 行. 则 =

幂法计算步骤例如以下:

      X  设随意一个初始向量, 即设置初始每一个网页的 PageRank值均。一般为1.

R = AX;

while  (1 )(

if ( l X - R I  <  ) { //假设最后两次的结果近似或者同样。返回R

return R;

}    else   {

X =R;

R = AX;

}

}

4.3 求解步骤:

一、 P概率转移矩阵的计算过程:

先建立一个网页间的链接关系的模型,即我们须要合适的数据结构表示页面间的连接关系。

      1) 首先我们使用图的形式来表述网页之间关系:

如今如果仅仅有四张网页集合:A、B、C。其抽象结构例如以下图1:

图1 网页间的链接关系

显然这个图是强连通的(从任一节点出发都能够到达另外不论什么一个节点)。

2)我们用矩阵表示连通图:

用邻接矩阵 P表示这个图中顶点关系 。假设顶(页面)i向顶点(页面)j有链接情况 。则pij   =   1 ,否则pij   =   0 。

如图2所看到的。

假设网页文件总数为N 。 那么这个网页链接矩阵就是一个N x N  的矩 阵 。

3)网页链接概率矩阵

然后将每一行除以该行非零数字之和,即(每行非0数之和就是链接网个数)则得到新矩阵P’,如图3所看到的。

这个矩阵记录了 每一个网页跳转到其它网页的概率。即当中i行j列的值表示用户从页面i 转到页面j的概率。

图1 中A页面链向B、C,所以一个用户从A跳转到B、C的概率各为1/2。

4)概率转移矩阵P

採用P’ 的转置矩 阵进行计算, 也就是上面提到的概率转移矩阵P 。  如图4所看到的:

           
         图2  网页链接矩阵:                                      图3  网页链接概率矩阵:  
 
 

                         图4  P’ 的转置矩 阵

二、 A矩阵计算过程。

1)P概率转移矩阵  :

      

  2)/N 为:

3)A矩阵为:q  × P + ( 1 一 q) *  /N = 0.85  × P + 0.15  *
/N

初始每一个网页的 PageRank值均为1 , 即X~t = ( 1 , 1 。 1 ) 。

三、 循环迭代计算PageRank的过程

第一步:

由于X 与R的区别较大。 继续迭代。

第二步:

继续迭代这个过程...

直到最后两次的结果近似或者同样,即R终于收敛。R 约等于X,此时计算停止。终于的R 就是各个页面的 PageRank 值。

用幂法计算PageRank 值总是收敛的。即计算的次数是有限的。

Larry Page和Sergey Brin 两人从理论上证明了不论初始值怎样选取,这样的算法都保证了网页排名的预计值能收敛到他们的真实值。

因为互联网上网页的数量是巨大的。上面提到的二维矩阵从理论上讲有网页数目平方之多个元素。

假设我们假定有十亿个网页,那么这个矩阵 就有一百亿亿个元素。这样大的矩阵相乘,计算量是很大的。

Larry Page和Sergey Brin两人利用稀疏矩阵计算的技巧,大大的简化了计算量。

5. PageRank算法优缺点

长处:

是一个与查询无关的静态算法。全部网页的PageRank值通过离线计算获得。有效降低在线查询时的计算量,极大降低了查询响应时间。

缺点:

1)人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主题性减少

2)旧的页面等级会比新页面高。由于即使是非常好的新页面也不会有非常多上游链接。除非它是某个网站的子网站。

參考文献:

维基百科http://en.wikipedia.org/wiki/Page_rank

PageRank算法的分析及实现

《这就是搜索引擎:核心技术具体解释》

Machine Learning:PageRank算法的更多相关文章

  1. Machine Learning:机器学习算法

    原文链接:https://riboseyim.github.io/2018/02/10/Machine-Learning-Algorithms/ 摘要 机器学习算法分类:监督学习.半监督学习.无监督学 ...

  2. 机器学习(Machine Learning)算法总结-K临近算法

    一.算法详解 1.什么是K临近算法 Cover 和 Hart在1968年提出了最初的临近算法 属于分类(classification)算法 邻近算法,或者说K最近邻(kNN,k-NearestNeig ...

  3. 机器学习(Machine Learning)算法总结-决策树

    一.机器学习基本概念总结 分类(classification):目标标记为类别型的数据(离散型数据)回归(regression):目标标记为连续型数据 有监督学习(supervised learnin ...

  4. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  5. [Machine Learning] 浅谈LR算法的Cost Function

    了解LR的同学们都知道,LR采用了最小化交叉熵或者最大化似然估计函数来作为Cost Function,那有个很有意思的问题来了,为什么我们不用更加简单熟悉的最小化平方误差函数(MSE)呢? 我个人理解 ...

  6. Machine Learning 算法可视化实现1 - 线性回归

    一.原理和概念 1.回归 回归最简单的定义是,给出一个点集D,用一个函数去拟合这个点集.而且使得点集与拟合函数间的误差最小,假设这个函数曲线是一条直线,那就被称为线性回归:假设曲线是一条二次曲线,就被 ...

  7. 机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集

    机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集 关键字:FPgrowth.频繁项集.条件FP树.非监督学习作者:米 ...

  8. 机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析

    机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析 关键字:Apriori.关联规则挖掘.频繁项集作者:米仓山下时间:2018 ...

  9. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记

    机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...

随机推荐

  1. 【BZOJ 1095】 1095: [ZJOI2007]Hide 捉迷藏 (括号序列+线段树)

    1095: [ZJOI2007]Hide 捉迷藏 Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏 ...

  2. [BZOJ4898] [Apio2017]商旅

    [BZOJ4898] [Apio2017]商旅 传送门 试题分析 考虑两个点之间的路径,显然如果交易的话肯定选\(S_{t,i}-B_{s,i}\)最大的. 那么我们可以先用\(Cost\)把两个点的 ...

  3. BZOJ 2705 [SDOI2012]Longge的问题(欧拉函数)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2705 [题目大意] 求出∑gcd(i,N)(1<=i<=N) [题解] $ ...

  4. 【树形dp】hdu6035 Colorful Tree

    非常棒的题解,我就不复述了:http://blog.csdn.net/Bahuia/article/details/76141574 O(n) #include<cstdio> #incl ...

  5. CentOS通过日志反查入侵(转)

    1.查看日志文件 Linux查看/var/log/wtmp文件查看可疑IP登陆 last -f /var/log/wtmp  该日志文件永久记录每个用户登录.注销及系统的启动.停机的事件.因此随着系统 ...

  6. javacript总结

    前端js总结 //getElementById函数 function $(id){ return document.getElementById(id); } //随机函数不包max //Math.f ...

  7. Windows 10新增的6个快捷键:

    Win+方向箭头:调整窗口贴边位置 Alt+Tab:切换窗口,按住不松时会有一个全新的界面方便你在不同的窗口间选择 Win+Tab:切换任务,这个松开后界面不会消失 Win+Ctrl+D:创建新的虚拟 ...

  8. ScheduledExecutorService run方法要加入try catch

    原文:http://www.andyqian.com/2018/03/07/java/javaSmallDetail/ 前言 今天我们一起来做个简单有趣的实验.熟悉Java的童鞋,对Scheduled ...

  9. 轻量级web服务器lighttpd的编译及配置(for x86-linux)

    转自:http://blog.163.com/ljf_gzhu/blog/static/131553440201211522317367/ 备注: PC Linux:Ubuntu-10.10 Linu ...

  10. jquery next()方法

    1.html代码 <!DOCTYPE html> <html> <head> <script type="text/javascript" ...