11

我将很快开始一个横幅旋转脚本,我对如何开发它有点困惑。假设客户要求

“在接下来的 10 天内,以 10,000 美元的价格获得 10,000 次展示。”

另一个客户要求

“100 美元的 1,000 次展示。”

第三个要求

“1,000 次点击或 10,000 次展示只需 5,000 美元。”

我如何确定在页面请求时显示哪个横幅?我如何权衡一个对另一个?显然,第一个请求相当重要,因为我希望在一个时间窗口内提供一定数量的展示。

第二个客户几乎没有那么重要,因为他们不关心时间窗口,他们只想要一些面对面的时间。

最后一位客户希望对展示次数/点击次数设置 n 或 m 限制,这使事情变得更加困难。

我已经非常有信心,我需要从这些场景中提取一些权重来确定谁得到了最多的关注。我的问题是什么类型的算法可以处理这个问题,其次,我怎样才能在不总是为每个请求提供最重要的横幅的情况下按重量提供横幅?

4

4 回答 4

8

困难主要来自时间限制。我会将未指定时间限制的任何人的优先级除以 365(一年),然后将时间用作权重因子的一部分。所以:

Client 1 priority: 10000/10 = 1000 
Client 2 priority: 1000/365 ~ 3 
Client 3 priority: 10000/365 ~30

这应该会给你一个相当不错的优先级指标。现在,您不能混合和匹配展示次数和点击次数,可以吗?他们要么走印象路线,要么走点击路线。鉴于您无法控制点击,但您可以控制展示次数(至少,比点击次数更多),我会根据展示次数来衡量它。

于 2009-08-03T18:45:10.557 回答
6

使用随机数生成器来选择要展示的广告,并为每个广告赋予优先级权重。为想要更多展示次数或有截止日期的客户设置更高的权重因子。如果时间快到了,您可以增加权重因子。

一旦客户达到他们请求的展示次数,将权重降至 0 以防止他们的广告展示。

默认权重可能为 1 左右,允许客户支付额外费用以提高优先级(无需告诉他们机制——将其称为“高级”放置等)。


编辑:加权细节

您可以根据需要将其设置为简单或复杂,但基本版本将包含以下术语:

  • 如果广告已达到购买的展示次数/点击次数,则权重为 0
  • 基本权重(可能为 1.0)
  • 将权重乘以剩余印象数/所有客户剩余的总印象数
  • 如果剩余的展示次数/点击次数很小,请添加一个小常量——确保他们获得完成帐户所需的最后几个
  • 对于截止日期客户:添加期限为(剩余展示次数/购买的展示次数)/(剩余时间/总时间)

截止日期客户应限制在所有页面显示的 90% 或其他东西上,以确保他们不会在竞争中胜过其他人。最后一个术语为截止日期客户提供了“紧迫性”——随着截止日期的到来,它会变得无穷大,因此您应该在剩余时间段上设置一个条件,以防止出现问题。

于 2009-08-03T18:41:08.850 回答
4

