以下文章来源于付大米先生 ,作者付大米
付大米先生让你与啤酒相视而坐
时常饮酒的你,应该对啤酒评分网站并不陌生。这些网站类似于啤酒的“大众点评”,除了查询一款酒的基本信息,很多网站上都会有用户对这款酒的评分和评价,以及评分名列前茅的酒款名单。那么,这些评分网站是如何根据一个个独立的个人评分,计算出该酒总评分和排名的呢?其实这只是一个简单的数学问题——看完这篇文章,你将理解啤酒评分网站的基本排名逻辑。如今比较知名的啤酒评分网站,国内的有酒花儿,国外的有Untappd。两者在玩法上有些共性:
参与者在一款酒后面留下自己的评分,分值为0-5分(实际上都有起评分数,如酒花儿至少0.25分,Untappd至少0.1分等);
每个人对同一款酒只能给出一个有效评分,多次评分的话取最新的那个;
网站根据所有人的评分为该酒计算一个总评分,并依据评分对酒款进行排名。
每个人都可以给一款酒打个人评分。那这款酒的总评分该如何得到呢?一个直接的想法就是——把这款酒的所有评分加起来,除以评分人数,得到这款酒的评分。这就是朴素的“算术平均”思想;每一个新评分都会对这款酒的总评分带来影响,直观又直接。在Untappd平台上直接搜索某一款酒时,看到的得分,就是通过算术平均得到的。有评分,就不免有比较——哪一款酒评分更高呢?涉及到对比,我们很容易想到很多问题:评价人数偏少时,极端评分(比如0分和5分)影响比较大;
Blue Suede Shews算术平均分4.87酒A有100个人评价,算术平均值4.5分;酒B有1000个人评价,算术平均值4.4分。那么酒A评分一定比酒B好吗?我们假设所有评分的人都是理性人,他会根据自身的喜好和品鉴能力对一款酒给出最合理的评分。同时我们假定,一款酒凭借其不同的质量会有一个确定的真实评分。受限于个人喜好和水平,大家给分就不会完全一致,但从整体分布上来看,还是会分布在这款酒真实评分附近。评分人数越多,计算出的评分就越贴近实际。我们假设不同评分出现的概率,符合正态分布。当评分数量较少时,评分分布就会有很大的偶然性。比如10个人有可能恰好都给一款酒打了4.8分,然而评分人数增加到1000人时,大家评分可能会集中于3.8分附近。通过增加数据点数量,可以减少偶然性。但如果评分数量差别比较大呢?比如上述图中的情况,Blue Seude Shews和King JJJulis,该如何排名呢?一个合理的思路是,如果要比较两款酒的好坏,至少应该请同样多的评分人品尝和评分。既然有的酒喝过的人数偏少,那么应该设法为它增加一些评分人。如何操作呢?换言之,通过扩展多少个“虚拟人”,每个虚拟人的评分该是多少,才合理呢?此时,所有啤酒的所有评分所构成的数据池,就可以起到很好的作用了。数据池中所有评分的算术平均值,可以认为是收录的啤酒的平均水平。例如,数据池中有30万条评分,算术平均值为3.5分,我们就可以认为,酒的平均水平是3.5分。若有新酒加入,在没有任何人给出评分时,我们预设它就是一款处于平均水平的酒。也就是他的预设评分为3.5分。当有饮酒人喝过然后给出理性的评分时,这款酒的评分就开始被修正。越来越多的人给出评分,这款酒的评分就越来越接近其真实分数。假设我们给每一款新酒预设了C个预设评分,每个评分都是数据池平均分m;一段时间之后,出现了n条真人评分,每一条评分,我们计做Xi。根据相同的计算方法,我们知道这款酒的新评分为也就这个式子里,分子后面一项的意思是这n条真人评分的总和。也就是所有的分数(真人的和扩展的)加起来,除以总的评分数量。这个公式计算出来的平均值,就被称为贝叶斯平均(Bayesian average),因为某种程度上,它借鉴了贝叶斯推断(Bayesian inference)的思想:既然不知道投票结果,那就先估计一个值,然后不断用新的信息修正,使得它越来越接近正确的值。Untappd和酒花儿在对酒款进行排名时,使用的都是贝叶斯平均值。虽然两个网站都没有给出扩展人数、扩展平均分,但基本思路大家应该明白了。你已经可以猜到了,刚刚的King JJJulis凭借更多的评分数,虽然算数平均值低于Blue Seude Shews,但仍然坐上了所有啤酒排名第一的宝座。(数据时间:2020年10月5日)。
用户点评 共 2 条评论
网上点评不错。
好家伙,概率论与数理统计应用面真广