本文标题将“推荐系统”与“排行榜”联系到了一起,你可能会有所疑惑,它们之间有什么关系呢?
推荐系统是“智能”的,带有学习性质,能够和用户进行互动,在互动的过程中,算法参数得到更新和进化。
但是,这一切的前提是要以数据为前提的,推荐系统有一个顽疾就是冷启动,冷启动就是没有数据。
一个新用户来了,推荐系统对其一无所知,没有数据推荐系统怎么学习呢?这时候你就需要一个排行榜了。
- 排行榜可以作为解决新用户冷启动问题的推荐策略。
- 排行榜可以作为老用户的兴趣发现方式。
- 排行榜本身就是一个降级的推荐系统。
如何为电商系统构建一个合理的排行榜?
最简单的排行榜,就是直接统计某种指标,按照大小去排序。在社交网站上,按照点赞数、转发数、评论数去排序,这是一种最常见、最朴素的排行榜。
在我们正在研发的电商导购类产品中,就是按照销量去排序。
这种推荐算法很简单,但是这样做并不靠谱,原因在于:
- 很容易被刷榜。
- 马太效应一直存在,不能反映出排行榜随着时间的变化。
考虑时间因素——牛顿冷却定律
物品受关注度如温度一样,不输入能量的话它会自然冷却,而且物体的冷却速度和其当前温度与环境温度之差成正比。
公式为:
T(t) = H + C * e−αt
公式中字母意义如下:
H:环境温度,可以认为是平均销量,由于不影响排序,可以不使用。
C:净剩票数,即时刻t物品已经得到的票数,也就是那个最朴素的统计量,当前场景下为商品销量。
t:为物品冷却时间,一般以小时为单位。
alpha:是冷却系数,反映物品自然冷却的快慢。
如何确定alpha?
假如一个物品在时间过去B个单位后,因为增加了A个投票数,而保持了热门程度不变,那这样的话a应该多少呢?
C * e−αt = (C + A) * e−α(t+B)
可以得到 α = 1 / B * ln(1 + A/C)
用这个公式加上自己产品的实际情况来确定alpha就容易得多,假如按照 B = 24,也就是过一天来看:
直观解释 | A / C | alpha |
投票数翻倍 | 1 | 0.03 |
投票数增加两倍 | 2 | 0.05 |
投票数增加三倍 | 3 | 0.06 |
投票数增加三百倍 | 300 | 0.24 |