一般描述
PageRank算法是谷歌创始人佩奇和布林的博士论文中提出的算法,然后他们利用这个算法成立了谷歌,一个当前(2019年7月)市值最高的公司之一。换句话讲,人类历史上最厉害的算法或许不知道是哪个,但是最有“钱途”的算法无疑就是PageRank了。
PageRank算法提出来之前,人们在互联网上浏览网页,基本上只有三种途径,一种是朋友的推荐或者自己的收藏夹,或者雅虎这样的黄页,在某种意义上雅虎黄页可以算作雅虎的推荐或者收藏夹,第二种是通过一个网页内的超链接跳转到其他网页,还有第三种是通过关键词匹配(PageRank算法之前的搜索引擎)来展示备选网页。无论哪一种方式都有缺陷,最关键的缺陷是扩展性几乎为0,由于互联网的开放性和自由性,每天都有无数的网页创建和关闭,靠人力维护收藏夹(雅虎黄页)的成本太高难以为继,如果通过关键词展示网页又无法将重要的网页放在列表的前面让上网者重点关注。
PageRank算法正是为了解决网页的开放性和人们寻找信息的迫切性之间的矛盾提出来的算法,PageRank算法通过网页之间的拓扑结构给每个网页节点打分来给予每个网页不同的权重,然后在符合用户搜索关键词的网页列表中按照重要性从高到低展示出来。由于PageRank算法是无监督的挖掘算法,所以其人工标注的成本为0,也不需要特别维护,所以特别适合互联网这样的开放领域。
下面我们就来讲一讲PageRank算法到底是如何给网页打分的。
朴素的原始想法
一个网页,通常会有其他的网页的链接以帮助浏览者拥有更好的阅读体验,也会有别的网页引用其地址。于是我们有了一个朴素的想法,一个网页,会把的得分传递给他所引用的页面。这里我们做一个假设,假设一个浏览者,会随机的打开页面中的一个链接进入下一个页面,这样每一个网页会把浏览者传递给其引用的网页,我们把网页得分就想象成浏览者的数量。
像上面描述的那样,我们有了网页得分的公式:
如果结点1到结点2之间没有边相连,则结点1无法将得分传递给结点2,即结点2的PR得分公式中结点1的系数为0。
例如:
公式的矩阵表示
我们把所有网页得分列在一起组成列向量,记做P,并把公式右边的系数组成的矩阵记作T,这样,我们就可以把网页公式的写作:
P = T P P = TP