Google Page Rank 算法

 

 

 

Google Page Rank 算法

0 声明

    以前做过一点搜索方面的事情,对搜索引擎有点了解,也听说过牛比的 page rank, 但是只闻其名,不明其意,最近无聊,学习一下。以下这些就是学习笔记了,其实就是网上咚咚的一个理解,抽取的过程,随便写写,自娱自乐。

    所以,我声明这个东西不是由我完全原创,也不是完全抄袭,其中有我的理解,也有别人的 idea, 既然这个咚咚只是自娱自乐,我也不必按照写论文那样费力气,把参考文献都查明白,别人如果要用我的,我也毫不在意。

 

1 背景

    大家知道,互联网是没有组织的,大家可以随便发布任何形式的文章,不管有没有人去看,就好像我现在写博客一样。当你需要找到对自己有用的消息时,就很困难了,因为 web 没有组织,所以没有人去给互联网做一个分类索引(好像图书馆的卡片),也没有人为互联网请一个图书馆管理员。

   

    所以 google 出现了,其实 google 不是最早的,但是是迄今为止最好的。

   

    google 从互联网上读取所有的文档,把他们转化成一种标准的格式,然后对每个文档进行分词,建立索引,存储成合适的 format. 用户输入要搜索的词,就可以找到包含这些词的文章了。就好像好多年前,我们去图书馆,翻卡片找书一样。上面这个 usecase 实践上包含了许多过程和假设:

    1 假设输入合适的词可以找到你需要的内容,这个假设在大部分情况下成立

    2 假设网上的内容可以被某种方法 index

    3 crawler 过程

    4 index 过程

    5 以及对这些过程的支持过程

   

    上面的分析漏掉了一个重要的过程,就是如何大海捞针。

    互联网上有数不清的网页(应该会有组织统计总数),但是组成网页内容的常用词我想不会超过几千个,有些次重复出现的可能性特别高,比如中文的“的”,英文的 "a", 等等,如果不把相关的信息组织排序就给用户呈现出 10 n 次方个重要度相同的网页,那么,搜索毫无意义。

    所以,我认为搜索的最核心问题,就是相关程度的排序问题。说白了,就是如何理解搜索的目的,找到最匹配的结果的问题。

 

2 人肉排序

    人肉排序是传统的,我认为也是最重要的方式,比如 IEEE 等科技文献检索,某些教授宣传的其论文被别人索引了 n 次,都属于人肉排序,以前好多搜索网站(分类信息检索)这么做,现在估计也有。

    说他是最重要的,是因为我们 google 出来的东西,最后一关也是通过人肉排序来确定最后的内容的。以后有机会研究一下人肉搜索的方法,也很有意义

    但是可以想象,机器排序很困难,机器很难理解两个词或者说两个概念的相关程度,因此也很难判断出那个网页和搜索的目标更加接近。比如,没有人的干预,我想机器很难明白国家主席和 hjt 是一个人,也很难分清楚 mimi 其实就是我家的猫,也可能他是你家的狗。

    就像前面所说,互联网是没有组织的,大家都在用,但是没有人管理,也没有人为他请管理员,就算有人愿意,也没有人有能力管理大海般的数据。所以机器排序在互联网这个 field 是必需的。

        

3 page rank 算法白话

       其实 page rank 算法的基本假设很简单,那就是如果大家都说你好,你就好。

就好像 BBS 的十大热门话题,就是回帖的人越多,排名就越高。如果把评 BBS 十大比作 page rank 算法计算重要度,就应该把每一个回贴看作一个网页,而且这个网页(回帖)有一条指向原贴的链接。如果回贴越多(指向原网页的链接越多),那么帖子(被指向的网页)分数越高,相对重要程度也就越高。

在具个例子,教授们如何现实自己的学术成果和造诣呢,他们会说我在SCI上发表了n篇文章,被引用了m次,而且有z次是一次条引用。从这段话,我们如何给此教授的成果打分呢?

   首先:一篇文章被引用的次数越多,此文章得分越高

   其次:被得分高的文章引用,此文章得分越高

   结果:次教授发表的文章越多,此人得分越高

    其实可以把教授比作网站,文章比作网页。 Page rank 就是根据这个原则来排序的

4 page rank 补充点公式

     前面说过的,我相信小学以上文化水平都能理解,不就是民主选举嘛,谁得到多的选票,谁就当第一。但是这样不能显示教授和博士们的水平,所以,现在是用一坨数学公式来把大家清晰的思维搞成一坨的时候了。

     请看下图,他模拟了 8 个网页之间的相互连接箭头表示引用。例如,网页 3 有多个链接,其中一个指向 2

          

现在按照上图这个假设,开始分析了。

p 为网页,那么 I(p) 就是 p 的重要程度,现在的问题就是如何计算出 I(p) 。假设网页 pj lj 个连接,如果其中有一个链接是指向 pi , 那么 pj 就贡献了 I(pj )/ lj 的重要度给了 pi, 也就是说, pi, 得重要度 I(pi, ) 就是所有贡献给他重要度值的和。

从上面的概念我们可以看出,如果想要求出一个网页的重要度,我们必须知道指向他的所有网页的重要度,这是个先有鸡还是先有蛋的问题,遇到鸡蛋问题,搞计算机的第一个想法就是递归,该一个递归的程序,以某种优先遍历,然后找到一个打断环的条件,就可以了。不过大家想象网页大概有几亿到几十亿,所以递归不可能,需要找到别的办法。

看看牛人用什么办法解决吧,创造一个矩阵 H

从上面矩阵可以看出,每一列的和是 1 (除了没有指向外面的连接)。

我们在创造一个 vector, 比如 I=[I(pi, )], 这个 vector 表示了 p1,p2,p3,p4,p5,p6,p7,p8 的重要程度,现在我们的问题就变成了 I=HI, 看到了吧,有点熟, I 就是 M 特征值为 1 的时候的特征向量,特征向量怎么求,想不起来,求特征向量的方法早就还给了线代老师,线代书呢,不是给了收破烂的,就是留在家里给妈妈看了。

还好,我们有 baidu, (A-Eλ)x= 0,x 就是特征向量。

       

5 如果更好的计算 I

数百亿个网页组成的大型矩阵,如何计算其特征向量呢,数学上有好多方法,但是特定问题的最好方法,就是把特定条件的约束加进来。实际上,一个网页平均有十个连接。

  /[ 
I^{k+1}={/bf H}I^k
 /]

6 google 为什么能成功

Google 的使命是整合全球的信息

   Google 是个神话,尤其是在互联网泡沫破灭以后, Google 是一个现实的神话。多少人,包括我,希望能够沿着他的道路,也发了大财。但是清醒的人都知道,这是不可能的。并不是每个人都会创新,也不是每个创新都会被卖个好的价钱。这是两个最大的困难,其他的小困难更不必说了。

      报纸电视上充满了创业的故事,某某人发明了什么,或者用一种新的商业模式,引来了风险投资,一夜之间变成了大款。我看,这种事情发生的概率和买体彩中了一等奖的概率差不多,比天上掉下来一大饼扎到的概率小的多。但是这种事情的影响力却特别大,足以点燃我们这些年轻人的梦想。

      不管他真的假的,让我们继续吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值