问题描述
对任何转化率预测问题来说,利用某个样本的转化率预测其未来的转化率都是有一定意义的。但实际上,商品样品数量比较大,并非所有商品的展示率或者曝光率都足够多;甚至某些商品基本没有出现,而如果直接预测这些商品的未来转化率为零显得有些武断。类似的情况还有:①两个展示次数分别为10次、1次,转化次数分别为8次、1次的两个商品A、B,我们对A的转化的信心是否比B更低一些呢?②两个展示次数分别为10次、1次,转化次数分别为1次、0次的两个商品C、D,我们对D的转化的信心是否比C更低一些呢?
这里就需要对展示次数和转化次数进行平滑,使转化率的预测更符合常识。
平滑方法
①计算所有商品的平均转化率 rate
②对每一个样本,点击次数 += n_add, 转化次数+= n_add*rate
比如对下表所示的样本,平均转化率为0.32,这里取n_add = 1。
样本0、1平滑之前的CTR为0.8、1,而我们显然对样本0的信心更足一些,因为样本1受随机因素干扰的可能性更大,而样本0的展示次数较多的情况仍然有很高的转化率。平滑之后CTR为0.75、0.66,更符合常识。
样本4、5、6平滑之前的CTR都为0,但是展示次数相差较大,这样预测显然有失公允,平滑之后样本6的转化率预测值为0.16,甚至比样本3的预测值更高。样本3的展示次数较多,但实际转化率很低,样本6虽然没有转化的样本,但是仅展示过1次,这样预测相对平滑前还是可以接受的。
index | n_click | n_through | CTR | n_click_smoothed | n_through_smoothed | CTR_new |
---|---|---|---|---|---|---|
0 | 10 | 8 | 0.8 | 11 | 8.323529 | 0.756684 |
1 | 1 | 1 | 1.0 | 2 | 1.323529 | 0.661765 |
2 | 5 | 1 | 0.2 | 6 | 1.323529 | 0.220588 |
3 | 10 | 1 | 0.1 | 11 | 1.323529 | 0.120321 |
4 | 5 | 0 | 0.0 | 6 | 0.323529 | 0.053922 |
5 | 2 | 0 | 0.0 | 3 | 0.323529 | 0.107843 |
6 | 1 | 0 | 0.0 | 2 | 0.323529 | 0.161765 |
这里的参数n_add的取值较为关键,可能需要根据实际的业务以及数据来判断。