初识机器学习:PageRank 算法

524 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情

上一篇(06. 初识机器学习:Louvain 社区发现算法 )中,介绍的 Louvain 用于在网络中发现群组,群组代表了在一个网络中节点直线相互作用比较集中的区域,有时候,我们需要在一个网络中找到一些「影响力」突出的节点,此时,PageRank 就能够派上用场。

PageRank 和网页排名

PageRank 算法来自 Google,可以说,Google 用它重塑了搜索引擎技术。PageRank 名称中的 Page 有网页、页面的意思,也是 Google 创始人 Lary Page 的姓氏,Rank 就是排名的意思。顾名思义,它的目标就是给搜索引擎搜索到的网页进行排名。

佩奇和布林在发明 PageRank 算法时的想法就是:整个互联网就是一张大图,每个网站就像一个节点,每个网页的链接就是一条边。

也就是说,整个互联网中的网页和链接组成了由节点和边构成的网络,网页排名算法就是在这个网络里找出占主导地位的节点。

因此,这个算法并不仅仅只能用于对网页进行排名。

PageRank 的原理

PageRank 对网页进行排名时,并不是根据网页的内容而决定的,而是根据链接到这个网页的来源网页的排名来决定的,也就是说,这个算法的关注点并不在于每一个节点本身,而是把整个网络看作一个整体。

假设每个网页有一个权重值,权重值越高的网页排名越靠前,每个网页的权重值取决于链接到这个网页的权重值之和,当计算出每一个网页的权重值之后,就可以对网页进行排名。

但是,想要计算一个网页的权重值,就需要链接到当前网页的源网页的权重值,并且网页之间有很多相互链接或者循环链接的关系,这导致这个算法没有一个初始状态。

解决办法就是,在最开始,给所有网页一个相同的权重,算出每一个网页的权重和排名,再根据这个结果,进行第二次迭代,得到最终的排名。(其实,只要用户从一个网页跳到另一个网页的比例不变,足够的迭代次数之后,任何初始状态都可以得到接近真实排名的结果)。

简单模拟

我们通过以下的步骤来简单模拟:

  1. 有上图中的4个节点代表4个网页,它们之间的边的指向和数字代表从一个网页跳转到另一个网页的比例,比如,访问 M 的人,有 1/3 会跳转到 J,有 2/3 会跳转到 D。
  2. 将100个访问者平均分配给图中的每一个网页,如下图,4个节点,每个有25个访问者。访问者的个数,可以近似看作它们受欢迎的程度,也就是排名情况。
  3. 模拟一次用户跳转,根据比例将网页当前的用户分配给跳转目标网页。
  4. 得到一轮迭代的结果之后,在执行相同的操作,直到每个网页的数值不再变化。这样,访问者越多,排名就越靠前。