Machine Learning:PageRank算法

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" >

否则=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算法的分析及实现

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

时间: 2024-10-10 17:26:17

Machine Learning:PageRank算法的相关文章

Machine Learning:机器学习算法

原文链接:https://riboseyim.github.io/2018/02/10/Machine-Learning-Algorithms/ 摘要 机器学习算法分类:监督学习.半监督学习.无监督学习.强化学习 基本的机器学习算法:线性回归.支持向量机(SVM).最近邻居(KNN).逻辑回归.决策树.k平均.随机森林.朴素贝叶斯.降维.梯度增强 目录 监督学习(Supervised learning) 监督学习 原文地址:https://www.cnblogs.com/Antiver/p/99

Machine Learning In Action 第二章学习笔记: kNN算法

本文主要记录<Machine Learning In Action>中第二章的内容.书中以两个具体实例来介绍kNN(k nearest neighbors),分别是: 约会对象预测 手写数字识别 通过“约会对象”功能,基本能够了解到kNN算法的工作原理.“手写数字识别”与“约会对象预测”使用完全一样的算法代码,仅仅是数据集有变化. 约会对象预测 1 约会对象预测功能需求 主人公“张三”喜欢结交新朋友.“系统A”上面注册了很多类似于“张三”的用户,大家都想结交心朋友.“张三”最开始通过自己筛选的

【machine learning】KNN算法

适逢学习机器学习基础知识,就将书中内容读读记记,本博文代码参考书本Machine Learning in Action(<机器学习实战>). 一.概述 kNN算法又称为k近邻分类(k-nearest neighbor classification)算法. kNN算法则是从训练集中找到和新数据最接近的k条记录,然后根据他们的主要分类来决定新数据的类别.该算法涉及3个主要因素:训练集.距离或相似的衡量.k的大小. 二.算法要点 1.指导思想 kNN算法的指导思想是"近朱者赤,近墨者黑&q

机器学习---用python实现感知机算法和口袋算法(Machine Learning PLA Pocket Algorithm Application)

之前在<机器学习---感知机(Machine Learning Perceptron)>一文中介绍了感知机算法的理论知识,现在让我们来实践一下. 有两个数据文件:data1和data2,分别用于PLA和Pocket Algorithm.可在以下地址下载: 先回顾一下感知机算法: 1,初始化w 2,找出一个分类错误点 3,修正错误,假设迭代次数为t次(t=1,2,...),那么修正公式为: 4,直至没有分类错误点,返回最终的w 接下来让我们安照算法步骤,一步一步进行. 首先导入需要用到的库,其中

机器学习算法之旅A Tour of Machine Learning Algorithms

In this post we take a tour of the most popular machine learning algorithms. It is useful to tour the main algorithms in the field to get a feeling of what methods are available. There are so many algorithms available and it can feel overwhelming whe

【机器学习实战】Machine Learning in Action 代码 视频 项目案例

MachineLearning 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远 Machine Learning in Action (机器学习实战) | ApacheCN(apache中文网) 视频每周更新:如果你觉得有价值,请帮忙点 Star[后续组织学习活动:sklearn + tensorflow] ApacheCN - 学习机器学习群[629470233] 第一部分 分类 1.) 机器学习基础 2.) k-近邻算法 3.) 决策树 4.) 基于概率论的分类方法:朴素

[Machine Learning] 国外程序员整理的机器学习资源大全

本文汇编了一些机器学习领域的框架.库以及软件(按编程语言排序). 1. C++ 1.1 计算机视觉 CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库 OpenCV—它提供C++, C, Python, Java 以及 MATLAB接口,并支持Windows, Linux, Android and Mac OS操作系统. 1.2 机器学习 MLPack DLib ecogg shark 2. Closure Closure Toolbox—Clojure语言库与工具的分类目录 3

New to Machine Learning? Avoid these three mistakes

http://blog.csdn.net/pipisorry/article/details/43973171 James Faghmous提醒机器学习初学者要避免的三方面错误,推荐阅读 New to Machine Learning? Avoid these three mistakes Common pitfalls when learning from data Machine learning (ML) is one of the hottest fields in data scien

Machine Learning第十一周笔记:photo OCR

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕了Cousera上Machine Learning的最后一周课程.这周介绍了machine learning的一个应用:photo OCR(optimal character recognition,光学字符识别),以下将笔记整理在以下. Photo OCR Problem Description and Pipeline 最后几小节介绍机器学习的一个应用--photo O