搜索引擎(三)-- PageRank和HITS算法

一、简介

要问搜索引擎是什么,很多人第一反应就是以百度,谷歌,雅虎为代表的搜索引擎。这些搜索引擎往往基于不同的算法,将分布于全球数百万机器上中最有价值的链接按价值的Ranking返回给查询者。长时间以来,网页搜索排名一直是互联网行业最具挑战的任务。本文将介绍几个典型的算法及应用。

二、PageRank

PageRank是谷歌创始人拉里佩奇和谢尔盖布林在斯坦福大学开发的推荐算法。它利用了超文本信息中丰富的链接信息,通过link-based的方法分析网页的价值。PageRank从两个方面去分析网页的价值:

  • 入链数量:是否有足够多的网页将链接指向它。
  • 入链质量:是否有足够重量级的网站将链接指向它。

2.1计算公式

2.1.1 原始PR算法

最初的PageRank公式如下,一个网页 A A A的价值 P R ( A ) PR(A) PR(A) P R ( A ) = ∑ i ∈ T P R ( T i ) C ( T i ) PR(A)=\sum_{i\in T}\dfrac{PR(T_i)}{C(T_i)} PR(A)=iTC(Ti)PR(Ti)
其中 T T T是指向网页 A A A的网页集, C ( T i ) C(T_i) C(Ti)是网页 T i T_i Ti的出链数量。这里举个例子,假设ABCD网页遵循如下链接结构:
在这里插入图片描述
那么第一个迭代时, P R ( A ) = P R ( C ) / 1 = 1 PR(A)=PR(C)/1=1 PR(A)=PR(C)/1=1, P R ( C ) = P R ( A ) / 2 + P R ( B ) / 1 + P R ( D ) / 1 = 2.5 PR(C)=PR(A)/2+PR(B)/1+PR(D)/1=2.5 PR(C)=PR(A)/2+PR(B)/1+PR(D)/1=2.5, 依此类推。

2.1.2 Rank Sink问题与改良版PR

试想这么一种情况,两个页面 X , Y X, Y X,Y相互指向对方,但是却不再指向其他页面了,其他页面却有指向这两个页面的入链。根据 P R ( A ) = ∑ i ∈ T P R ( T i ) C ( T i ) PR(A)=\sum_{i\in T}\dfrac{PR(T_i)}{C(T_i)} PR(A)=iTC(Ti)PR(Ti)的公式, C ( X ) = C ( Y ) = 1 C(X)=C(Y)=1 C(X)=C(Y)=1 P R ( X ) = P R ( Y ) + ∑ i ∈ T − ( X , Y ) P R ( T i ) / C ( T i ) PR(X)=PR(Y)+\sum_{i\in T-(X,Y)}PR(T_i)/C(T_i) PR(X)=PR(Y)+iT(X,Y)PR(Ti)/C(Ti), P R ( Y ) = P R ( X ) + ∑ i ∈ T − ( X , Y ) P R ( T i ) / C ( T i ) PR(Y)=PR(X)+\sum_{i\in T-(X,Y)}PR(T_i)/C(T_i) PR(Y)=PR(X)+iT(X,Y)PR(Ti)/C(Ti)X和Y的PR值会只增不减,只在这两个链接之间传递,如同黑洞一般吞噬其他页面的PR值。这种现象也被称为Rank Sink。

改良版的Page Rank引进了阻尼系数 d d d(damping factor),意义是浏览网页A的用户有 d d d的可能继续向后浏览,有 1 − d 1-d 1d的可能停止浏览,随机跳到新的URL中。改良后的PageRank公式为 P R ( A ) = ( 1 − d ) + d ∑ i ∈ T P R ( T i ) C ( T i ) PR(A)=(1-d)+d\sum_{i\in T}\dfrac{PR(T_i)}{C(T_i)} PR(A)=(1d)+diTC(Ti)PR(Ti)以上面的ABCD链接结构为例子,假设阻尼系数 d d d为1.5
在这里插入图片描述
一般来说,经过数轮迭代的PR值都会收敛,搜索引擎可以隔一段时间就离线跑一遍PR算法,收敛后的数据能直接提供给线上查询。

