在做SEO的过程中,我们经常尝试研究搜索引擎自然排名的策略,尤其是当你搜索一个关键词的时候,我们很好奇搜索引擎是如何过滤彼此的显示顺序的。

下面是百度早期给出的一个网页中搜索排名投票模型的讨论。 我们觉得很有价值,分享给 SEO 朋友:

前几天看了一本书《The Dilemma of Elections》,里面有一章从美国的选举制度说起, 介绍美国选举制度的缺点,然后针对这些缺点提出各种改进,但每一种改进都有自己的问题,变化很有趣。

我们先来说说美国的选举制度。 美国总统大选是“赢家通吃”的方式。 每个州都有数十或数百张“州票”,具体取决于其人口。 这里的人投票给总统候选人,一个州得票最多的候选人获得该州所有的“州票”,然后统计所有候选人的“州票”数量,得到最多的“州票” “候选人获胜。

这样一个系统的问题是显而易见的。 比如只有两个州,A州有5人,B州有4人,州票也分别是5票和4票。 如果候选人 X 在 A 州以 3:2 获胜,另一位候选人 Y 在 B 州以 4:0 获胜,那么显然候选人 Y 在全国有 6 票,而候选人 X 在 A 州只有 3 票,但由于“胜者拿 全部”,X在A周获得了全部5张“州票”,Y在B周只获得了4张“州票”,而在全国只有1/3的人支持的X实际上赢得了选举胜利。

这样的情况发生在2000年的美国总统大选中。 布什的州选票领先于戈尔,但在全国人口中支持戈尔的人数当然比布什的要多。 戈尔因另一个原因输给了布什,这里没有列出。

如果放在算法领域,可以看出这里的问题是为了统计结果R(最合适的总统候选人),一个特征A(每个人的投票 public) 找到了,结果 R 确定了,但不是特征 A,而是从特征 A 派生的特征 B(状态票)。在特征 A 到特征 B 的推导过程中,信息丢失了(每个特征的支持率百分比) 大陆不同)。

www。123456。cn

先不说“赢家通吃”制度的具体历史原因。 有兴趣的朋友可以看看原著。 解决这个问题最直接的办法就是从“胜者通吃”改为直接选举,即一人一票,直接统计票数。 但是,这也会遇到一系列问题。

在说那一系列问题之前,先把要解决的问题抽象一下:

有n个候选人,每个选民投票给这n个候选人,最后在选最多的 合适,最符合民意,n个候选人中合乎逻辑的人。

选项1:单票系统,每人一票,选择他们喜欢的候选人,计算结果以及选举最多的人。

这样做的问题是,会导致作者定义的一种“鹬蚌困境”。 比如三个候选人ABC,BC的政见相近,支持B的人也更支持C,反之亦然,在整个人群中,喜欢BC的人占多数,A的政见是 与BC相反,支持A的人在全民中是少数。 这样做的后果是 BC 获得的选票会分散,而 A 获得的选票会更加集中获胜。 如果卑诗省的一个人不参加选举,则投票将集中在一个人的手中,因此选举了选民的多数支持者。 上面没有列出的戈尔失败的另一个原因是,有人认为与戈尔在政治上相似的内德有牵连,他分散了戈尔的部分选票。

可以改善这个问题的解决方案称为“二选一系统”。

方案二:二选一制,每人一票。 如果没有人获得超过50%的支持率,则将选出得票最高的两名候选人,并举行新一轮选举。 人们赢了。

法国总统选举就是这样一个二选一的制度,但这种方式只能改善“鹬蚌困境”,而不能彻底解决。 类似的情况发生在2002年的法国总统大选中。当时支持左翼政见的人比较多,但在两选制下,最后的前两名是一右一极。 原因是当年有16名总统候选人,其中大部分是左翼政客,导致左翼选票极度分散。

方案3:n-choice系统,每个人有一票,如果没有人获得超过50%的支持率,那么支持率最低的候选人将被淘汰,重新进行一轮投票。 % 支持,然后删除得票最少的候选人,直到有人支持超过 50%。

