Py学习  »  机器学习算法

推荐系统遇上深度学习(九十五)-[雅虎]点击率预估中的软频率控制

小小挖掘机 • 3 年前 • 383 次点击  

今天介绍的是CIKM 19上雅虎发表的一篇文章,主要介绍了如何在广告点击率预估中进行软频率控制,避免过多的给某一用户展示太多次同一广告造成的点击率下降和用户体验损失。一起来学习一下。

1、背景

Gemini Native是雅虎主要的收入来源,通过在信息流中插入广告来,并通过多种收费模式如CPM、CPC等来获得广告收入。下图展示了不同设备上Gemini Native的广告展现形式:

本文主要关注CPC收费模式。对于这种收费模式,通常情况下按照pCTR * bid对广告进行排序,并进行二价计费,因此点击率预估是比较重要的一环。Gemini native使用的点击率预估模型称作OFFSET(a feature enhanced collaborative- ltering (CF)-based ad click-prediction al- gorithm ),本文重点不在于对此模型的介绍,感兴趣的可以参考论文《OFF-set: one- pass factorization of feature sets for online recommendation in persistent cold start settings》。

用户体验是广告中非常重要的一环,在给用户展示广告时,往往会考虑收益与用户体验之间的平衡。当同一个广告&活动&创意反复推送给同一用户时,用户的点击率会随着推送次数的不断增加而降低,造成用户体验的损失。

在接下来的部分中,首先会对Gemini native的数据进行分析,来看下是否存在上述所说的反复推送点击率下降的问题,随后将介绍如何将展现频次这一因素加入到点击率预估模型中,最后分析一下实验结果。

2、数据分析

本节收集了30天的Gemini native数据来进行分析,看广告展示频次如何影响用户的点击行为。

2.1 全局分析

下图是全局分析的结果,主要包含了两条曲线,横轴是不同广告对同一用户展现次数,橙色曲线代表对应的归一化点击率,蓝色曲线代表所有数据的累积概率分布。

再更具体的解释下两条曲线的含义。橙色曲线中每个点的计算如下:


比如当同一个广告给用户展示第2次时,其平均的点击率是首次展示给用户点击率的80%,当同一个广告给用户展示第3次时,其平均的点击率是首次展示给用户点击率的67%。可以看到,除去25次时数据可能存在异常外,随同一广告给用户展现次数的增加,点击率呈现逐渐下降的趋势。

另一条蓝色曲线代表数据的累积概率分布,比如有47%的数据是广告首次展现给用户。这条线并不是我们关注的重点,因此后续不再进行介绍。

2.2 性别分析

分性别用户的数据如下图所示:

可以看到,重复给男性或女性用户展示同一广告,点击率趋势基本一致。而性别未知的用户则对重复展示的广告有更高的容忍度。这部分用户大都是为注册用户,在行为表现上与已注册用户表现出一定的差异性。

2.3 年龄分析

分年龄段用户的数据如下图所示:

从上图可以发现,不同年龄段的人群,随同一广告展示次数的增加,点击率逐渐下降,但不同年龄段人群对此的容忍度是不同的,越年轻的用户表现出更高的容忍度。对此现象的可能解释是,年轻用户从小就更习惯于将广告作为其上网浏览体验的一部分。

2.4 雅虎垂直产品分析(Yahoo vertical)

该部分的数据如下图:

可以看到,不同入口的产品广告点击率都是随广告展示次数的增加而逐渐降低。

从上述不同方面的分析可以看到,一段时间内重复给用户展示同样的广告,对平台和用户都是有损失的,那么如何控制给用户展示广告的频率呢,我们将在下一节进行介绍。

3、频率控制

3.1 硬频率控制

硬频率控制的做法简单粗暴,对重复展示的创意/活动/广告主广告,如果一段时间内展示次数超过了阈值,则从召回队列中去除,不参与后续的排序。显然这种做法未考虑用户的个性化因素,并不是全局最优的。

3.2 软频率控制

软频率控制的方法如下图:

简单描述一下,这里广告也分不同粒度,粒度从粗到细可以分为同一广告主的广告/活动,某一个具体的广告/活动,某一广告/活动下的某一创意。在进行频率控制时,我们可以从不同粒度上去进行频次控制。无论何种粒度,广告用Af表示

同样,时间窗口也分多种,如昨天,上一周,上个月,用Tf

那么某一用户在某一时间窗口内展示同一广告的次数可以表示为fa,u(Af,Tf)。基于次数,首先会进行分箱操作,如如下的分箱操作:

分箱之后,每一箱都会有对应的权重系数w,参数是通过模型学习得到的。这里的权重参数也可以分为两种,一种是全局通用的参数,不同的广告使用同样的参数,另一种是每个广告独立的参数。最终的点击率预估值为sigmoid(su,a + w)。

当然,我感觉也可以同时加入多种不同粒度的控制。

4、实验结果

最后看下实验结果吧。这里参数使用的是全局通用参数,时间窗口设定为1周,广告力度设定为同一广告/活动。

首先来看学习得到的系数,预期的结果是随着展示次数的增加,权重系数w越小,结果也符合预期:

离线的AUC和Logloss也得到了相应的改善:

最后是线上结果,可以看到,软频率控制带来了7%-8%的CPM的提升:

好了,本文就介绍到这,感兴趣的同学可以阅读下原文。

推荐系统遇上深度学习(九十四)-[华为]一种实用的增量式深度CTR模型训练方法

2020-10-04

推荐系统遇上深度学习(九十三)-[谷歌]提升谷歌网盘推荐质量的工业经验

2020-10-02

推荐系统遇上深度学习(九十二)-[腾讯]RecSys2020最佳长论文-多任务学习模型PLE

2020-10-01


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74168
 
383 次点击