PageRank矩阵表示

我们将上述公式以线性代数的方式表示。
假设所有网页的PR值都以一个矩阵表示 R = [ P R ( P 1 ) P R ( P 2 ) . . . P R ( P N ) ] R=\begin{bmatrix}PR(P_1)\\PR(P_2)\\...\\PR(P_N)\end{bmatrix} R=PR(P1)PR(P2)...PR(PN)
令H为链接矩阵:如果 P i P_i Pi指向 P j P_j Pj, H ( i , j ) = 1 H(i,j)=1 H(i,j)=1,否则 H ( i , j ) = 0 H(i,j)=0 H(i,j)=0,那么迭代方程可以被表示为 R = 1 − d N + d H R R=\frac{1-d}{N}+dHR R=N1d+dHR

我们定义转移矩阵 A = d H + 1 − d N e e T A=dH+\frac{1-d}{N}ee^T A=dH+N1deeT
PR值得计算如下,其中 R n R_n Rn为第n次迭代时的 R R R矩阵:
R n + 1 = A R n R_{n+1}=AR_n Rn+1=ARn

该收敛过程可以通过幂方法和特征方程法去求解。

幂方法的思想是迭代。令赋予 R R R每一个页面随机PR值,然后通过 R n + 1 = A R n R_{n+1}=AR_n Rn+1=ARn不断迭代,在收敛不等式 ∣ R n + 1 − R n ∣ < ϵ |R_{n+1}-R_{n}|<\epsilon Rn+1Rn<ϵ满足后,停止迭代。

特征值法更接近问题本质。回忆一下特征值的公式, A x = λ x Ax=\lambda x Ax=λx x x x是特征向量, λ \lambda λ是特征向量。求 R R R其实就是当A矩阵特征值 λ = 1 \lambda=1 λ=1时,特征向量 x x x的值,因为 x = R , λ = 1 x=R, \lambda=1 x=R,λ=1时, A x = λ x ⇒ A R = R Ax=\lambda x\Rightarrow AR = R Ax=λxAR=R

由此,我们需要注意的另一个问题就是dangling node问题,dangling node是无出链的网页,它在 H H H矩阵中向量为全0,但是这样的数据会导致矩阵的秩下降,从而无法求解矩阵的特征值。这种情况我们对 H H H矩阵中全0的列进行改写:如果网页 i i i是dangling node,对所有网页 j j j,令 h i , j = 1 N h_{i,j}=\frac{1}{N} hi,j=N1

三、HITS

HITS(Hyperlink-Induced Topic Search)是一个跟PageRank同期推出的link-based排名方法。在HITS算法中,每一个页面都有两个属性:hubauthority。hub,有中枢之意,用于衡量出链的authority之和;authority,指页面的权威,用入链的hub之和进行衡量

  • p网页的auth可以表示为 x p = ∑ q ∣ q → p y p x_p=\sum_{q|q\to p}y_p xp=qqpyp
  • p网页的hub可以表示为 x p = ∑ q ∣ p → q x q x_p=\sum_{q|p\to q}x_q xp=qpqxq

HITS算法跟PageRank最大的不同是,HITS是一个线上的query-based的算法。它只有在用户输入特定的topic之后,将包含该topic的所有网页列举出来,然后实时用HITS算法计算出Authority值最高的网页返回给用户,这种算法注定了处理的网页集不能太大。
在这里插入图片描述

3.1 HITS计算

