KDD'20 | LinkedIn 混排
输入“/”快速插入内容
KDD'20 | LinkedIn 混排
飞书用户7782
2024年4月7日修改
LInkedIn发表在KDD'20上关于混排的工作,主要探讨在信息流推荐中如何合理分配自然推荐和广告流量的问题,现已基本成为混排的baseline方案。
•
Ads Allocation in Feed via Constrained Optimization
自然推荐的主要目标是用户的engagement,可以简单理解为用户app上的停留意愿;而广告则是通过竞价排序最大化期望收益。两者目标的冲突差异导致现有的系统中,自然和广告的链路一般相互独立,在最顶层的混排阶段再对流量进行调控。
一个最基础简单的方式就是定坑插入,但毫无疑问该种方案是有损效率的。
解决方案
首先明确一个好的混排模块需要具备的功能:
•
低延迟
:毋庸置疑了;
•
子队列保序
:因为前一阶段精排已经做了非常精准预估,重新调整排序没有必要且会增加建模复杂度;
•
模型迭代效率
:推荐系统模块复杂繁多,必须保证各模块间的异步独立迭代,因此需要混排模型有自动调整适配上游迭代的能力;
•
周期自适应
:广告需求往往有季节或者年的周期性变化,自然结果也同样。混排应该根据收益的系统性变化来调整广告的曝光量
•
动态广告位置
:如果广告固定坑位出现,则用户会选择可以回避,有损效率;
出于对用户体验的兜底保护,避免广告频出影响某些用用户,文中设置了两个规则性策略
•
top_slot
:最高在第几位可以出广告,避免广告出的太靠前影响体验;
•
min_gap
:两个广告之间至少间隔多少位,避免扎堆出广告营销感拉满;
在本文中,将混排问题定义为
单次请求中的带限制的最优化问题
上面建模公式的含义就是,在全局内容价值大于一定阈值的限制下,最大化广告收益。通过对偶拉格朗日可以求解出如下解(公式推导可参考:
《Ads Allocation in Feed via Constrained Optimization》最优化求解推导
)
其中
参数的含义是把engagement utility等价变化至revenue utility,从而使得两个队列可比,文中称为
shadow bid
。
假设我们已经计算好shadow bid,则整体混排算法如下