最近一段日子,怎么在一个大的新闻候选集合(假设有10w条新闻)选出用来做 CTR 预估的小集合(假设是100条新闻)困扰我们已久,昨夜我夜观星象,突来灵感,遂有此文。
首先,我们需要明确选出这 100 条新闻的目的是什么?废话,不选个小集合 CTR 预估怎么算得过来。好,那么目的一便是确定一个精简的集合以使 CTR 预估能在线上实时响应。再进一步思考,这100条新闻要是怎么样的新闻?我认为这100新闻需要具备如下两个特征,也即我们的另外两个目的:
顺着这样的思路,我整理出如下图的候选集触发方案:
方案分两部分,分别是候选集触发和融合&过滤。下面分别进行介绍:
在此候选集触发方案中,不仅满足上述 “准确率高” 和 “覆盖率高” 两原则,并且各个方案之间可以弥补各自的缺陷。下面对各个候选集选择子方案进行说明:
这里过滤的目的是为了支持人工介入,比如,要过滤掉:
为了结合不同候选集子方案的优点,同时提高候选集的多样性和覆盖率,需要将不同的触发算法融合在一起。有以下两种方法:
我们初期可以用简单点的加权型,后期可以使用分级型或综合加权和分级
候选集触发中除了实时推荐另外都可以通过离线计算,保证一天更新一次(根据计算量大小可调)。过滤、融合过程也是通过离线计算,紧接着候选集触发进行。实时推荐可以实时计算之后,另外加到推荐候选集中。
需要实时更新的是用户的属性,比如分类打分、topic 分布、关键等。这样虽然候选集并不是实时更新,但用户的属性是实时更新的,由于 CTR 预估是实时计算的,这样最终的推荐结果也是实时改变着