www。123456。cn

2001年奥委会决定北京为2008年奥运会主办城市的时候,就是用的这样的制度,在第一轮投票里大阪被淘汰,北京在第二轮就获得了半数以上的支持,从而当选。  

n选制的问题在于不实用,如果是奥委会这种只有几百个人投票的情况还可以使用,如果类似前面法国总统选举,有16个候选人,举国上下最多可能进行15次投票,成本太高。  

方案4:即刻复选制,每个民众对候选人进行排序,如果某个候选人获得了50%以上的首选,则直接获得胜利,否则淘汰票数最低的候选人,并且把票数最低候选人的得票中的第二候选人拿出来,分给对应的候选人,如果有人获得50%以上,则当选,否则再淘汰一位最低的,并且把他票分给里面排序最高的且未被淘汰的候选人,如此往复。  

爱尔兰总统选举和伦敦市长选举采用的是类似的方案,此方案也有问题,试想如此场景:选民共10人,中间派候选人是3人的首选,左派和右派的候选人分别是4人的首选,当然左派选民最讨厌右派候选人,而右派选民也最讨厌左派候选人,而左派右派的民众对中间派候选人倒是都可以接受,不管是即可复选制还是n选制,中间派候选人都会在第一轮被淘汰。而中间派候选人则是全体民众都可以接受的人,也最能调和各派之间矛盾,最和谐。  

这个方案的本质问题是,虽然每个选民可以对候选人排序,但是在第一轮的时候却只考虑了第一选,没有考虑选民的二、三选。  

方案5:上行复选制,跟方案4类似,只不过第一轮淘汰的不是支持最少,而是反对最多的候选人(获得最多末选票的候选人)  

再看上面提到的情况,中间派候选人由于不是任何人的末选,所以第一轮淘汰的是左派或者右派,再第二轮选举中,中间派的候选人就可以获胜了。  

www。123456。cn

方案5也有方案5的问题,考虑这样一种情况,只有两个候选人AB参选,选民9人,其中6人喜欢A而讨厌B,3人喜欢B而讨厌A,无论按照之前的哪种方式,都会是A获胜。但是现在又多了两个候选人C和D,喜欢B的3人中,都是把A列在最后一个候选的,而喜欢A的6人的末选,却是BCD各2票,这样,在第一轮选举中,A就由于获得了最多的末选票被淘汰了,而通过精心的构造例子,完全可以使B最终当选。仅仅由于CD参选或者不参选,A和B之间的胜负关系就发生了大逆转。  

实际使用此方案的例子不多,只有在公元前507年的雅典有类似的方案,不是让民众投支持票,而是投反对票,把反对最多的人投出局。  

方案6:多赛制,民众对候选人排序,然后候选人之间两两pk,统计每一张选票上看候选人A在候选人B前面还是B在A前面,如此找到获胜场次最多的候选人来赢得选举。  

这样的问题是可能导致循环胜负,如ABC三个候选人,有3个民众,投票分别是ABC,BCA,CAB,可以看出AB之间A获胜两次,A>B;BC之间B获胜两次,B>C,AC之间C获胜两次,C>A,这样就构成了一个A>B>C的循环。这个是不是有点像足球联赛的记分制啊,如果积分相同,足球比赛中可以再看净胜球、进球、胜负关系等,但是作者并没有在这个方面进行展开,而是介绍了另一种方式:博达制。  

方案7:博达制,民众对候选人排序,假如有n个候选人,第一位的候选人得n分,第二位得n-1分,以此类推,然后统计每个候选人的总分,获得最多分的获胜。  

有人对博达制的批评是:可能有选民会利用这种方式进行作弊(投“策略票”),最支持B的候选人本来心目中的排序是B>A>C,但是由于相对A,他们还是更喜欢B,因此,为了把B拉上来,就得把A拉下去,他们的投票就变成了B>C>A。博达对此批评的回应是:我的制度只适用于诚实的投票者。  

