本文主要内容有词项作弊、PageRank原理以及如何解决复杂Web结构带来的问题。
词项作弊
这里要说一点历史,早期的搜索引擎(谷歌出现之前)大部分都是利用网络爬虫(第一次知道爬虫有这么久的历史)从Web上抓取数据,然后通过倒排索引的方式列出每个页面所包含的词项。倒排索引是一种很容易从给定词项找到它所在的所有网页的数据结构,简单理解就是我们一般都是从key出发去查找Value,这里在添加了一些附加信息之后可以让我们从value来查找Key。
一般词项会出现在网页头部,这会增加网页的相关性,同时,词项的出现次数越多,网页的相关性也会增加。下面引出词项作弊:
先给出定义:欺骗搜素引擎让它们相信一个本来不相关的页面相关的技术。
具体是怎么做的呢?前边提到,页面的相关性是和网页头部的词项及其出现的次数紧密相关的,那么,我们就可以在我们的网页中添加一个搜索率很高的词项,并且重复很多次,更有甚者,直接将某个关键词搜索结果的第一个网页直接复制过来,然后将颜色设置为背景色便可做到伪装。
为了对抗词项作弊,谷歌提出了两项创新:
- 使用了PageRank技术来模拟Web冲浪者的行为,这些冲浪者从随机页面出发,每次从当前页面随机选择出链前行,该过程可以迭代多次。最终,这些冲浪者会在页面上汇合。较多冲浪者访问的网页的重要性被认为高于那些较少冲浪者访问的网页。谷歌在决定查询应答顺序时,会将重要的网页排在不重要的网页前面。
- 在判断网页内容时,不仅只考虑网页上出现的词项,还考虑指向该网页的链接中或周围所使用的词项。值得注意的是,虽然作弊者很容易在它们控制的网页中增加虚假词项,但是在指向当前网页的网页上添加虚假词项却并不那么容易,除非他们控制了这些网页。
PageRank原理
定义:PageRank是一个函数, 它对Web中的每个网页赋予一个实数值。它的意图在于,网页的PageRank越高,那么它就越“重要”。
假设我们有4个网页,组成了如下的有向图:
我们定义web转移矩阵来描述随机冲浪者的下一步访问行为。如果网页数目为n,则该矩阵M是一个n行n列的方阵。如果网页j有k条出链,那么对每一个出边链向的网页i,矩阵第i行第j列的矩阵元素mij值为1/k。而其他网页i的mij=0。
针对上图,我们可以得到如下转移矩阵:
可以看出,M是一个马尔科夫矩阵,下面对马尔科夫矩阵做简要说明:
一个矩阵是马尔科夫矩阵,那么它满足以下两条性质:每个元素大于等于0
- 每一列和为1
而且,马尔科夫矩阵的其中一个最大的特征值是1,其他特征值的绝对值小于1。
我们继续,随机冲浪者位置的概率分布可以通过一个n维向量v来描述,其中向量中的第j个分量代表冲浪者处于网页j的概率,该概率就是理想化的PageRank函数值。
当前概率分布为v时下一步的概率分布为x=Mv。
推导:
(哎呀,字真的难看)
那么我们假设随机冲浪者处于n个网页的初始概率相等,即为n分之一,则有
可见,在马尔科夫矩阵的作用下,概率分布向量逐渐趋于稳态。
解决复杂Web结构带来的问题
但是,当前web结构不是都像上例那么简单,而是呈蝴蝶结型结构。
其中,scc为强连通子图
IN子图:可到SCC但无法从SCC到达
OUT子图,和IN子图相反
卷须子图,只能由IN子图或OUT子图到达
管道:有IN子图可达,不经过SCC直接到OUT子图。
因为上述结构中有一些违背了马尔科夫迭代过程收敛到极限值所必须的假设条件。
- 图是强连通图
- 图不存在终止点
为了解决上述问题,我们对PageRank进行修改,要避免如下两个问题: - 没有任何出链的终止点问题。到达该网页的冲浪者会消失,这会造成所有能到达终止点的网页最终没有任何概率。
解决方案:将终止点及其入链删除,递归进行,直到图中没有终止点。
- 采集器陷阱,即存在这样的一组网页,虽然他们都有出链但从不链向这组网页之外的其他网页,可以理解为局部闭环。
解决方案:抽税法
允许每个随机冲浪者能够以一个较小的概率随机跳转到一个随机网页,修改后新的迭代公式为: V1=βMv+(1-β)e/n
其中:
β是一个选定的常数,通常在0.8到0.9之间,
e是一个所有分量都为1维数为n的向量,
βMv表示随机冲浪者以概率β从当前网页选择一个出链前进。
参考书籍:《Mining of Massive DataSets》