浅谈PageRank(公式1)

来源:http://wxsgdsgz-126-com.iteye.com/blog/1315093

说实话,这篇博客写的真的很纠结~PageRank作为一个如此成功而强大的排序算法,内部现非常的复杂,在用矩阵进行数学建模后,又用到了迭代的思想使计算值趋于稳定,其中还涉及到了衰退因子、模型收敛等问题,我只能就着自己少量的线性代数知识对其进行简单的分析,梳理出我考虑PR实现思路,这里我的说明只是理论上的,所有实验室设备的操作(比如Octave中编制脚本,设计稀疏矩阵等,下文中例举的Octave实例来自引用)均不涉及,大家如果感兴趣可以查阅网上的教程,讲解过程中也涉及到一些线性代数的基本知识,大家可以先进行了解,以便更好地理解PR算法。

作为最基本的考虑方法,PR设计时用矩阵的形式表达了页面间的链接关系(有些资料中写的是行列式,个人认为从线性代数的观点看是不全面的,行列式通常是用来表达值的概念,矩阵才有真正的m*n的数表概念,而且矩阵中存在向量,可以代表从a到b的有向路径,了解过PR计算的人也知道我们最后求解的PR值其实也就是方程的特征向量),如果两点i,j之间有链接,将其定义为1,否则为0:

此时,如果要做出N张网页之间的链接关系,就成为了一个N*N的方阵,相当于图论中的邻接矩阵,网页间的关系被表示成了采用邻接关系的有向图表。PageRank计算中是将这个矩阵进行倒置(使行和列互换),这里为什么要进行倒置,你能想通吗?在一般的矩阵中,我们所观察到的行定义(通过图表观点)是从这一行所代表的页面i到所有其他页面的链接,定义篇中我们提到过,PR的设计思想是统计一个页面有多少的链入,并通过计算链入值得到本页面的PR,那么可以理解为,我们最为关注的不是我们的页面有多少的链出,而是有多少的链入。所以在这里,将矩阵的行与列互换,行定义便成为了其他所有页面到本行所表示的页面i是否有链接,aij=1代表了从页面j向页面i有链接的情况,这样的表达使得数据观察更为直观,更为重要的是,这种特性经过之后的计算还将得以保留。

经过矩阵的倒置,我们再来对列进行处理。此时每一列的元素代表的意义就是本列i所代表的页面是否存在指向其他所有页面的链接,这就又要提到PR的一个独特的设计,那就是将每个页面的概率看做1,且它是等概率的分布给所有链接的页面,如果你的页面中有10个链接,那么每个链接可以分享到的PR值是你页面PR的1/10。为了将每一列的矢量和变为1,就要用1去除以自身的链接数(矩阵中的非0位个数),这样做成的行列概念上被称作「推移概率行列」,N个页面代表含有N个概率变量,各个行矢量表示状态之间的推移概率,比如a11=0, a12=1/2, a13=1/3代表了从页面1到1不需要状态的变化,2到1的概率有1/2,3到1的概率为1/3。PageRank中最终计算的就是属于这个推移概率行列最大特性值的固有矢量,也称作优固有矢量,这里的固有矢量是一个一维列向量,里面包含的元素就是每一个页面的PR值,这种计算方式在数学上给出的解释是,当线性变换次数 t→∞ ,能够根据变换行列的“绝对价值最大的特性值”和“属于它的固有矢量”将其从根本上记述下来。我对此的理解是,用推移概率行列表示PR值的过程,也就是反复对此行列进行乘法运算的过程,迭代计算中可以得出当前以及前方状态的概率,当计算次数逼近无穷,值趋于稳定。数学中求解特性值与固有矢量是一种能够进行严密分析的基础手段,我们可以任意给定初始值,因为不断地将行列相乘,得到的矢量会集中在一些特定数值的组合中,而那些稳定的数值的组合称为固有矢量,把固有矢量中特征性的标量称为特性值,线性代数中给出的公式为Ax=kx,其中A为给定的矩阵,k就是对应的特征值,x是我们所求解的向量,称作对应于k的固有矢量。

 

最基本的设计模型介绍完后,我们通过一个例子来分析PageRank操作的具体过程(本来想自己写一个例子,编辑的时候发现画出的矩阵好丑啊~最后还是放个带图形的吧):

这是模拟互联网中7个页面的链接,为了便于讨论分析,在这里不考虑任何外部的链入以及链出,且所有网页都有链出页面(无“悬挂”存在)

 

