推荐系统三十六式学习笔记:原理篇.其他应用技术21|构建一个科学的排行榜体系

目录

  • 为什么要排行榜
  • 排行榜算法
    • 1.考虑时间因素
    • 2.考虑三种投票
    • 3.考虑好评的平均程度
  • 总结

推荐系统有一个顽疾就是冷启动,冷启动就是没有数据,没有数据怎么和用户玩呢?

一个新用户来了,什么数据也没有,推荐系统对其一无所知。这时候,你就需要一个排行榜了。

为什么要排行榜

排行榜,又名热门榜,它也是推荐算法的一员,不仅是,并且非常重要,而且其中也有不少的学问。
那么说排行榜到底有哪些用处呢?
1.排行榜可以作为解决新用户冷启动问题的推荐策略。当一个新用户刚注册时,可以把最近产品中热门的物品推荐给他。
2.排行榜可以作为老用户的兴趣发现方式。即便是老用户,也可以在享受个性化推荐的同时去浏览热门的物品,从中看看哪些感兴趣,哪些不感兴趣,这些行为都是补充或者更新新用户兴趣的数据来源。
3.排行榜本身就是一个降级的推荐系统。推荐系统本身是一个软件,因此也会有出现问题的时候,也会有推荐不出来的时候,这个时候可以把排行榜作为一种兜底策略。

今天,我就和你聊聊如何根据自己的产品特点构建一个合理的排行榜。

排行榜算法

最简单的排行榜,就是直接统计某种指标,按照大小去排序。在社交网站上,按照点赞数、转发数、评论数去排序,这是一种最常见、最朴素的排行榜。
类似的做法还有,在电商网站上按照销量去排序。
这样的做法也算推荐算法?很难说,因为确实简单,容易上线运行,但这样做不靠谱,不靠谱的原因在于一下几个问题:
1.非常容易被攻击,也就是被刷榜;
2.马太效应一直存在,除非强制替换,否则一些破了记录的物品会一直占据在榜单中;
3.不能反映出排行榜随着时间的变化,这点和马太效应有关。

既然朴素的排行榜有这些弊端,那么就针对它们来一一设计应对措施。

1.考虑时间因素

我们把用户给物品贡献的行为看做是用户在投票,这个很容易理解。排行榜中的物品,你可以想象它们每一个都是炙手可热的,都有一定的温度,那么这个温度按照热力学定律来讲,随着时间推移就一定会耗散到周围,温度就会下降。

或者,可以把排行榜想象成一个梯子,每个物品都在奋力往上爬,它们的动力来自用户的手动投票,物品本身都要承受一定的重力,会从梯子上掉下来,用户投票可以抵挡部分重力,投票数不及时或者不够,排行榜上的物品就会掉下来。

把这个规律反映在排行榜分数计算公式中,就比简单统计数量要科学得多。Hacker News计算帖子的热度就用到了这个思想,它们的做法用公式表达是下面这个样子。
P − 1 ( T + 2 ) G \frac{P-1}{(T+2)^G} (T+2)GP1

公式中三个字母分别代表如下意义:
1.P;得票数,去掉帖子作者自己投票。
2.T:帖子距离现在的小时数,加上帖子发布到被转帖至Hacker News 的平均时长。
3.G:帖子热度的重力因子

公式中,分子是简单的帖子数统计,一个小技巧是去掉了作者自己的投票.分母就是将前面说到的时间因素考虑在内,随着帖子发表时间增加,分母会逐渐增大,帖子的热门程度分数就逐渐降低。

