Bid Optimization for Offsite Display Ad Campaigns on eCommerce笔记
背景
作者们从广告主视角介绍了一个竞价优化系统,目标是在 DSP 投放广告时, 将 ROAS(Return on Ad Spend)最大化。该系统解决了广告主在尝试优化 ROAS 出价时遇到的几个问题。
- 缺少信息共享
- 手动调价
- Clicks 和 Revenue 低相关性
- 由于转化效果的滞后性,点击类指标与展示广告系列的收入相关性较低。因此,以点击量为优化目标并不能有效提升收入
- 竞价环境带来的预估挑战
- 缺少透明的预算和消费控制
Dimensional Bidding
为了解决这些问题,作者提出了一种多维度竞价方法,该方法会根据广告请求的不同细分 segment 进行出价调整。
Segmentation
首先将展现人群划分为子人群,即 dimension。dimension 是指可以定向、屏蔽或调整出价的定向条件。这样便于追踪每个 dimension 的效果也便于探索。
Overlapping Dimensions
Assumptions
系统依赖如下几个假设:
- CPM 正比于 bid factor
- base bid * bid factor 是实际出价 bid price
- campaign 的 cost 也会随着 bid factor 的增加而增加
- win 的数目(或者 imp)正比于 bid factor
- RPM 独立于 bid price,且在短时间内相对稳定
- 如果我们 RPM 来选择 dimension,那么每个 dimension 的平均收益不应该取决于 cost。
Disjoint Bid Dimensions
基于以上假设,可以通过定义多个互斥的 dimension 并为每个 dimension 设置一个 bid adjustment。对于第 i 个 dimension,定义如下参数,
- Cost per (mille) impression: $CPM_i$
- Revenue per (mille) impression: $RPM_i$
- Number of won impressions: $n_i$
- Total ads spend: $S_i$
- Total revenue: $R_i$
- Bid (adjustment) factor: $f_i$
这样需要解决的优化问题如下,
$$ \begin{equation} \begin{aligned} \max_{f_i} \quad & \sum_{i=1}^{m} RPM_i \cdot g(f_i) \ \text{s.t.} \quad & \sum_{i=1}^{m} S_i \leq B \end{aligned} \end{equation} $$
其中$B$为总预算,$n_i=g(f_i)$是用于表示维度 𝑖 曝光量的模型。不失一般性,假设基础 bid 为$b_0=1$。使用一个简单的线性模型可以认为$n_i = g(f_i) = \beta_i \cdot f_i$。
Geo1 | Geo2 | Geo3 | Total | |
---|---|---|---|---|
website1 | $n_1 = \beta_1 f_1$ | $n_2 = \beta_2 f_2$ | $n_3 = \beta_3 f_3$ | $\sum_{i=1}^{3} \beta_i f_i$ |
website2 | $n_4 = \beta_4 f_4$ | $n_5 = \beta_5 f_5$ | $n_6 = \beta_6 f_6$ | $\sum_{i=4}^{6} \beta_i f_i$ |
website3 | $n_7 = \beta_7 f_7$ | $n_8 = \beta_8 f_8$ | $n_9 = \beta_9 f_9$ | $\sum_{i=7}^{9} \beta_i f_i$ |
… | … | … | … | $\sum_{i=1}^{9} \beta_i f_i$ |
又因为 GFP 中,$CPM_i \approx b_0 \cdot f_i = f_i$。综上可以得到如下关系,
$$ \begin{equation} \begin{aligned} & S_i = n_i \cdot CPM_i = \beta_i \cdot f_i^2 \ & R_i = RPM_i \cdot n_i = RPM_i \cdot \beta_i \cdot f_i = RPM_i \cdot \sqrt{\beta_i \cdot S_i} \end{aligned} \end{equation} $$
优化问题转化为,
$$ \begin{equation} \begin{aligned} \max_{f_i} \quad & \sum_{i=1}^{m} RPM_i \cdot \beta_i \cdot f_i \ \text{s.t.} \quad & \sum_{i=1}^{m} f_i^2 \cdot \beta_i \leq B. \end{aligned} \end{equation} $$
每个$f_i$的解析解如下,
$$ \hat{f}i = \sqrt{\frac{RPM_i^2}{\sum{j=1}^{m} RPM_j^2 \cdot \beta_j} \cdot B}. $$
这个方法有两个弊端,
- 维度爆炸。
- 需要为每个 segment 都分配一个系数。
- 系数的数量为,$\Theta\left(I^K\right)$,其中$K$是维数,$I$是每个 dimension 中组的数量。
- 如果 segment 的数量很大,那数据将过于系数,将无法有效的计算 $RPM_i$ ,$g(f_i)$。
Overlapping Dimensions
这里改为每个 group 分配系数,而非每个 segment,参数的数量减少到$\Theta\left(I \cdot K\right)$。$f_j^i$表示第$i$个维度的第$j$个 group。
Geo1 ($f_1^2$) | Geo2 ($f_2^2$) | Geo3 ($f_3^2$) | Total | |
---|---|---|---|---|
website1 ($f_1^1$) | $-$ | $-$ | $-$ | $n_1^1 = g(f_1^1, f_{[1,2,3]}^2)$ |
website2 ($f_2^1$) | $-$ | $-$ | $-$ | $n_2^1 = g(f_2^1, f_{[1,2,3]}^2)$ |
website3 ($f_3^1$) | $-$ | $-$ | $-$ | $n_3^1 = g(f_3^1, f_{[1,2,3]}^2)$ |
Total | $n_1^2 = g(f_1^2, f_{[1,2,3]}^1)$ | $n_2^2 = g(f_2^2, f_{[1,2,3]}^1)$ | $n_3^2 = g(f_3^2, f_{[1,2,3]}^1)$ | $= \sum_{i=1}^3 n_i^1 = \sum_{i=1}^3 n_i^2$ |
假设 bid factor 是可以分解的$f_l = f_w^1 \cdot f_z^2$,$l$表示两个 dimension 的其中一组不相交的维度,此时每个 segment 的 bid factor 由两个 group 的 bid factor 决定$b = b_0 \cdot f_w^1 \cdot f_z^2$。
每个 dimension 的 cost 和总 cost 如下,其中$K$和$I$分别表示维数和每个 dimension 的 group 数(假设都相同),
$$ \begin{equation} \begin{aligned} S^i & = \sum_{j=1}^{I} S^{i}j = B \ \sum{i=1}^{K} S^i & = K \cdot B. \end{aligned} \end{equation} $$
由于不同 dimension 的 group 存在相互重叠,因此每个 segment 的数据可以使用更多数据来表示。此时优化问题变为,
$$ \begin{equation} \begin{aligned} \max_{f_i^k} \quad & \frac{1}{K} \sum_{k=1}^{K} \sum_{i=1}^{I_k} n_i^k \cdot RPM_i^k \ \text{s.t.} \quad & \frac{1}{K} \sum_{k=1}^{K} \sum_{i=1}^{I_k} n_i^k \cdot CPM_i^k \leq B. \end{aligned} \end{equation} $$
CPM 使用一个简单线性模型表示,$CPM_i^k = a + b \cdot f_i^k$。
展现量使用如下模型表示,最后一个项表示其他 dimension 的 bid factor 的影响。
$$n_i^k = g(f_1^1, \dots, f_I^K) = a^k + \left( \beta_i^k \cdot f_i^k \right) \cdot \left( \prod_{d \neq k} \sum_{j=1}^{I} \beta_j^d \cdot f_j^d \right)$$
Dimension Selection and Evaluation
简单来说作者选择 dimension 的原则是,能够在不同 group 之间最大化 RPM 差异的 dimension。以便进行有效的 bid 调整。
Grouping Methods
Random
使得展现量均匀,但无法保证 RPM 在各个 group 之间的区分度。
Two-step heuristic
- Sort all $v \in V$ based on $\text{RPM}(v)$ in ascending order, resulting in a sorted list: $V’ = { v’_1, v’_2, \ldots, v’_n } \quad \text{such that} \quad \text{RPM}(v’_1) \leq \text{RPM}(v’_2) \leq \ldots \leq \text{RPM}(v’_n)$
- Assign Group Labels:
- Initialize: $g = 1 \quad \text{(group label)}, \quad I_{\text{cumulative}} = 0 \quad \text{(cumulative impression volume)}.$
- For each $v’_i \in V’$:
- Assign the current group label $ g $ to $v’_i$.
- Update the cumulative impression volume: $I_{\text{cumulative}} \leftarrow I_{\text{cumulative}} + I(v’_i)$
- If $I_{\text{cumulative}} \geq I_{\text{min}}$
then:
- Increment the group label: $g \leftarrow g + 1$
- Reset the cumulative impression volume: $I_{\text{cumulative}} \leftarrow 0$
其他
- Hierarchical grouping
- Categorical grouping
- Time-based grouping
Evaluation of Dimensions and Groups
RPM Distances
比较不同 group 之间 RPM 的趋势(每日 RPM),选择差异较大的。
$$ r(a, b) = \frac{ \sum_{t=1}^{T} 1\left( RPM_{\text{grp}}^t a > RPM_{\text{grp}}^t b \right) + 1 }{ \sum_{t=1}^{T} 1\left( RPM_{\text{grp}}^t a \leq RPM_{\text{grp}}^t b \right) + 1 } $$
$$ pairwise_distance(a, b) = \left| \sum_{t=1}^{T} \left( RPM_{\text{grp}}^t a - RPM_{\text{grp}}^t b \right) \right| + \lambda \cdot \frac{\max \left{ r, \frac{1}{r} \right}}{T} $$
Information Value
特征选择中的方法之一。
原始 | 修改版 | |
---|---|---|
$WOE$ | $WoE_{\text{category}i} = \ln \left( \frac{\left( \frac{\text{non_events}{\text{category}i}}{\text{non_events}{\text{total}}} \right)}{\left( \frac{\text{events}_{\text{category}i}}{\text{events}{\text{total}}} \right)} \right)$ | $Modified , WOE_i = \left[ \log \left( \frac{% \text{conversions}_i}{% \text{impressions}_i} \right) \right] \times 100%$ |
$IV$ | $IV_{\text{category}i} = \sum \left( \left( \frac{\text{non_events}{\text{category}i}}{\text{non_events}{\text{total}}} \right) - \left( \frac{\text{events}{\text{category}i}}{\text{events}{\text{total}}} \right) \right) \times WoE{\text{category}_i}$ | $IV = \sum_{i=1}^{n} \left( % \text{conversions}_i - % \text{impressions}_i \right) \times \log \left( \frac{% \text{conversions}_i}{% \text{impressions}_i} \right)$ |
Mutual Information
前面两个方法主要用于在某个 dimension 中评估多个 group。
评估多个 dimension 时,使用互信息。特征选择中的方法之一。
$$ MI(g_i, g_j, Y) = \sum_{(i,j) \in (g_i, g_j)} \sum_{y \in Y} p(i,j,y) \cdot \log \left( \frac{p(i,j,y)}{p(i,j) \cdot p(y)} \right) $$
其中,
- $g_i$为第$i$个 dimension 的 label
- $p(i,j)$是来自两个 dimension 的两个 group 的展现次数的联合分布密度函数
- $p(i, j, y)$是$(g_i, g_j, Y)$的联合分布密度函数