1、Google 的 PageRank1、入链对计算页面级别的影响入链总是能增加当前页面的级别,尤其当前页与其下级页面构成回路时,这种贡献更大。如右图例,设 ABCD 各页初始级别为 1,阻尼系数为 0.5,PR(X)/C(X)10。则易算出 PR(A) = 19/3 = 6.33PR(B) = 11/3 = 3.67PR(C) = 7/3 = 2.33PR(D) = 5/3 = 1.67 如果 A 不在回路上,则只能得 0.5*10=5 的收益。阻尼系数越大,页面级别的收益越大,且整个回路上都能收到更大的收益(即入链收益更能平均地分布到各个回路页面上。针对上例,将阻尼系数改为 0.75,则有 P
2、R(A) = 419/35 = 11.97PR(B) = 323/35 = 9.23PR(C) = 251/35 = 7.17PR(D) = 197/35 = 5.63 除回路上各个页面的级别值明显增大外,PR(A)/PR(D)的值敢明显减少了。入链对整个回路上所有页面的级别值的增加之和,可以由下面这个公式得出. (d / (1-d) (PR(X) / C(X) 这个公式,可以由 简单推导出。2、出链对计算页面级别的影响增加出链不会影响整个 web 的总级别,但一个站点失去的级别值等于链到的站点的增加值之和。对于两个封闭的站点,从一个站点链上另一个站点时,增加的和减少的都是(d(/(1-d)
3、(PR(X) / C(X).如果这两个站点互相链接,则此值减少。用随机冲浪模型可以解释这种现象,就是出链的增加,减少了用户访问站内页面的概率。举例如图,设阻尼系数为 0.75,则 PR(A) = 0.25 + 0.75 PR(B)PR(B) = 0.25 + 0.375 PR(A)PR(C) = 0.25 + 0.75 PR(D) + 0.375 PR(A)PR(D) = 0.25 + 0.75 PR(C) 得:PR(A) = 14/23PR(B) = 11/23 PR(C) = 35/23PR(D) = 32/23 PR(A)+PR(B)=25/23PR(C)+PR(D)=67/23PR(A
4、)+PR(B)+PR(C)+PR(D)=92/23=4Page 和 Brin 将这样的链接称为悬摆链,它链到页面没有出链。悬摆链对页面的级别计算产生负面影响。如例,阻尼系数为 0.75. PR(A) = 0.25 + 0.75 PR(B)PR(B) = 0.25 + 0.375 PR(A)PR(C) = 0.25 + 0.375 PR(A) 得:PR(A) = 14/23PR(B) = 11/23PR(C) = 11/23 PR(A)+PR(B)+PR(C)=36/233据 Page 和 Brin,Google 在索引页面时,悬摆链的量很大,主要是由于限制robot.txt 的限制及索引了一些
5、没有链出的文件类型如 PDF 等。为消除这种负面影响,google 在计算级别时,将此类链接从数据库里去掉,在计算完毕后,再单独计算悬摆链所链到页面。由此可见,PDF 类的文件还是可以放心地在网上发布的。 3、页面数量的影响先看例子。阻尼系数为 0.75,PR(X)/C(X)=10,则 PR(A) = 0.25 + 0.75 (10 + PR(B) + PR(C)PR(B) = PR(C) = 0.25 + 0.75 (PR(A) / 2) 得:PR(A) = 260/14PR(B) = 101/14PR(C) = 101/14 PR(A)+PR(B)+PR(C)=33;增加页面 D;PR(A
6、) = 0.25 + 0.75 (10 + PR(B) + PR(C) + PR(D)PR(B) = PR(C) = PR(D) = 0.25 + 0.75 (PR(A) / 3) 得PR(A) = 266/14PR(B) = 70/14PR(C) = 70/14PR(D) = 70/14 PR(A)+PR(B)+PR(C)+PR(D)=34增加页面后,所有页面的级别值之和增加了 1,A 页略有增加,而 B、C 则用大幅下降。再看右边的例子,假定同上。 PR(A) = 0.25 + 0.75 (10 + PR(C)PR(B) = 0.25 + 0.75 PR(A)PR(C) = 0.25 +
7、0.75 PR(B) 得:PR(A) = 517/37 = 13.97PR(B) = 397/37 = 10.73PR(C) = 307/37 = 8.30 增加页面 D:PR(A) = 0.25 + 0.75 (10 + PR(D)PR(B) = 0.25 + 0.75 PR(A)PR(C) = 0.25 + 0.75 PR(B)PR(D) = 0.25 + 0.75 PR(C) 得:PR(A) = 419/35 = 11.97PR(B) = 323/35 = 9.23PR(C) = 251/35 = 7.17PR(D) = 197/35 = 5.63 增加页面后,所有页面级别增加了 1,但
8、每个页面的级别值减少了,这是由于新加页面分享了入链代来的值。从这个结果看,增加页面减少了已有页面的级别值,露了 google 算法青睐小站点的特点。当然,大站点也会因内容丰富而吸引其它站点的出链而得以级别值增加。 3、针对搜索引擎优化的级别分布先看两个列子,阻尼系数为 0.5,PR(X)/C(X)=10; BC 之间无链接时:PR(A) = 0.5 + 0.5 (10 + PR(B) + PR (C)PR(B) = 0.5 + 0.5 (PR(A) / 2)PR(C) = 0.5 + 0.5 (PR(A) / 2) 得PR(A) = 8PR(B) = 2.5PR(C) = 2.5BC 之间互相
9、链接时:PR(A) = 0.5 + 0.5 (10 + PR(B) / 2 + PR(C) / 2)PR(B) = 0.5 + 0.5 (PR(A) / 2 + PR(C) / 2)PR(C) = 0.5 + 0.5 (PR(A) / 2 + PR(B) / 2) 得:PR(A) = 7PR(B) = 3PR(C) = 3 当 BC 间互链时,虽然减少了 A 的级别,但 BC 都增加了。这符合优化站点所有页面而非只主页的优化思路,因为只有每个页面的级别都提高了,当有检索词命中这些页面时,它们才能排在前面。这种优化的方法也很明显了,就是尽可能地在所有页面间平均分布入链的贡献,各低级页面要增加互链
10、。 4、只要不影响易用性,尽可能地将所有出链集中在一个或几个低级页面中,可以有效地降低出链对页面级别计算的负面影响。看列子:阻尼系数为 0.5,PR(X)/C(X)=10; BCD 都有出链时:PR(A) = 0.5 + 0.5 (PR(B) / 2 + PR(C) / 2 + PR(D) / 2)PR(B) = PR(C) = PR(D) = 0.5 + 0.5 (PR(A) / 3) 得:PR(A) = 1PR(B) = 2/3PR(C) = 2/3PR(D) = 2/3 出链集中于 D 时:PR(A) = 0.5 + 0.5 (PR(B) + PR(C) + PR(D) / 4)PR(B
11、) = PR(C) = PR(D) = 0.5 + 0.5 (PR(A) / 3) 得:PR(A) = 17/13PR(B) = 28/39PR(C) = 28/39PR(D) = 28/39 从结果看,出链集中后,ABCD 各页面的级别都上升了。 5、链接交换增加了实施交换的页面的级别,却减少了其它页面的级别。如图,阻尼系数为 0.5,PR(X)/C(X)=10; 交换前,PR(A) = 4/3PR(B) = 5/6PR(C) = 5/6 PR(D) = 4/3PR(E) = 5/6PR(F) = 5/6 交换后;PR(A) = 0.5 + 0.5 (PR(B) + PR(C) + PR(D
12、) / 3)PR(B) = PR(C) = 0.5 + 0.5 (PR(A) / 3)PR(D) = 0.5 + 0.5 (PR(E) + PR(F) + PR(A) / 3)PR(E) = PR(F) = 0.5 + 0.5 (PR(D) / 3) 得PR(A) = 3/2PR(B) = 3/4PR(C) = 3/4PR(D) = 3/2PR(E) = 3/4PR(F) = 3/4 这情况恰好与增加站内互链的效果相反。由此,当需要对主页进行针对某一关键词的优化时,才取交换链接是可取的。例中级别值的重新分布,更基本的前提是两个站点中参考交换的页面互相为对方提供的级别值是相等的。如果一个站的某个
13、页面级别高或少出链,则这个站所有页面的级别会降低。这儿一个重要的影响因素是站点页面的数量。当一个站点的页面更多时,有更多的入链级别值被分布到站点的其它页面中,因而参考交换的页面不能提供更多贡献给对方。6、很多针对搜索引擎做网站优化的专家,认为 google 给一些特殊站点以特定的级别而不是按前述算法进行计算,这些网站的级别很有可能来在 Yahoo 或 ODP(Open Directory Project)。Lawrence Page 在他们的专利说明中,提到随机冲浪模型中,用记不愿继续点击时,很有可能借助 Yahoo 的目录或 ODP 到另一个站点去。由于前述的算法,无论初始的级别值如何,经过
14、足够次数的迭代最终结果都是一样的,所以对这些特殊站点可能采用下述的公式。 PR(A) = E(A) (1-d) + d (PR(T1)/C(T1) + . + PR(Tn)/C(Tn) 从另一个角度来看,如果给页面赋一个跟其实际级别相近的初始值,可以明显减少迭代次数。 7、影响页面级别的其它因素在 Lawrence Page 和 Sergey Brin 关于 PageRank 的论文发表以后,除了 web 的链接结构以外,还有没有别的因素被加到 PageRank 的算法当中曾经有过广泛地讨论。 Lawrence Page 本人在 PageRank 的专利说明中曾指出以下潜在的影响因素:链接的能
15、见度,链接在文档中的位置,web 页面间的距离,出链页面的重要性,页面的不过时。这此因素的增加,可以更好用随机冲浪模型模拟人类利用 web 的行为。不管上述附加因素有没有在实际计算 PageRank 时使用,如何实现这些附加因素仍要讨论。首先算法公式需要改进. PR(A) = (1-d) + d (PR(T1)L(T1,A) + . + PR(Tn)L(Tn,A)此处,L(T1,A)是入链的评价值,由几个因素构成,只需要在迭代前计算一次,减少了对数据库的查询次数,虽然每次迭代的查询结果会有不同。Lawrence Page 在 PageRank 的专利说明中指出链接评价的两个因素是链接的可见性和
16、在文档中的位置。链接评价取代了 PR(A)/C(A),指出了对一特定的页面的链接,每个链接被点击的概率是不同的。此处,每一链接有两个属性值,X 表示可见度,如果没有被重点强调(如粗体、斜体等)为 1 否则为 2,Y 表链接在文档中的位置,如果在文档下半部为 1 否则为 3。则有 X(A,B) Y(A,B) = 1 3 = 3X(A,C) Y(A,C) = 1 1 = 1X(B,A) Y(B,A) = 2 3 = 6X(B,C) Y(B,C) = 2 1 = 2X(C,A) Y(C,A) = 2 3 = 6X(C,B) Y(C,B) = 2 1 = 2 易得:Z(A) = X(A,B) Y(A,
17、B) + X(A,C) Y(A,C) = 4Z(B) = X(B,A) Y(B,A) + X(B,C) Y(B,C) = 8Z(C) = X(C,A) Y(C,A) + X(C,B) Y(C,B) = 8 链接评价公式为:(页面 T1 指向 T2)L(T1,T2) = X(T1,T2) Y(T1,T2) / Z(T1) 有:L(A,B) = 0.75L(A,C) = 0.25L(B,A) = 0.75L(B,C) = 0.25L(C,A) = 0.75L(C,B) = 0.25 最后利用改进的公式计算页面级别:PR(A) = 0.5 + 0.5 (0.75 PR(B) + 0.75 PR(C)
18、PR(B) = 0.5 + 0.5 (0.75 PR(A) + 0.25 PR(C)PR(C) = 0.5 + 0.5 (0.25 PR(A) + 0.25 PR(B) 得:PR(A) = 819/693PR(B) = 721/693PR(C) = 539/693 为了防止人为的级别优化,页面的距离被用来影响链接的评价。站内链接的权重小于站间链接的权重。页面的距离可能由页面是否在一个站内、一个服务器及物理距离等决定。另一个影响页面重要性的能参数,是页面的不过时性(up-to-dateness),意指有越多的新建的页面指向某一个页面,则这个页面内容过时的可能性越小。为增加这些因素的影响,要对公式
19、进行修订如下: L(Ti,A) = K(Ti,A) K1(Ti) . Km(Ti) 其中,K(Ti,A)表示链接可见度及位置的权重, Kn(Ti)是第 n 个因素对页面 Ti 的影响。看列子:此处,从 C 引出的链接的重要性是其它的 4 倍。 K(A) = 0.5K(B) = 0.5K(C) = 2 计算级别值:PR(A) = 0.5 + 0.5 2 PR(C)PR(B) = 0.5 + 0.5 0.5 0.5 PR(A)PR(C) = 0.5 + 0.5 (0.5 PR(B) + 0.5 0.5 PR(A) 得:PR(A) = 4/3PR(B) = 2/3PR(C) = 5/6 此时,所有页
20、面的级别之和不等于页面数量。 8、Google 的 PR0 惩罚Google 对采用了搜索优化的网站的一种惩罚就是,把这个站的所有或很多网页的网页级别定为 0,典型的表现就是原先不为 0 忽然变为 0 的情况。当然, PR 为 0 不一定是受到了惩罚,可能只是因为没有重要页面链到它。一个 Google 的员工在 WebmasterWorlds Google News 论坛上一再提醒网站管理员,一定不要“链接到坏邻居”。 Raph Levien 提出了一种技术分析链接结构获取页面的负面特征,与“PageRank“相似但目标相反,名之为“BadRank”。BadRank 基于“ 链到坏邻居” ,对
21、 BadRank 有影响显然是出链,因为对PageRank 的算法加以改动,即会适合 BadRank 的计算。 BR(A) = E(A) (1-d) + d (BR(T1)/C(T1) + . + BR(Tn)/C(Tn) ,其中,BR(A) 是页面 A 的 BadRank, BR(Ti)页面 Ti 的 BadRank,页面 A 有链接到Ti,C(Ti)页面 Ti 的入链数,d 是阻尼系数,E(A)表示当前页面有没有被垃圾网页过滤系统检测到。当 E(A)为 0 时,这个公式不再有意义,它只是变成了另一种分析链接结构的方法而已。所有页面的 E(A)之和等页面总数。看例子,令 E(A)=100,其
22、它的为 1,d=0.85,则有 Page BadRank A 22.39 B/C 17.39 D/E/F/G 12.21 可见页面 A 的 BadRank 被分布到每个页面中了。上例中,如果所有页面的 BadRank 都为 1,阻尼系数为 0.85,页面 G 链到一个页面 X,E(X)=10,且这个链接是X 的唯一的入链。则有 Page BadRank A 4.82 B 7.50 C 14.50 D 4.22 E 4.22 F 11.22 G 17.18 在这种情况下,所有页面的 BadRank 都有增加,A 增加得比较少。常见这样的网站,主页的 pagerank 在 24 之间,而其它页面为
23、 0,这是可能由于受到了 Google 的惩罚,或者可能只是低层页面有链接到“坏邻居”。(真是这样吗?我的网站就如所述。可怕)。如果将 BadRank 和 PageRank 结合,有多方法,一是相减,一是相除,一是 BadRank 到了一定值就PageRank=0,等等。其实,两者如何结合并不重要。但是其后果却值得重视。一种情况是,一个页面的 PageRank 很高,它的 BadRank 也不低但相对于其 PageRank 却可以忽略,那么如果一个链向这个页面但 PageRank 不高的页面将会深受其害了。另一种情况更严重,无论有多少入链帮助增加 PageRank,一个到“ 坏邻居”的出链就可能导致 PR0。对于后一种情况,Google 的 Matt Cutt 发言说,一个到“坏邻居”的链接并不会造成伤害,但如果有 20,就是个问题了。对于一高一低两个 PageRank 的页面,都连到一个“坏邻居 ”,低 PageRank 的页面受到的伤害会更厉害,只喜欢Google 能区别这种情况,否则出链就只有坏处而不见什么好处了。都是关于 BadRank 的思考,但是对链接结构进行同 PageRank 相似的分析来确定 BadRank 似乎是 Google 的唯一的思路。