而这本书的作者却认为博达制的“策略票”问题没那么严重,如果无法准确预测民意和精确控制策略票的投法,有可能因为用力过猛,不但把A拉下来了,反而让C获得的支持票增加,这样就使得最支持B的那些人的“策略票”反而使得他们最讨厌的C当选了,当年在IMDB上就发生过类似一幕:  

电影《6》上映后,的粉丝们觉得这部片太酷了,于是就想把6投成IMDB第一位,于是他们疯狂的给6打高分,而同时,也纷纷的给当时的IMDB第一《教父》投低分,导致的结果就是用力过猛,教父变成了第三名,原来的第二肖申克的救赎(TSR)变成了第二(原来的第二是排在教父后面,新的第二是排在6后面),而后来,随着疯狂粉丝的热情消退,理性的意见占据了上风,6的得分逐渐下降,跌到了第10。而教父还是在肖申克的救赎后面,很久没有回去了。  

博达制是否有其他问题呢?  

以上只是对这本书第14章的一个笔记,也仅仅针对“多候选人单职位”问题进行了讨论,书的后面还会对“多候选人多职位”的情况继续探讨,也就是根据每个人对候选人的排序,来决定最终的候选人排序。  

回到搜索引擎领域来,如上策略的变迁会给我们一些启示,先看看之前抽象出来的问题:  

有n个候选人,每个选民对这n个候选人投票,最终在n个候选人中选出最合适、最符合民意、也符合逻辑的那个人。  

这很像搜索引擎在解决的问题:  

系统里有n个网页,有m个特征(页面质量、页面内容丰富度、页面超链、文本相关性等)对n个网页有不同的打分,如何根据这些特征的“投票”,选出最适合放在第一位的网页呢?  

www。123456。cn

从选举的例子中,我们可以得到的几个启示:  

1.设计算法时,要避免出现“赢者通吃”带来的信息丢失问题。  

2.不要因为某几个特征特别好,就把某个网页排到最前,或者因为某几个特征特别差,就把某个网页抛弃。  

3.最合适放在首位的网页不一定是在每个特征上都最好,而应该是能够兼顾所有特征,综合表现最好的那个。  

4.搜索引擎使用者对搜索结果的点击行为,可以看成是对搜索结果进行的“投票”,这样的“投票”信息的使用方式,也要注意考虑是否会带来选举过程中出现的种种不合理。  

以上提到的种种选举方案,仅仅是对“多候选人单职位的”的情况进行讨论,而搜索引擎面对的问题,则更类似于“多候选人排序”的情况,也即:  

系统里有n个网页,有m个特征(页面质量、页面内容丰富度、页面超链、文本相关性等)对n个网页有不同的打分,如何根据这些特征的“投票”,决定n个网页的顺序?  

www。123456。cn

而这个“多候选人排序”问题,是有一个“不可能的民主”的理论的,该理论的大意是,“合理”的民主应该满足3个条件:  

1.如果选民都认为A比B好,那么最终结果应该也是A比B好  

2.没有“独裁者”,也即,不存在这样一个人,无论别人怎么排序,最终结果的排序都和这个人的排序一致  

3.无关因素独立性,也即,在第一次投票完成后,A排在B前面,现在进行第二次投票,如果所有人都没有改变自己投票中A和B的相对顺序,那最终结果应该也是A在B前面  

而通过数学的证明,可以得出结论:如果某种选举方式满足条件1和3,则必然不满足2,也即必然存在“独裁者”,这个问题的证明,可以参考这篇博客:http://roba.rushcj.com/?p=509  

根据“不可能的民主”理论,和搜索引擎结合起来看,似乎搜索引擎很难给出一个合理的网页排序,但是搜索引擎和投票又似乎有所不同,有两个角度可以破解  

1.认为条件3过于强,需要弱化。  

2.也许在网页排序问题上,真的存在这样一个“独裁特征”,这个“独裁特征”从目前看来,最适合的应该就是“用户满意度”了,按照用户的满意程度来排序网页,就是最合理的网页排序。如何衡量“用户满意度”呢?这就是我们一直在努力的。