十张图带你领略知乎答案排序算法之美

十张图带你领略知乎答案排序算法之美_第1张图片

众所周知,知乎对单个提问下回答的排序采用的威尔逊算法,但这种算法的原理究竟是怎样呢以及这种算法对排序有什么样的影响?本文将会对此进行详细阐述。

首先分析单个知乎单个回答下投票的特点:

1. 只有赞同和反对两个选项。(设赞同数=u,反对数=v,总票数n=u+v)

2. 用户之间投票行为独立。

3. 当投票量增加的时候,样本赞同率p(p=u/n)逐渐趋近总体赞同率(n等于无穷大时候的u/n)。

很显然,用户的投票是二项分布。 根据投票,可以计算出赞同率,并且根据赞同率排序所有回答。

当总投票数较少时,样本赞同率可能与总体赞同率差别较大,直接用样本赞同率排序可能带来一定的误差。

为了更好的修正小样本下的样本赞同率,引入威尔逊公式。经过公式修正后,赞同率将会更加准确。

威尔逊公式:

十张图带你领略知乎答案排序算法之美_第2张图片

威尔逊公式

函数共有 u,v,z 三个变量。其中 z 为可调节的参数,u 为赞同数,v 为反对数。

不妨设置 z=1,绘制 score 随 u,v 的变化情况(z对score也有影响,后文将会分析)。

十张图带你领略知乎答案排序算法之美_第3张图片

z = 1 时,score 随 u,v的变化情况

由威尔逊公式计算得出的 score,与赞同率(p=u/n)相差多少?


十张图带你领略知乎答案排序算法之美_第4张图片

z = 1 时候 score 与 p 的差值,明显展示了修正效果

由图可知:

(1)当总票数较小的时候,获得赞同的答案,得分 score 会迅速增加。总投票数越多,赞同票对得分score的影响越小。同时,投票数较多,得分score较高的答案,开始获得反对票时,得分会快速下降。得分score越低,下降速度越慢。

(2)score 的取值范围为(0,1),且与投票总数无关。(旧算法中,score=加权赞同-加权反对,不同问题之间得分差别较大,无法横向比较)

(3)n 越小,威尔逊算法的修正效果越强

那么威尔逊区间有多宽?


威尔逊区间公式

取z = 10,计算区间宽度。(z 取其他值时,绘制出的图形也类似。)

z = 10 时,威尔逊区间宽度


十张图带你领略知乎答案排序算法之美_第5张图片

由图得知,样本数量越小,置信区间就越宽。样本数量越大,置信区间则越窄。

z 对 score 有什么影响?请看对比图。


十张图带你领略知乎答案排序算法之美_第6张图片

z = 1 时,u,v 对score的影响


十张图带你领略知乎答案排序算法之美_第7张图片

z = 5 时,u,v 对score影响

z=10时,u,v 对score影响。

十张图带你领略知乎答案排序算法之美_第8张图片

z=1,5.10时,u,v 对score的影响

z 越大,score 的曲线越平缓,等高线密度越小。对当总票数较小的时候,获得赞同的答案,得分score增加速度将减缓。同时,投票数较多,得分 score 较高的答案,开始获得反对票时,得分下降速度也将减缓。

接下来看 z 不同的情况下,score 与 p 的差值。


十张图带你领略知乎答案排序算法之美_第9张图片



十张图带你领略知乎答案排序算法之美_第10张图片



十张图带你领略知乎答案排序算法之美_第11张图片

总的来说,z 越大,威尔逊算法的修正效果越强。

新算法有什么影响呢?

1. 争议性较强的回答将被抑制。类似的情况包括:

(1)抖机灵爆照但没有帮助

(2)煽动性较强但没帮助

(3)大v用户的低质量回答和攻击性回答

(4)争议性话题下的优质回答。(虽然回答很精彩,引发大量讨论,但由于问题争议性较强,从而得到的赞同和反对都很多。)

对(1)(2)(3)前三者的抑制,有利于整个社区的氛围。 (回答只取决于赞同比,抖机灵却无帮助的回答,自带很多赞同和很多反对。在回答排序上,大v效应不再明显。只要问题没有帮助,就会被放置在靠后的位置上。)

对于(4)类型的回答,按照赞同比排序就未必合理了。举例来说,前几天知乎上很火的一个问题“为什么有的女性讨厌生孩子”下面的一条回答得到了大量的讨论和点赞:评论 1w+,赞同 4w+;这条回答在微博转发 8w+,在当天转发量最大。可是根据知乎的算法,这条引发大量讨论的回答,得到了海量的传播,但却被放置在非常不显眼的位置。而置顶的回答,点赞数和评论数都寥寥无几。

对于这种情况,调节参数z意义似乎不很大:算法排序基于赞同率,就算z再大,这条最火答案也会被放置在不显眼的位置。那么这类问题下回答该怎么样排序呢?这或许又是另外一个问题了。

2. 普通用户也许更愿意答题了。

新算法按照赞同比排序。如果大v的回答没有帮助,即使出场自带500赞,反对票也很快会让答案下沉。这对于认真输出回答的普通用户是一个正向的激励。

旧算法下,辛辛苦苦认真答题的知乎小透明,即使生产出优质的答案,也可能被放置在大v抖机灵答案的后面。而新算法下,赞同率高的答案会随着赞同快速被置顶。

3. 专业领域下大v的作用更明显了。

新算法本就加强了投票对答案排名的影响,高权重大v的投票则会更关键。大v一票可能相当于普通用户N票。权重是分领域的而不是全局权重,而用户在某个问题下的权重,是根据他过去在相关问题下的回答得到的赞同,反对和没有帮助票来计算的。

这增强了专业性领域下问题中端回答的质量,让专业领域下大v的作用更明显。

4. 答案更符合知乎调性了。

通过用户投票筛选回答,能够筛选出更符合符合知乎调性的回答。这让知乎用户更爱看了。

但符合知乎调性,并不一定代表客观。特别是对于一些小众领域、专业领域。符合知乎政治正确却不恰当的回答,可能会被置顶,而正确的回答可能会被放置在不明显的位置。(之前写快手产品分析的时候去知乎查资料,很希望看到一些客观的讨论,但发现符合知乎政治正确,却倾向性非常强的答案放置在顶端,而较为客观又干货满满的回答被放置在底端。)一方面来说,这讨好了更多的用户;但从另一方面来说,又伤害了输出小众专业内容的用户。

总的来说,修改后的算法利大于弊。

参考资料:

基于用户投票的排名算法(五):威尔逊区间                       阮一峰

How Not To Sort By Average Rating                                     Evan Miller

知乎问题:如何评价知乎的回答排序算法?

知乎问题:知乎如何计算用户在某个领域下的权重?

这次,我给知乎点32个赞同——浅析知乎新的回答排序算法        曾加

本文转载自 Phhhy 的微信公众号:巴旦说

你可能感兴趣的:(十张图带你领略知乎答案排序算法之美)