Microsoft Commerce Server 包含 NOD 算法(请参阅http://msdn.microsoft.com/en-us/library/ms960081%28v=cs.70%29.aspxhttp://msdn.microsoft.com/en-us /图书馆/ee825423%28v=cs.10%29.aspx )

我在 3 个不同的广告服务器中使用了这个公式的派生版本,结果证明这对我的条件很有效。

关于您的情况的基本公式使用一个名为 NOD 的变量,它是“Need of Delivery”的缩写。在任何给定时间,横幅的“基本”点头公式是:

NOD=(剩余事件/请求的事件总数)*(总运行时间/剩余运行时间)

请注意,“事件”是一个通用术语,可能代表展示次数、点击次数、转化次数等,具体取决于您的系统。

该等式表明,所有横幅的生命初始值都是 1.0,因为 (e / e) * (t / t) = 1.0

大于 1 的 NOD 值意味着您落后于计划,而介于 0 和 1 之间的 NOD 通常意味着您显示横幅“太快”。0.9 到 1.2 之间的值通常在可接受的范围内(这不是技术范围,而是业务经验)。

只要服务比率与持续时间比率匹配,值就会保持在 1.0 左右。

对于特定的广告位,算法会检查广告位上所有可用横幅目标表的 NOD。假设您在一个插槽上有 3 个横幅可用,NOD 值为 0.6、1.35 和 1.05,它们加起来为 3.0。然后每个横幅显示的相对概率变为 20%、45% 和 35%,顺序为 [0.6 / (0.6 + 1.35 + 1.05)] = 20%

该算法使用加权概率分布,这意味着即使 NOD 值最小的横幅也有机会展示。虽然基本公式使用这种方法,但业务决策通常总是迫使我实施比原始公式更倾向于紧急 NOD 值的算法。所以,我取了基本的 NOD 并将它们与自己相乘。在同一示例中,概率依次变为 11%、55.5% 和 33.5%。

根据您的情况,您可以考虑稍微更改一下公式以满足您的需要。首先,为了能够比较您通过显示横幅获得的收入,您应该将所有显示类型(展示、点击、操作等)转换为一个共同的 eCPM 值。然后,您可以将此 eCPM 用作原始方程的乘数。

对于尚未发布的广告系列,计算 eCPM(有效 CPM)可能会很棘手,在这种情况下,您应该使用历史数据。

让我稍微解释一下这部分:当您尝试比较通过“显示”单个横幅获得的可能收入时,您不需要比较基于印象的预算。对于基于点击的预算,您应该使用历史点击率值来猜测“我的系统需要提供多少展示次数才能获得 X 次点击”。更高级的算法可能会利用“我的系统需要提供多少印象才能在 y 库存中获得 X 类别的广告系列”。

然后你的最终方程变为:

NOD = eCPM *(剩余事件/请求的事件总数)*(总运行时间/剩余运行时间)

您始终可以考虑使用 eCPM 的功能来比较结果。就像我改变原始公式以支持更紧急的活动的方式一样,您可能更喜欢“更多付费”的活动。

于 2013-10-11T09:19:20.200 回答
3

我真的很喜欢 AlbertoPL 的基于时间的方法,但他没有考虑点击次数。很容易证明点击相关的病理案例:

  • 客户 A 为 1 次点击或 10,000 次展示提供 1000 美元
  • 客户 B 为 5000 次点击或 10,000 次展示提供 1000 美元。

任何理性的人都会给予一键式用户更高的优先级。计算实际上非常简单:假设您的点击为每次点击 100 次展示。

  • 客户 A 想要 10,000 次展示或 1 次点击,因此我们需要至少 100 次展示才能获得报酬。以每 100 次展示 1000 美元的成本计算,您可以计算出您的客户愿意为每次展示支付 10 美元。

  • 客户 B 想要 10,000 次展示或 5000 次点击。5000 次点击需要 500,000 次展示,在此之前我们显然会达到 10,000 次展示的标记,因此我们假设客户真的愿意为 10,000 次展示支付 1000 美元,或 0.10 美元/次展示。

我们通过最大化我们的 $$$$$/印象来最大化收入,因此客户 A 具有优先权。让我们使用 OP 中提供的数字:

客户 1:

  • 在接下来的 10 天内以 10,000 美元的价格获得 10,000 次展示
  • = 至少 10,000 次展示 * 1 美元/次展示 / 10 天
  • = 1000 美元/天

客户 2:

  • 100 美元的 1,000 次展示
  • = 最少 1,000 次展示 * $.01/次展示 / 365 天
  • = 0.27 美元/天。

客户 3:

  • 5000 美元的 1,000 次点击或 10,000 次展示
  • = min(100,000 次展示获得 1,000 次点击,10,000 次展示)= 10,000 次展示,获得 5000 美元
  • = 至少 10,000 次展示 * 0.5 美元/次展示 / 365
  • = 13.7 美元/天。

客户根据他们每天支付的金额优先考虑。

于 2009-08-03T19:30:59.793 回答