根据图中的链接关系,可以列出下表:

 

 

将这张表转换为矩阵是一个7*7的方阵A,横行代表是否指向某个页面(正向连接):

 

 

构造A的推移概率行列M(转置矩阵,再将各列除以自己非0元素的个数),M中某一行i代表了其他网页是否指向i(反向链接):

 

 

表示 PageRank 的矢量 R (一个包含各页面等级数的列向量),由特征值与特征向量的基本公式MR=cR,可以推出R=c'MR的关系,其中c'=1/c。在这种情况下,R 相当于线形代数中的固有矢量,c 是对应的特性值。为了求得 R ,只要对这个方阵 M 作特性值分解就可以了。实际操作中的特性分析都是由相关的数学软件完成的,概念篇中也提到过,比如被称作矩阵实验室的Matlab是当前最热门的数值分析与矩阵计算工具,通过固定的脚本编制形式就可以将所要求解的矩阵输入Matlab当中进行计算,在这里我贴出两张通过Octave脚本运算的图片,如果不明白例子中在做什么的话,只要认为我们可以通过Octave这一数学软件求解出需要的特性值问题即可(注:这里的实例引用自网络):


用Octave计算后,会出现大量的运算结果(包括M的全部特性值与矢量列组合,特性值被表示为对角行列 D 的对角成分,各个特性值相对应的固有矢量被表示为行列 V 对应列的列矢量, M * V = D * M 成立),这里不一一贴出,只是给出需要的结果:

这里的EigenVector与PageRank所代表的都是固有矢量,但EigenVector没有被标准化,只是矢量的「大小」等于 1(我理解它就像是向量空间中的规范正交基),用算式来表达就是,Σpi ≠1 ,Σ(pi)2=1,经标准化后得到如图的排名值,注意这里的PageRank仅代表了概率的分步(所以标准化后它们的和为1),并不是实际的取值,当我们用这个概率乘以各页面的PR,就变成了本页面要增加的PR值~此时,将页面按照PR排序:

通过排序结果我们可以看出,正如概念篇中介绍过的,PageRank 的名次与链入的数目是基本一致的。无论多少正向链接都几乎不会影响,链入的个数却是从根本上决定 PageRank 的大小,当然,我们也说过,这个排名也不只是通过反向链接决定的。仔细分析可以看出,ID=1 的文件的 PageRank 是0.304,占据全体的三分之一,成为了第1位,这其中起到相当大效果的是从排在第3位的 ID=2 页面中得到了所有的 PageRank(0.166)数。ID=2页面有从3个地方过来的链入,而只有面向 ID=1页面的一个链接,因此(面向ID=1页面的)链接就得到了所有的 PageRank 数。不过,从 ID=1页面是链入和链出最多的页面来看,也能够认为它是最受欢迎的。相对来说,最后一名的 ID=6 页面只有 ID=1 的15%的投票,这表明了尽管6页面拥有来自 PageRank 很高的 ID=1 的链接,但由于1的链出太多,并未分到太多的PR值,这也印证了PR最初的设计思想—即使有同样的链入数目,链接源页面评价的高低与链出的个数也影响 传入的PageRank 高低。

虽然特性值的分析不需要人为进行,在这里我仍将求解特征值与相对应特征向量的基本方法写出来帮助大家理解。举一个简单的例子:已知矩阵A=[a,b,c](因为在页面上显示不出矩阵的格式,我将内部元素用向量以及向量转置的方式表现出来),其中a=(-1,-4,1)T,b=(1,3,0)T,c=(0,0,2)T,求解A的特征值和特征向量。求解时也需要用到原始公式的一个转型(A-cE)x=0,其中c为特征值,x为特征向量,E为同型单位矩阵。令|A-cE|=0,对于这个3*3的矩阵求值,得出|A-cE|=(2-c)(1-c)2=0,所以A的特征值为c1=2,c2=c3=1。当c1=2时,解方程(A-2E)x=0,通过线性变换解得基础解系p1=(0,0,1)T,所以kp1(k≠0)是对应于c1=2的全部特征向量;同理,当c2=c3=1时,解方程(A-2E)x=0,经线性变换求得p2=(-1,-2,1)T,所以kp2(k≠0)是对应于c2=c3=1的全部特征向量。

本来以为公式篇足够写了,没想到贴入图片后占了这么大空间,那么这一篇就用来介绍基本的模型与线性代数原理,下一篇从公式入手分析一下~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值