机器学习/数据挖掘——PageRank

PageRank

Describe

以前的搜索引擎检索和排序网站都是内容相似度检索,在1996年前后,由于两个原因:

  • 网页的数量迅速增加,相关网页数量很大,从大量相关的网页中选出10-30个计算量很多大。
  • 容易产生垃圾网页。都过网页中不断重复关键词,从而提高网站的相关度。

所以通过超链接进行排序的算法被发明出来。(April,1998 Sergey Brin and Larry Page )

Theory

定义

In_links: 其他页面指向该页面的超链接数量,通常来自同一个网站的超链接不被考虑。
Out-links: 该页面指向其他页面的超链接,通常相同的网站不会被考虑。

基于的观点:

  • 一个网页所含in-links越多,说明这个网站有更大的威望(prestige)
  • 一个有很大威望指数(prestige scrores)的网页指向网页i时,网页i也会因此提升他的威望指数。

推导

把各个网页的关系抽象为图 G=(V, E),

V 是结点集合,每个结点代表一个网页
E 是边的集合,有向边。每个有向边代表一个超链接。

根据声望等级(prestige),可以确定每个网页的重要程度就是所有指向这个网页的各个prestige加和。每个网页可能会指向许多不同的网页,所以这个网页prestige score应该平分。网页i的prestige scores为

P ( i ) = ∑ ( j , i ) ∈ E P ( j ) O j ( 1 ) P(i)=\sum_{(j,i) \in E} \frac{P(j)}{O_j} \quad (1) P(i)=(j,i)EOjP(j)(1)

(j,i)代表有j页面指向i页面的链接。
Oj是j页面中所有超链接的数量。
若有n个页面,就要计算n个多项式((1)式)。所以将这个n个多项式抽象为矩阵运算

P = ( P ( 1 ) , P ( 2 ) . . . P ( n ) T P=(P(1),P(2)...P(n)^T P=(P(1),P(2)...P(n)T, P是一个列向量。第i个元素代表页面i的prestige scores(声望值)
令矩阵A为

$$
A_{i,j}=
\begin{cases}
\frac{1}{O_i} \quad 如果(i,j) \in E, 也就是从i到j有路径 \
0 \quad 其他

\end{cases}
$$
那么(1)式就可以写成:

P = A T P ( 2 ) P=A^TP \quad (2) P=ATP(2)

A 是nxn的矩阵,每一项 A i , j A_{i,j} Ai,j代表i页面到j页面的重要程度
A T A^T AT就的每一项代表j页面到i页面的重要程度

(2)式是不是有些眼熟,线性代数中特征值和特征向量的关系:

A ξ = λ ξ A\xi=\lambda \xi Aξ=λξ

ξ \xi ξ为A的特征向量, λ \lambda λ为特征值。
所以(2)中特征值为1,P为特征向量。这是一个环形定义(P等于本身进行一些线性变换,不断迭代出最优解。),所以使用迭代算法能够解决它。如果满足一些条件,1是最大特征值并且P向量是条件向量,使用幂迭代算法(power iteration)就能够找到P向量。

那么需要满足什么条件呢?

    1. A是随机矩阵
    1. A最简
    1. A非周期

这三个条件从何而来?
等式(2)本身能够基于马尔科夫链(Markov chain)推导出来。所以一些定理能够被使用,这三个条件的来源。

我们的A矩阵是从网页链接中提取出来的,并不符合这些条件。如和处理能够符合这三个条件是解决问题的关键。

在马尔科夫链模型中,在我们所定义的图G中,每个结点被认为是一种状态,节点和节点之间的超链接是转换。两个结点/网页之间有超链接,那么状态转换才成为可能。这样的模型把浏览者随机浏览的过程当成是一种状态转换的过程。

条件1解决

再回到这三个条件中,对于条件1,马尔科夫链的变换矩阵(随机矩阵)要求每一行都是非负实数,且每一行的加和为1。显然,对于某些网页并不指向其他网页的行来书,所有的都是0,加和不可能为1。
要解决这个条件的处理方法很简单,就是对于A矩阵中全部为0的行,将0替换为 1 / n 1/n 1/n。n为网页的总数。

这个解决方法基于这样的假设:从没有超链接的页面去其他任何界面的概率都是相等的。

条件2&3

条件2:A矩阵应该是最简矩阵

A如果不是最简矩阵,意味着我们定义的图不是全连通的。

有向图强连通是任何两个点之间都有到达的路径(可能经过其他点)

条件3:A矩阵应该是非周期的

周期性定义: 如果状态i 通过k次变换仍能变回状态i(k是所有从i状态变回i状态中最少变换次数),那么是周期的。
如果所有的状态都是非周期,那么马尔科夫链就是非周期的。

事实上,这两个问题在我们的模型中都不满足。但是我们可以使用一个方法解决两个问题:

  • 我们给每个页面到其他页面都增加一个链接
  • 给我们增加的链接一个最小可能变换的可能性,通过参数d来控制。
    假设所有网站都相互独立,之间没有链接,那么我们的矩阵A将全部默认为最小值,而不是一开始的0:

A 初 始 值 = ( 1 − d ) E n , 当 所 有 页 面 都 相 互 独 立 A_{初始值}=(1-d)\frac{E}{n} , 当所有页面都相互独立 A=(1d)nE,

E是单位矩阵,全为1

由此,我们之前的公式(2)将变成:

P = ( ( 1 − d ) E n + d A T ) P ( 3 ) P=((1-d)\frac{E}{n}+dA^T)P \quad (3) P=((1d)nE+dAT)P3

前提是A已经通过处理符合条件1

通过缩放(3),我们可以得到:

P = ( 1 − d ) e + d A T P ( 4 ) P=(1-d)e+dA^TP \quad(4) P=(1d)e+dATP4

(3)式括号展开后为 P = ( 1 − d ) E n P + d A T P P=(1-d)\frac{E}{n}P+dA^TP P=(1d)nEP+dATP, 我们引入 ( 1 − d ) E n (1-d)\frac{E}{n} (1d)nE的意义是连接到其他每个页面的最少可能性,这一项乘以P所得结果和直接在最终结果上加上最小可能性等价。e代表单位列向量。
对于第一项, P i P_i Pi是一个相对值,

P ( i ) = ( 1 − d ) + d ∑ j = 1 n A j i P ( j ) P(i)=(1-d)+d\sum_{j=1}^{n}A_{ji}P(j) P(i)=(1d)+dj=1nAjiP(j)
也就是:

P ( i ) = ( 1 − d ) + d ∑ j , i ∈ E P ( j ) O j P(i)=(1-d)+d\sum_{j,i \in E} \frac {P(j)}{O_j} P(i)=(1d)+dj,iEOjP(j)

d被称为阻尼系数。可以从0.85左右尝试

算法描述

初始值:
P=e/n
k=1

循环:
    $P=(1-d)e+dA^TP_{k}$
    k=++;
结束:两次P差值向量<设定误差
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值