给用户挑选全站的优质内容,往往需要针对某一些特征来做排序。总结一下常见的排序方法。
特别说明,今天讨论的排序方法不涉及个性化模型,不涉及冒泡排序等具体的排序效率方法,仅从业务层面讨论可以使用的策略。
主要涉及到影响排序的有两点:
1、用哪些数据:包括,哪些用户,多长时间,哪些行为等
2、怎么样计算:惩罚,扶持,组合,拆分等
1、直接按照原生的统计得到的特征数值,从小到达或者从大到小排序。
比如:视频按照视频清晰度排序,作者按照粉丝数排序等。
2、多个特征线性融合
比如,特征 有点赞跟点踩。score=1*点赞数+(-2)*点踩数
3、算比例,按照率排序
方法一:(正向特征数-1)/ (总的特征数+1 )
为什么分母+1:防止分母为0
为什么分子-1:防止作者自己刷,去除作者自己的投票
方法二:威尔逊置信区间下界限 (来自阮一峰博客)
方法三:贝叶斯平均(阮一峰博客)
3、考虑时间问题
方法一:Hacker News使用的方法(详情见阮一峰博客)
其中,
P表示帖子的得票数,减去1是为了忽略发帖人的投票。在其他条件不变的情况下,得票越多,排名越高。
T表示距离发帖的时间(单位为小时),加上2是为了防止最新的帖子导致分母过小(之所以选择2,可能是因为从原始文章出现在其他网站,到转贴至Hacker News,平均需要两个小时)。在其他条件不变的情况下,越是新发表的帖子,排名越高。或者说,一个帖子的排名,会随着时间不断下降。
G表示"重力因子"(gravityth power),即将帖子排名往下拉的力量,默认值为1.8,它的数值大小决定了排名随时间下降的速度。
方法二:牛顿冷却定律(详情见阮一峰博客)