原文:hhttp://www.flickering.cn/ads/2014/06/%E8%BD%AC%E5%8C%96%E7%8E%87%E9%A2%84%E4%BC%B0%E2%80%94%E2%80%94%E5%BC%95%E8%A8%80/
最近几年,“计算广告学”的概念风生水起,让我们这些从事在线广告匹配技术的程序猿着实荣耀了一把。这在参加校园招聘时最有所体会,前几年学生经常问面试官的问题是“你们做网页搜索吗?”,这些年学生更经常问“你们做广告吗,你们做大数据挖掘吗?”。每当这个时候,我的心中就会油然而生满满的幸福感,还要装着没什么的样子回答“当然了”。
不过,这里我们不会聊“计算广告学”,因为这个概念已经被很多前辈讲的系统且详尽,如最早提出“Computational Advertising”的Andrei Broder和前Yahoo!高级科学家刘鹏。这里我们只会聊“计算广告学”中的一个子集——转化率预估(Conversion Modeling),我们选择它不是因为它简单而是因为它很难,这样才会聊的津津有味。
要理解转化率预估,先得理解互联网广告的商业模式,业内常见的商业模式有四种(图1):1) CPM,按展现付费;2)CPC,按点击付费;3)CPA,按转化付费;4)CPS,按销售分成。容易理解,广告主最欢迎CPA模式,因为这种模式的广告投放效率最高,广告主不必为无效的展现和点击买单。然而,业内做CPA的广告网络(Ad Network)并不多,主要原因是转化数据难以收集,腾讯的广告系统广点通有天然的优势:植根于电商平台和开放平台,我们可以获取到电商类广告和应用类广告的转化数据。以数据为基础,再结合大规模机器学习算法,我们就可以实现广告转化率的实时预估——这对于CPA模式的广告匹配是很重要的,因为它是广告排序和计费的基础。如图2所示,广告平台会按期望收益对广告进行排序,而广告的期望收益等于广告主出价(Bid)和广告预估转化率(pConversion,广告展现时发生转化行为的概率)的乘积:
图1
图2
也许读者要说了,计算pConversion很容易啊——统计每个广告的展现次数Impressions和转化次数Conversions,并令pConversion=ConversionsImpressions不就可以了?这种方法是把pConversion当做服从二项分布的变量,通过ConversionsImpressions计算pConversion的点估计。乍一看这种方法没什么问题,但仔细想想问题还真不少:
1) 不是每个广告都有展现的,比如对于新广告Impressions = 0;
2) 即便广告有展现,但当Impressions和Conversions不充分时,点估计就会有问题,比如Conversions = 1,Impressions = 1,我们显然不能轻易得到结论pConversion = 1。这就好比我们通过抽样去得到计算产品的废品率,不能因为只抽取了一个产品是废品,我们就说这批次产品的废品率是100%。从统计学上去理解,虽然ConversionsImpressions是pConversion的无偏估计,但当Impressions和Conversions不充分时,点估计的置信区间会很大,此时用ConversionsImpressions作为pConversion的估计值就有问题;
3) 引入一些平滑(Smoothing)技术能否解决2)中的问题呢?答案是肯定的,不过要知道,影响广告转化的因素很多,只考虑广告的展现和转化次数,而忽略其他特征的做法会影响预估的准确率。比如一个卖女装的广告,展现给男性和女性时的转化率是不同的,不能一概用ConversionsImpressions去做估计。
此时,就要祭出我们的法宝——大规模机器学习技术了。接下来的几章,我们会介绍:
第二章 逻辑回归技术
第三章 并行逻辑回归技术
第四章 特征选择
第五章 在线学习技术
第六章 深度学习