其中,重力因子的选择根据情况而定,重力因子越大,帖子的热度衰减越快,不同的重力因子对比如下图所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SnXTCT9Z-1721966016134)(https://i-blog.csdnimg.cn/direct/a8f3fd1e549541dca30272955ce8afb4.png)]
可以看到,重力因子越大,衰减越快。
再看一下,相同重力因子选择的情形下,不同功能的得票数的对比。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DmKBfOfu-1721966016141)(https://i-blog.csdnimg.cn/direct/91d3fd2469d24cbbbfa21b77880a62ce.png)]
从这个示意图可以看到,这个公式仍然能够反映出相同时间的帖子之间的相对热度差别。

另一个考虑时间因素的排行榜算法是牛顿冷却定律。物品受关注如同温度一样,不输入能量的话它会自然冷却,而且物体的冷却速度和其当前温度与环境之差成正比。将这个定律表述为公式就是下面的样子:
T ( t ) = H + C e ( − α t ) T(t) =H + Ce^{(-\alpha t)} T(t)=H+Ce(αt)

公式中分母的意义如下。
H:为环境温度,可以认为是平均票数,比如电商中的平均销量,由于不影响排序,可以不使用。
C:为净剩票数,即时刻t物品已经得到的票数,也就是那个最朴素的统计量,比如商品的销量。
t:为物品存在时间,一般以小时为单位
α:是冷却系数,反映物品自然冷却的快慢

反映物品自然冷却快慢的α该如何确定呢?有一个更直接的办法。假如一个物品在时间过去B个单位后,因为增加了A个投票数,而保持热门程度不变,那这样的话α应该是多少呢?简单把这个描述成方程就是下面的样子。
C e ( − α t ) = ( C + A ) e ( − α ( t + B ) ) C e^{(-\alpha t)} = (C+A)e^{(-\alpha (t+B))} Ce(αt)=(C+A)e(α(t+B))

可以解得:
α = 1 B l n ( 1 + A C ) \alpha = \frac{1}{B}ln (1+\frac{A}{C}) α=B1ln(1+CA)
用这个公式加上自己产品的要求来确定\alpha就容易得多,假如按照B=24,也就是过一天来看,我来举几个例子。

直观解释A/Cα
投票数翻倍10.03
投票数增加两倍20.05
投票数增加三倍30.06
投票数增加三百倍3000.24

你可以在自己的产品中,设定一个假设,然后就散出相应的α来。

2.考虑三种投票

前面的热度计算方法,只考虑用户投票和用户弃权两种,虽然这种情况很常见,但是还存在一些产品会存在运行用户投反对票的情形,比如问答网站中对答案的投票,既可以赞成,又可以反对。在这种情形下,一般这样来考虑:
1.同样多的总票数,支持赞成票多的,因为这符合平台的长期利益;
2.同样多的赞成票数,支持最有价值的,同样这符合平台的长期利益。

以国外某著名程序员问答网站为例,下面看一下他们对热门问题的热度计算公式:

( l o g 10 Q v i e w s ) ∗ 4 + Q a n s w e r s ∗ Q s c o r e 5 + ∑ i A s c o r e i ( Q a g e 2 + Q u p d a t e d 2 + 1 ) 1.5 \frac{(log10 Qviews)*4 +\frac{Qanswers*Qscore }{5} +\sum_{i}{Ascore_i} }{(\frac{Qage}{2} + \frac{Qupdated}{2} + 1)^{1.5}} (2Qage+2Qupdated+1)1.5(log10Qviews)4+5QanswersQscore+iAscorei

其中各元素意义如下:
1.Qviews:问题的浏览次数
2.Qanswers:问题的回答数
3.Qscore:问题的得分(赞成数-反对数)
4.Ascore:答案的得分
5.Qage:问题发布距离当前的时间
6.Qupdated:问题最后一次修改距离当前的时间

这个问题热门程度计算公式,要考虑了时间因素。分母反映了问题的陈旧程度,修改问题可以让问题不要衰老过快。分子有三部分构成:
1.左边是问题的浏览量,反映了问题的受关注程度;
2.中间是问题的回答量和问题本身质量分数的乘积,高质量、回答多的问题占优势;
3.右边是答案的总质量分。

3.考虑好评的平均程度

前面两种排行榜分数计算法,都是以用户投票的绝对数量作为核心的,那么换个思路来看,从比例看也是可以的。这也是一些点评网站常常采纳的模式,比如电影点评网站
通常会有一个Top250,这也是一种排行榜,以好评比例作为核心来计算排行榜分数。下面来看看这种排行榜。
一个经典的好评率估算公式,叫做威尔逊区间,它这样估算物品的好评率:
p ^ + 1 2 n z 1 − α 2 2 ± z 1 − α 2 p ^ ( 1 − p ^ ) n + z 1 − α 2 2 4 n 2 1 + 1 n z 1 − α 2 2 \frac{\hat{p} +\frac{1}{2n}z_{1-\frac{\alpha}{2}}^2 ± z_{1-\frac{\alpha}{2}}\sqrt{\frac{\hat{p}(1-\hat{p})}{n} +\frac{z_{1-\frac{\alpha}{2}}^2}{4n^2}}}{1+\frac{1}{n}z_{1-\frac{\alpha}{2}}^2} 1+n1z12α2p^+2n1z12α2±z12αnp^(1p^)+4n2z12α2

其中各元素意义如下:
1. p ^ \hat{p} p^就是好评率,比如有一百个点评的商品,99个给了好评,那么这个值就是0.99
2. z 1 − α 2 z_{1-\frac{\alpha}{2}} z12α是一个置信水平为 α \alpha α Z统计量,可以查表得到;

威尔逊区间考虑了评价的样本数,样本不足时,置信区间很宽,样本很足时,置信区间很窄。那么这个统计量有哪些应用呢?
1.多大比例的人们会采取某种行为?
2.多大比例的人认为这是一个Spam?
3.多大比例的人认为这是一个值得推荐的物品呢?

当你为每一个物品都计算一个威尔逊区间后,你可以采用Bandit算法,类似UCB的方式取出物品,构建成一个略带变化的排行榜。
最后,为你呈上某电影点评网站为电影排行榜计算分数的公式,它是另一种对好评率的应用,针对评分类型数据的排行榜。

v v + m R + m v + m C \frac{v}{v+m}R + \frac{m}{v+m} C v+mvR+v+mmC

这个排行榜计算公式,叫做“贝叶斯平均”,其中的元素意义描述如下:
1.R:物品的平均得分,有多少人评分,把他们评分加起来除以人数就是了;
2.v:参与为这个物品评分的人数;
3.m:全局平均每个物品的评分人数;
4.C: 全局平均每个物品的平均得分;

它反映了几个思想在里面:
1.如果物品没多少人为它投票,也就是评价人数不足,那么v就很小,m就很大,公式左边就很小,右边就很大,于是总分算出来就很接近右边部分,也就是接近全局平均分C;
2.如果物品投票人数很多,那么v很大,m很小,分数就接近它自己的平均分R

这个公式的好处是:所有的物品,不论多少人为它评分,都可以统一地计算出一个合理的平均分数,它已经被国内外电影评分网站采纳在自己的排行榜体系中,当然,它们肯定各自都有根据实际情况的修改。

总结

今天,我主要讲到了三种构建排行榜分数的算法。

一个最最朴素的排行榜就是统计一下销量、阅读量等,但要让排行榜反映出热度的自然冷却,也要反映出用户赞成和反对之不同,还要反映出用户评价的平均水平。

不要被公式所吓倒,实际上,它们统计起来很方便。这些公式都是在实际生成中演化而来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值