从0到1设计一个CPC分时自动投放系统(三)——效果和评估

前言

上篇文章我们设计了一个简单的算法,并分析了的边界条件和边界情况。这篇文章,我们将评估推广通自动投放算法使用前和使用后的效果,看看实际情况是怎么样的。

文章传送门:
从0到1设计一个CPC分时自动投放系统(一)——问题和背景
从0到1设计一个CPC分时自动投放系统(二)——算法和设计

阅读本文大约需要11分钟

参考基准

推广通投放的基准是人工投放。人工投放一般分几种方式:

  • 方式一:设定一个价格基本不变:最偷懒、也是最方便的方式。把出价一直设为2元或者2.5元,最多上下浮动调整。这种方式一般不精准,不能根据时段分开,但是节省人力。
从0到1设计一个CPC分时自动投放系统(三)——效果和评估_第1张图片
图为推广通金额消耗,纵坐标为“消耗金额(元)”,全天预算设定400,出价为3元,当天为周三。中间只在17:00左右更改过一次价格。可以看到凌晨消耗量较小,中午开始到下午消耗逐渐增多,到了夜间又减少。
  • 方式二:在特定时间段内提升投放:适合预算较少的情况。这种策略一般适合想对时间精准投放的商户,把握黄金流量时间来投放。
从0到1设计一个CPC分时自动投放系统(三)——效果和评估_第2张图片
按照时段投放,纵坐标为“消耗金额(元)”,全天预算400,当天为周三。在12:00~15:00,18:00前后,21:00前后时段投放比较多。这种方式需要专人管理推广通的投放。
  • 方式三:“拍脑门”投放:没有策略,随意投放。想加就加,想减就减,预算耗尽为止。

自动投放效果

参数设定

自动投放之前,我们先要设定时段和时段内的投放金额,用来模拟方式二。根据之前的分析,我们做出如下设定:

时段 投放金额(元)
0:00~1:00 20
1:01~7:00 10
7:01~9:00 10
9:01~12:00 20
12:01~14:00 80
14:01~17:00 60
17:01~19:00 80
19:01~21:00 20
21:01~22:00 60
22:01~24:00 40
合计 400

开始投放

我们按照之前的投放策略执行程序,执行结果如下:

从0到1设计一个CPC分时自动投放系统(三)——效果和评估_第3张图片
按照时段投放,纵坐标为“消耗金额(元)”,全天预算400,当天为周三。可以看到投放点击量为111,点击均价3.6元。消耗主要集中在11:00, 14:00和18:00左右。但是效果并不好,因为时间虽然集中,但是点击均价过高。在这种情况下,注意12:00~14:00时段,设定的预算还提早消耗完毕。没有达到预期效果

从图里可以看到,消耗主要集中在11:00, 14:00和18:00。但是效果并不好,因为时间虽然集中,但是点击均价过高。在这种情况下,特别注意12:00~14:00时段,设定的预算还提早消耗完毕。并且,在夜间19:00左右,当日预算耗尽,导致晚上没有预算投放。总体来说,没有达到预期效果。

原因在哪里呢?

我们导出出价记录看看:

从0到1设计一个CPC分时自动投放系统(三)——效果和评估_第4张图片
1月13日12:00~13:30分推广通自动投放记录,H列为点评出价,I列为美团出价

可以看到点评出价和美团出价极为不稳定,价格经常一下从2元跳到3~4元,只投放了5分钟立马就又降下来了。总的来说,“抖动”严重。

为什么会出现这样的情况呢?和开发同学对了一下以后,发现程序没有问题。于是验算了一下算法。最后发现是算法本身的问题。问题主要出在:

  • 出价上升太快,瞬间过高出价导致广告位过于靠前,一下吸引了太多流量1,于是预算流失太快。在下一次轮询时发现钱所剩无几,于是算法立即下调出价。
  • 这种情况频繁出现,导致平均出价过高,投放效果不佳。

改进

根据以上经验,我们将算法做出如下改进。

加入步长参数

改进公式:

其中

改进后的公式设定了一个出价提升缓冲参数 0.15,可以让算法在提升出价时缓慢提升,不会一下子提升的太高,这样就可以抑制抖动。

从0到1设计一个CPC分时自动投放系统(三)——效果和评估_第5张图片
经过调整后的推广通消耗,可见时段内的出价断层没有了

经过调整后的推广通消耗,可见时段内的出价断层没有了

至于为什么是 0.15,这个是我们试出来的参数,不仅能明显抑制抖动,而且可以保持出价在一个相对合适的范围。

再调取出价记录看看:

从0到1设计一个CPC分时自动投放系统(三)——效果和评估_第6张图片
出价能够缓慢调整了,很棒

后面要做什么

投放策略的来源

尽管目前已经可以按照预设的时间段自动调整出价,但是仍然要事先设定时段内投放方案。投放方案是通过经验确定的,人的经验能靠得住吗。

技术宅从不相信人所谓的经验,于是,我问自己:能不能根据以往的投放经验,结合投放后的效果,来自动设定投放策略呢?

机器学习迷思

我于是很快想到。既然以前投放的记录是一条一条的数据,应该可以从这些数据出发,用机器学习的方式寻找规律,给出当前情况下最优的出价。

如果用机器学习,也许可以这样:

将以往投放记录和出价记录一起看作训练集 ,那么我们需要为每个 设定一个分值,视为 。之后训练模型,有了模型就能预测出价了。2

最后一个问题:分数应该怎么定义?

合理的方式是,从运营数据里估算一个值来定义。一般来说,可供参考的数据可以是订单量、电话联系数、点击量等。

结语

这篇文章里,我们首先参考了人工投放方式,作为基线。然后,通过检查程序的出价记录和推广通的投放情况,我们发现了公式里的抖动问题并做了改进。结果还不错。

最后,我们提出了一个使用机器学习方法的思路。

大家可以期待一下,如果有机会,以后我们也许会尝试用机器学习处理推广通问题。

最后,我是个技术宅,如果文章中对于数学表述有不妥当的地方,请大家指出谢谢。

注释和参考

  1. 越靠前的广告位,出价越高。因为:消耗金额 = 单价 x 点击量,在竞价排名中,单价越高广告位越靠前,点击量越高。如果假设点击量和广告位的位置为幂律关系,而广告位的位置与出价为线性关系,那么消耗金额与单价也为幂律关系。

  2. 机器学习算法是如何工作的?:How Machine Learning Algorithms Work (they learn a mapping of input to output) (machinelearningmastery.com)

版权声明

本作品采用知识共享署名 4.0 国际许可协议进行许可。

你可能感兴趣的:(从0到1设计一个CPC分时自动投放系统(三)——效果和评估)