Google搜索的PageRank算法

Posted by JoselynZhao on April 13, 2019

背景和问题

搜索引擎工作流程

  1. 网页信息检索(录入关键字)
  2. 匹配搜索请求(在索引数据库里)
  3. 处理网页(去掉重复信息,网页归类,计算网页的重要程度)
  4. 输出搜索结果(生成相应网页的有关的摘录信息,输出结果)

问题

  1. 海量信息的筛选
  2. 内容排序

【pagarank算法之前】根据访问量统计结果来进行排序。 存在的问题

  1. 抽样统计,结果不准

Google搜索的核心算法

  1. PageRank 用于评价网页重要性,通过该算法,对各个网站进行排名。搜索时按排名输出。
  2. PageRank算法中使用的数学知识包括:正矩阵性质、特征值和特征向量、幂迭代算法、Gauss-seidel迭代算法等。
  3. PageRank得分是介于0和1之间的一个数,得分越大表示网页越重要。

PageRank算法思想简介

  1. 主要思想:越重要的网页,页面上的链接质量也越高,同时越容易被其他“重要”的网页链接。
  2. 基于假设关系。“许多优质的网页中超链接的网页,必定也是优质网页。”(抛开重要性,利用网页间的链接关系),而重要性是是由网页被访问的概率大小来刻画的。
  3. 基于这样一个理论: 若网页B上有网页A的链接(称B为A的导入链接),说明B认为A有链接价值,是一个“重要”的网页。 当网页B级别(重要性)较高时,则网页A可以从B分得一定的级别(重要性),并平均分配给A网页上的所有导出链接。

PageRank-转化为线性代数问题

点击无限次链接之后,每个网页的权值不再发生变化。 权值反映重要性,网页据此划分重要性等级。

将网页之间的链接关系表示为对应有向图的链接矩阵。 (只含有0和1) 将链接矩阵进行归一化处理,每一列元素加到一起等于1. $a_{ij}$表示用户从j网页跳转到i网页的概率。

指向网络i的权值之和 $\sum_{j=0}^{j=n} a_{ij}$要与网页等级值$x_i$成正比。 假设共同的比例系数为$\lambda$. 问题转化为求解特征值$\lambda$为1时的特征向量。(等级在分配的过程中 不流失,不增加)。

PageRank的随机浏览模型

Rank leak

等级泄露问题。 一个独立的网页A如果没有外出的链接就会产生等级泄露,迭代的过程总A的权重没有被分配出去,不断流失,最终导致各个网页的权值为0.

Rank Sink

等级沉没问题。 整个网页中的一组紧密链接成环的网页没有外出链接就会产生等级沉没,迭代过程中网页A的权值在第一次被分配出去了之后,就变为0,从此不再参与计算,其余网页的权值陷入循环状态。

解决以上两个问题:引入变量p(阻尼系数) 意义在于:网页之间可以随机的跳转。 公式更新: E是元素全为1的矩阵,N是所有网页数量

PageRank计算

  1. 邻接矩阵。(是否链接)
  2. 转移概率矩阵。(归一化) $c_j$表示网页j的跳出值之和。
  3. 85%和15%。(修整状态转移矩阵)15%随机

  4. 页面的最终PageRank值。 x表示在极限状态下(转移次数趋于无穷)下各网页被访问的概率分布;$x_i$表示第i个网页的被访问的概率。显然概率越大其重要性越高是合理的。 其分量$x_k$应满足方程: 从另外一个角度看,网页j将它的PageRank值$x_j$分成了$c_j$份,分别投给了它的链出网页,网页k的PageRank值$x_k$就是网页投给网页k的最终值。

PageRank算法的缺点

  1. 没有区分站内导航链接。
  2. 没有过滤广告链接和功能链接(“分享到微博”)。
  3. 对新网页不友好(新网页的链入少)。

TrustRank算法

【针对PageRank算法的缺点而设计】

TrustRank算法的工作原理

先人工去标识高质量的页面(种子页面)。 TrustRank算法给出每个网页的TR值 ,将PR值和TR值结合起来,更准确的判断网页的重要性。