跟PageRank类似,HITS算法也需要迭代计算状态,在收敛方程满足后停止迭代,而且HITS也可以用矩阵的方式进行计算,假设Authority矩阵为 X = < x 1 , x 2 , . . . , x n > X=<x_1,x_2,...,x_n> X=<x1,x2,...,xn>,Hub矩阵为 Y = < y 1 , y 2 , . . . , y n > Y=<y_1,y_2,...,y_n> Y=<y1,y2,...,yn>,A为邻接矩阵。那么这个迭代可以被表示为

  • 第一次迭代
    • X 1 → A T Y 0 X_1 \to A^TY_0 X1ATY0
    • Y 1 → A X 0 Y_1 \to AX_0 Y1AX0
  • 第二次迭代
    • X 2 → A T Y 1 → ( A T A ) X 0 X_2 \to A^TY_1\to(A^TA)X_0 X2ATY1(ATA)X0
    • Y 2 → A X 0 → ( A A T ) Y 0 Y_2 \to AX_0\to(AA^T)Y_0 Y2AX0(AAT)Y0
  • 第三次迭代
    • X 3 → A T Y 2 → ( A T A ) A Y 0 X_3 \to A^TY_2\to(A^TA)AY_0 X3ATY2(ATA)AY0
    • Y 3 → A X 2 → ( A A T ) A X 0 Y_3 \to AX_2\to(AA^T)AX_0 Y3AX2(AAT)AX0
  • 第四次迭代
    • X 4 → A T Y 3 → ( A T A ) 2 X 0 X_4 \to A^TY_3\to(A^TA)^2X_0 X4ATY3(ATA)2X0
    • Y 4 → A X 3 → ( A A T ) 2 Y 0 Y_4 \to AX_3\to(AA^T)^2Y_0 Y4AX3(AAT)2Y0

聪明的小伙伴已经发现规律了, X 2 n = ( A T A ) n X 0 X_{2n}=(A^TA)^nX_0 X2n=(ATA)nX0, Y 2 n = ( A A T ) n Y 0 Y_{2n}=(AA^T)^nY_0 Y2n=(AAT)nY0, 收敛与否基于 A A T AA^T AAT A T A A^TA ATA的值,能否用幂方法求得收敛。收敛条件是什么?假设它会收敛,收敛于 ( A A T ) n = x (AA^T)^n=x (AAT)n=x,一定有 ( A A T ) 2 x = x (AA^T)^2x=x (AAT)2x=x,又是喜闻乐见的特征方程!而且 A A T AA^T AAT是对称矩阵,n*n的实对称矩阵一定有 n n n各特征值(包括重根),所以是有解的。最终 x x x一定会收敛至特征向量处。为了保证 λ = 1 \lambda=1 λ=1,我们需要在每次迭代后对其进行正则化。这样就能通过幂方法迭代求得最终结果。

四、其他应用

除了搜索引擎,link-based ranking在其他领域也有被使用到。

4.1 引用矩阵Bibliometrics

搞科研的应该对一个概念很熟悉——影响因子(Impact factor)。影响因子可以用来评价一个期刊被引用数量,作为整个期刊的含金量的代表。假设 C n ( x , y ) C_n(x,y) Cn(x,y)为当年 x x x刊物引用第 n n n y y y刊物总次数, C n ( x ) C_n(x) Cn(x)为第 n n n x x x刊物的论文发文量总和,某刊物 x x x在第 n n n年的影响因子为 I F ( x ) = C n − 1 ( y , x ) + C n − 2 ( y , x ) C n − 1 ( y ) + C n − 2 ( y ) IF(x)=\dfrac{C_{n-1}(y,x)+C_{n-2}(y,x)}{C_{n-1}(y)+C_{n-2}(y)} IF(x)=Cn1(y)+Cn2(y)Cn1(y,x)+Cn2(y,x)

4.2 经济学

比较经典的是列昂惕夫生产函数。该模型可以用于均衡要素投入量的比例,使得供需达到平衡。因该模型列昂惕夫也获得了第五届诺贝尔经济学奖。

该模型规定某一个行业的投入和产出,以图和矩阵的形式表示其关系,用类似于PageRank的幂方法求得最终平衡点,是经典的线性代数问题。
在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值