网页排序最直白的做法是数入链——谁被指得多谁排前面。可链接是免费的:造一批互相指来指去的垃圾页,把它们全指向你要推的那一页,就能把它顶上去。PageRank 换了一行:一票的分量取决于投票人自己的分数,而且每个页面的票要平摊给它指出去的每一条链接。下面这个开关在两者之间切。
只换打分那一行:分数 = 幂迭代算出的特征向量 ⟶ 分数 = 入链数。网页图、链接农场、农场规模全不动。
⇒ 造 50 个农场页:数入链时被推的那页排第 7(已经进了前十),PageRank 下是第 39。同一张图、同一个农场,只因为票怎么算。
PageRank 真正挡住农场的不是「递归加权」这四个字,是平摊:一个页面的票要除以它指出去的链接数。农场页自己没分(没人从外面指它们),摊完更没分。
⇒ 把成本量出来:把目标页推进前十,数入链只要 36 个垃圾页,PageRank 要 340 个——贵 9 倍。要推到第 1 名差得更远:数入链 519 个就够,PageRank 造到 8192 个都没成。
我写下「PageRank 让链接农场失效」。实测它只是变贵了。农场规模拉到 500,被推的那页在 PageRank 下也进了前十(第 10 名),而且前十里已经有 1 个是农场页本身。
为什么挡不住:每个页面都有 (1−d)/N 的基础分(随机冲浪者会凭空跳过来)。农场页再没用也有这一份,造得够多就能凑出来。⇒ 抗操纵不是「能不能」,是「多贵」——而「多贵」是可以量的,上面那两个数就是。
① 量出来一件和直觉相反的事:阻尼系数 d 越大越抗操纵,不是越小。d = 0.5 时只要 60 个农场页,d = 0.95 时要 1919 个。因为 d 越大,真实链接结构被放大得越厉害,农场那点平摊来的基础分就越显得微不足道。⚠ 但 d 太大幂迭代收敛得慢(d = 0.85 时是 32 轮),而且 d = 1 时根本不收敛——0.85 是个折中,不是什么神圣数字。
② 它只看链接,不看内容:一个和你的查询毫无关系但很红的页面,PageRank 给它高分。真实的搜索是「相关性 × 权威度」,PageRank 只是后半截。③ 农场只要买通一条来自高权重页的链接,成本立刻塌下来——这就是付费链接生意存在的原因。