首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DSP中的基础算法和模型的详细解析(2)

DSP中的基础算法和模型的详细解析(2)

p(c|s,i)模型:  要得到这个模型的训练数据,还有一个冷启动的过程。必须事先对这些segments在这些inventories上投放,然后把那些最终带来转化的展现标记为正例,没有最终带来转化的展现标记为负例。m6d认为一次转化是由之前7天内该用户见到的最后一次展现带来的。这个模型的特征只有两类,一类就是segment id, 另外一类就是inventory id。也就是说,每一个样本只有两个非0的特征,一个是segment id对应的那个特征,另外一个是inventory id对应的那个特征。m6d没有组合segment和inventory特征,这样做的结果是:不管对于哪个segment,某个特定的inventory对最后预估值的贡献都是一样的。这个假设可以认为在大多数情况下是合理的。而且如果真要把这些组合特征加入模型,特征空间一下子又大了不少,对于少得可怜的训练数据来说,很容易就过拟合了。
p(c|s)模型:和p(c|s,i)模型基本一样,区别就是特征只有segment id。
这两个模型的正例比例都非常低,因此进行了采样(sampling)和修正(recalibration)。这是一种很常见的处理方式,不了解的朋友可以Google这篇文章:《Logistic regression in rare events》。
考虑了广告位(inventory)和不考虑广告位对转化率的预估由有多大的影响呢?以下的图展示了区别:

考虑广告位信息后,AUC提升了0.0346,还是非常明显的。这个Lift也是一种评估指标,后面会详细解释。这里可以看到Lift指标也明显提升了。
具体看个例子。对于一个hotel广告主的一个compaign,不同的广告位预估出来的 Φ 值也很不相同,旅游类的预估值最高,社会媒体的最低。说明这个模型还是有一定区分度的。

评估
1. 模型评估
通常我们用AUC来评估模型的排序能力,但是AUC有一个问题是它无差别地考察了一个列表中所有位置的排序合理性,而对于我们的audience selection模型,转化率预估模型,我们更看重是否把最靠谱的拍在了前面,换句话说,是更看重这个列表中,前面的位置的排序合理性。因此m6d用了Lift指标。Lift@5% 指标衡量了在前5%的结果中,正例的比例比在随机情况下正例出现的比例高了多少。具体的Lift定义可以看:http://en.wikipedia.org/wiki/Lift_(data_mining)
2. 业务目标评估
对于DSP的投放效果,m6d主要会看两个业务指标,一个是转化率(PVSVR), 即转化数除以展现数(即CTR*CVR);另外一个是CPA, 即获得每一个转化,平均花了多少钱。
m6d的广告主大多喜欢按CPM方式购买展现,找n家DSP来同时投放,给一样的CPM,然后看谁的转化率高。因此转化率是DSP赖以生存的指标之一。
转化率是和价格无关的,而如果一家DSP虽然转化率低10%,但是每个展现的价格(cpm)比别人低50%,那么对于广告主来说,还是会选择它的。因为它的CPA更低了,即获取一个转化,广告主需要付出的成本更低了。
所以,DSP的转化率是和利润挂钩的,要么把技术做得很好提高转化率,这样在保持CPA不变的情况下,向广告主收取更高的CPM,从而赚更多的钱。否则就只能比别人卖得更便宜了,甚至亏本了。当然,聪明的DSP会在早期先砸VC的钱亏本吸引广告主来投放,投放是可以累积数据的,有了数据下次就可以把转化率做得更好,从而再把钱赚回来。
也有广告主是按每个点击付费的(CPC),有的广告主是给一笔固定的投放预算,但其实最后都是类似的,广告主最终会去换算成CPA来进行比较。(只重视展现量的广告主除外)
三、延伸讨论上面的篇幅研究了m6d的DSP的算法和模型,我觉得有些地方可能可以有不同的做法(不一定更优),写出来和大家探讨一下:
1. bidding中的转化率模型
前面的audience selection model (look-alike model)对每个compaign分别建模还有可能是因为在每个compaign训练数据充分的情况下可能取得更好的预估效果。而后面的两个转化率模型将每个compaign分别建模就一定是因为privacy的原因了,因为每个compaign的这2个模型的训练数据太少了,而且m6d用的是转化作为正样本,还不是点击作为正样本,那正例就更少了。所以m6d不得不将u替换成s来建模,将相似广告位(inventory)用同一个inventory id表示,来拼命减少特征空间,在少得可怜的数据下,牺牲bias来换取低variance从而抑制过拟合,提高模型泛化能力。
如果没有那么高的privacy要求,是可以对所有compaign的数据一起来训练一个的统一模型的。事实上,我了解到国内大多数公司都是这么做的。再考虑到国内的广告主对点击也比较看重,所以更通常一点的建模方式是:对所有compaign建立一个CTR模型(预估点击率=点击/展现)p(click|u,i,a),这里的a指一个compaign,和一个CVR模型(转化/点击)p(conversion|u,i,a)。这样训练数据就更丰富了,也可以直接对每个用户来预估,不需要对整个segment来预估。当然,这样的一个结果是在某个广告主网站上的点击和转化数据,可能对另外一个广告主的点击和转化预估起到正向的作用。在不明显有偏向性的算法设计下,可能会使大多数广告主的预估都有一些提升(尤其是那些数据很少的小广告主)。
2. 内部竞价机制
m6d的算法在内部竞价时是选择bid最高的compaign。这是一种明显的贪心算法,在考虑到每个广告主有预算限制的情况下,不一定是最优的。举个例子,广告主A要的用户是对乔丹感兴趣的用户,因为他是卖乔丹的运动鞋的,但是他们是小公司,出不起太高的价来打广告;广告主B是的要的用户是对篮球感兴趣的用户。这个时候来了一个经常上新浪体育乔丹个人页面的用户,广告主A经过bidding算法后出了封顶价3块钱,广告主B很有钱,基础出价就是4块钱,bidding算法调整后比如是4.5块。那么广告主B的广告会在内部胜出。当事实上对篮球感兴趣的用户很多,广告主B完全可以在其他流量上买到足够多的展现而达到当日预算限额,而对乔丹感兴趣的用户的展现可能1天就2,3个,广告主A这次买不到,可能当日预算一点都花不出去。
这个优化在系统进化早期可能效果不明显,当平台成熟了,量上去了,可能会有作用。
继承事业,薪火相传
返回列表