模糊搜索算法之浅谈PageRank(1)
泻药,人在美国刚下飞机
在知乎看到这么一个问题
因为自己小组是做电商平台的,在对商品进行搜索的时候自然也会用到模糊搜索算法,所以对这个问题比较感兴趣,然后看到了这么一个回答
搜索引擎如何做到模糊匹配? - 陈运文的回答 - 知乎 https://www.zhihu.com/question/22855572/answer/288432579
哇,不明嚼栗,有很多不懂的地方,想一个个地了解一下(才不是开坑),首先就是从PageRank开始
搜索引擎的根本用途在于根据用户的查询,快速而准确地从网络的海洋中找到用户最需要的网页。这是针对网页的一类特殊的信息检索过程。它主要有以下两个特点:
- 搜索的数据量相当大
- 搜索的数据之间质量参差不齐
因此,基本的解决思路是根据查询,对这些网页进行排序,按照对用户搜索目的的判断,将最符合用户需求的网页依次排在最前面。也就是说,搜索引擎要解决的最主要问题是对网页排序模型的设计。
佩奇和布林(google的创始人!不是你们想的那个佩奇)两个人开始这项研究的缘由来自于导师的提议,因为当时搜索引擎的发展遇到了瓶颈——缺乏合理的排序算法。在1998年之前(也就是PageRank正式问世的那一年之前),即便是当时最先进的搜索引擎,也是主要依靠以关键词词频为核心的排序技术(这一点在文档检索中保持了旺盛的生命力,我们到现在还主要依靠”TF(词频)×IDF(逆向文件频率)TF(词频)×IDF(逆向文件频率)”模型为搜索结果排序)。但是在搜索引擎技术中,依赖于词频的模型有其天然缺陷:网页排序的结果仅仅考虑了基于关键词的相关度判断,而未考虑网页本身的质量。显而易见的是,海量的网页来自不同的制造者,质量一定是参差不齐的。可以想象,如果有一些低质量的网页对于某些词的词频很高,这相当于是一个人一直在无意义的絮叨某句话,虽然毫无信息量可言的垃圾,却在基于关键词的模型下如鱼得水,一旦其中某个词被查到,立即能“崭露头角”。这一点在当时正是阻碍搜索引擎发展的最大困难。比如,令人感到讽刺的是,在1997年,堪称早期互联网巨子的当时四大搜索引擎在搜索自己公司的名字时, 居然只有一个能使之出现在搜索结果的前十名内,其余全被这种垃圾网页挤到后面去了[1]。
总结一下,网页排序的任务中,最核心的难点在于判别网页质量。如果网页数量很少,这件事就简单了,靠人工赋予其得分即可,但实际情况是:互联网山网页如大海般浩瀚,且新的网页不断产生,旧的网页也在不停变化,这是人工所不可能完成的任务。我们只能依靠计算机和算法,自动评估网页质量。于是,当时正在读博的佩奇和布林想到了学术论文的质量判别方法:依靠文章的引用情况。一篇论文的好坏当然与它的引用直接相关,有多少文章引用,什么样级别的文章在引用,才是判断一个文章质量最“靠谱”的标准。这一点放在网页排序上也是一样,论文的引用相当于就是网页的链接,不论某个网页再怎么在关键词方面做“手脚”,没人愿意链接你,那还是白扯。于是,作为一门学问的“链接分析”就此产生了,这一点也是PageRank算法最基本的原理。
链接分析
根据上面的分析,我们可以将互联网上的网页模拟为一个节点,而这个网页的“出链”看做是指向其他节点的一条“有向边”,而“入链”则是其他节点指向这个节点的有向边。这样整个网络就变成了一张有向图。事情到此就显得容易解决了,因为我们用图论中最普通的有向图模型,完成了对此类问题的建模。具体的说,网页质量的评估是遵循以下两个假设的:
- 数量假设:一个节点(网页)的入度(被链接数)越大,页面质量越高
- 质量假设:一个节点(网页)的入度的来源(哪些网页在链接它)质量越高,页面质量越高
但是现在还面临着一个问题,就是既然一个网页A的质量与链接它的页面质量相关,而链接A的那些页面(我们记为B)的质量又与链接B们的页面相关。以此类推下去,好像进入了一个无穷无尽的死循环。为了解决这个问题,两颗聪明的大脑又想到,也许可以用数学中随机过程的“随机游走模型”解决这个问题。随机游走模型又称“醉汉模型”,指的是事物当前的状态只与其上一个状态有关,而与其再之前的状态无关。就好比一个醉汉,他这一步走到哪里只跟他上一步在哪里有关,这有点接近于物理学中常讲的“布朗运动”。用户上网也可以看做是一个类似的过程。我们可以假设,初始状态时,用户访问所有页面的概率都是等大的,而每次访问过后,用户会依照此时该页面中给出的链接以相等概率访问链接所指向的页面,那这就好比是用户在刚刚我们所说的有向图上做“随机游走”。所以,通过对这种随机游走的概率分析,我们就能得到用户在上网时,停留在哪一个网页上的概率要大一些,概率越大的,表示其质量越高。
PageRank
假设我们现在有这么一张网络图,ABCD分别表示一个网站,箭头表示可以链接到的下一个网站
在一开始,用户访问每个网站的概率都是一样的,即访问ABCD的概率都是1/4,(1/4,1/4,1/4,1/4)就是初始概率向量,记为V0
对于A,它可以链接到BCD,所以其概率向量是(0,1/3,1/3,1/3),同理我们可得BCD的概率向量分别是(1/2,0,0,1/2)、(1,0,0,0)、(0,1/2,1/2,0)
我们将这些向量转置后合起来,就得到了一个随机过程中经典的概率转移矩阵,记为T:
将T和V0相乘,我们得到了经过一次跳转后访问到各网站的概率向量V1:
由此类推,我们得到了跳转n次后的概率向量Vn的计算公式:
佩奇和布林发现,当n→+∞,且概率转移矩阵T满足以下3个条件时,limn→+∞Vn最终收敛,保持在一个稳定值附近。
- T为随机矩阵。即所有T[i][j]≥0,且的所有列向量的元素加和为1,∑ni=1T[i][j]=1
- T是不可约的。所谓不可约是说T所对应的图是强连通的,即图中任何一个节点都可以达到其他任何一个节点,它要求概率转移矩阵不存在某些特殊情况,比如某个列向量都为0,即有一个网页没有链接到任何其他网页,我们把这类情况又称为终止点;或者是在概率转移矩阵的主对角线上,存在有一个元素为1的情况,即这个网页链接只链接它自己,我们把这类情况又称为陷阱。这两类特殊的情形在后面会详细说。
- T是非周期的。所谓周期性,体现在Markov链的周期性上。即若A是周期性的,那么这个Markov链的状态就是周期性变化的。因为A是素矩阵(素矩阵指自身的某个次幂为正矩阵的矩阵),所以A是非周期的
比如上面这个例子中,limn→+∞Vn=limn→+∞Tn⋅V0=(3/9,2/9,2/9,2/9)T
这表明,经过足够多次的网页跳转,用户停留在网页A的概率要比停留在B, C, D的概率高,而后三者基本是等概率的。经过这样的计算得到的每个网页的概率值也叫PR值,是评估网页质量的依据。也就是说,在我们使用搜索引擎时,在保持网页与查询一定相关度的基础上,PR值可以提供非常不错的排序依据