贝叶斯平均:排序算法之二

贝叶斯平均

  • 贝叶斯平均思想和公式
  • 贝叶斯平均计算实例

贝叶斯平均思想和公式

前期讲过Wilson得分进行排序,解决了观看量很少,导致结果不可信的问题。Wilson评分虽然保证了排名的可靠性,但该排序方法也会大大削弱那种观看量少(小众的)的视频的得分,忽略了冷门视频和新事物的产生,这样排名榜上始终会是那些观看量高的视频,新视频和冷门的视频很难出来,长期靠后。

这里就有一个问题:热门视频与冷门视频的平均得分,是否真的具有可比性?举个例子来说,一个热门视频每天2000次曝光,另外一个冷门视频只有50次曝光。很明显,使用Wilson评分,后者的得分将被大幅拉低,所以考虑到贝叶斯平均进行排序,给每个视频增加一定量的曝光。

其思想在于:

  1. 假设所有视频都至少有m次曝光(设置一个基准),那么就都具备了同等的一个评选条件;
  2. 然后假设这m次曝光的评分是所有视频的平均得分(即假设这个视频具有平均水准);
  3. 最后,用现有的评分进行修正,长期来看,v/(v+m)这部分的权重将越来越大,得分将慢慢接近真实情况。

贝叶斯平均式子如下:

在这里插入图片描述
v : 代表该视频的实际观看量;
m : 代表最低的一个观看量(人工干预设置,可根据实际观看情况而定,平 均值等等);
R : 该视频的平均得分;
C : 所有视频的平均得分。

贝叶斯平均计算实例

自己造的一个小例子,具体看公式实现的结果如下:

import pandas as pd
a = [10,5,50]
b = [100,4,400]
c = [200,3.5,700]
d = {'video_1':a,
    'video_2':b,
    'video_3':c}
data = pd.DataFrame(d).T
data.columns = ['观看量','平均得分','总分']
print(data)

贝叶斯平均:排序算法之二_第1张图片

C = (50+400+700)/(10+100+200)
C = 3.71
三个视频观看量的平均值是103,不妨设置最低观看量m = 100(可调整)
于是这里m = 100

根据贝叶斯公式就可得三个视频的贝叶斯得分:

data['BA'] =  (data['总分']+ 3.71*100)/(data['观看量']+100)

贝叶斯平均:排序算法之二_第2张图片
我们发现观看量较少的video_1的分数提上去了,观看量较多的分数则稍微下降。这样新视频也有机会上榜单。

结论:以贝叶斯平均为依据的排序某种程度上更能反应真实的情况,观看量多且评分较高的视频会更加靠前,观看量且评分较低的产品也会更加靠后,与单纯依据每个视频的平均分排序相比,这种结果更有意义。

不管是Wilson 评分还是贝叶斯平均,两者各有千秋,都是产品排序的一种方法,需要结合实际情况而定,不能以偏概全就认定某种方法一定更优。

参考文章:
https://www.ruanyifeng.com/blog/2012/03/ranking_algorithm_bayesian_average.html

你可能感兴趣的:(统计学知识,推荐算法)