基于用户投票的排名算法

排名算法的粗略介绍

Posted by kylis on August 9, 2019

时段增量算法:

一段时间内的某一动作增量(点赞等)的排名

1
2
3
+部署简单,榜单内容更新快
-不平滑,前小时top内容可能在下一小时沉底
-缺乏旧内容淘汰机制,旧内容长期霸榜

单向动作(点赞)+时间重力:

点赞量与内容发布时间长短,进行计算并排名

+对旧内容有下沉处理,保证新优质内容的稳定露出

image

P=内容得赞数;-1=忽略发帖人自己;T=发帖时间;+2=内容转载到自己网站平均需要2小时;G=时间重力因子

image

G时间重力因子是决定内容排名随时间下降的曲线速度;G越大,排行榜更新越快;所以根据上榜内容产出速度决定(分母时间是个指数形式,默认g=1.8,那么过15个小时左右 score就会大幅度降下来)

双向动作(点赞/反对)+时间因素:

点赞反对双向动作与内容发布时间互相影响排名

1
2
+考虑了双向动作,超级受欢迎内容排名靠前
-有争议内容无法靠前

image

x=赞成-反对;y=-1/0/1(x 大于/等于/小于 0);z=x的绝对值(x=0时,z=1);t=发帖时间-社区建成时间;45000=12.5小时(由内容更新速度决定)

前半部分公式:z越大,得分越高;但有了大量赞后,后续赞对排名得分影响越低,而反向动作(踩)会有更大效用

image

后半部分公式:t越大,内容越新,后一天的内容得分会高2分(也就是说,前一天的内容相比后一天内容高,则净赞成要增加100倍);y负责加减分

热门话题算法(话题参与度、下属内容质量、时间):

类似知乎问题热度榜单,问题+回答/内容+评论,父子内容的父内容排名,以此找出某段时间内的热点问题

image

问题浏览次数越多,越受关注,得分越高;log:当访问量越来越大,后续增量对总分的影响就越来越小 问题得分越高,排名越高;Qanwser=问题的回答数量,不管问题得分多高,只要回答少于“5”(平均回答数),则大幅下降分数 全部回答总分 Qage(距离问题发表的时间)Qupdated(距离最后一个回答的时间),两项时间越长,时效越小,最后分数越低 image

牛顿冷却定律算法:

热文在榜单上的升降,本质是内容的热度在随时间自然冷却;沿用物理热度冷却算法

image

T(t)=温度随时间冷却的函数;H=室温(普通内容的温度);常数α=室温与降温速率的比例关系

image

本期得分 = 上一期得分 x exp(-(冷却系数) x 间隔的小时数)

冷却系数由社区内容更新速度决定(假定一篇新文章的初始分数是100分,24小时之后”冷却”为1分,那么可以计算得到”冷却系数”约等于0.192)

威尔逊区间概率算(全时段的排名算法):

如“全站最受用户好评的内容”

1
2
+可以修正小样本数据下的置信度
-得票少的新内容难以露出

二项分布,在某一置信度下,计算内容的好评率,及其置信区间,根据置信区间的下限值,进行排名。这个值越大,排名就越高。

贝叶斯平均推导(全时段的排名算法):

不知道新内容的质量,则先假定其有平均水平,依靠后续情报进行修正其得分。 如B站,在此基础上加入了时间限制

1
2
+让新优质内容有机会露出
-只针对正态分布有效;对于5人高赞,1人负面&3人中评的内容,后者更高排名

image

v=真实投票数,m=全站平均投票数,R为现在的平均得分,假设一开始每个作品均有平均水平,随投票人数增加,最终得分越贴近真实值。 C为全站平均得分,低样本下,作品初始分数即为平均分数