基于集成模型的移动应用广告转化率预测①
2019-11-15何鸿业
彭 赞,郑 瑾,何鸿业
(中南大学 信息科学与工程学院,长沙 410083)
广告的历史源远流长,生活中存在许多不同形式的广告.近十年来,互联网产业的高速发展为广告业提供了崭新的发展平台,从根本上改变了广告业的布局,从而形成了拥有巨大市场价值的互联网广告业.美国互联广告局指出,在2016年,移动互联网广告收入首次在互联网广告收入中占比超过50%,达到了50.52%,移动互联网广告5年内的复合年均增长率CAGR(Compound Annual Growth Rate)高达87%,与之对比的非移动互联广告的CAGR 仅为6%[1].由此可以得到,移动互联网广告已经成为了一个拥有巨大价值的产业,如何使广告主、广告商以及用户获取他们最大的收益是一件十分重要的事.
移动App 广告预测中一个重要参数为转化率CVR (ConVersion Rate),它是一个衡量每次行动成本CPA (Cost Per Action/Pay perAction)广告效果的指标,简言之就是用户点击广告到成为一个有效激活或者注册甚至付费用户的转化率.目前,中国互联网尤其是移动互联网的迅猛发展直接带动中国互联网广告行业的迅速崛起.CVR (Conversion Rate)作为甲方的一个考核标准,一般是限于推广广告主和推广渠道之间的专用名词,是考核乙方渠道点击用户是否真实、是否优质的重要标准,相关的广告公司越来越重视广告转化率或者点击率的预测[2-4].归根结底CVR 预测也就是从海量的历史数据中选取有效的特征数据,特征组合以及机器学习模型来预测CVR,从而提高其准确率.
在此基础上,本文主要做了以下两点工作:第一,在特征工程阶段,我们使用了统计学和特征工程的方法,获得了大量有效的特征数据,为我们的研究提供了可靠的基础;第二,在逻辑回归(Logistic Regression,LR)、XGBoost、LightGBM 这3 种模型的基础上,提出了预测App 广告转化率的集成模型——SXL 和BLLX.在App 广告的赛题数据上,验证SXL 和BLLX模型的有效性,提高App 广告转化率的预测能力.
1 相关工作
1.1 机器学习模型
机器学习是一种计算机程序,可以在给定任务T 和性能评估P 下学习一种确定类别的经验E,如果它在任务T 中的性能可以用P 来衡量,那么它将能够有效地学习经验E[5].一般,研究人员把广告转化率预测当成一个二分类问题进行研究,机器学习模型中的线性模型可以用来处理该类问题.线性模型剧本简单易实现的特点,可以处理超大规模的数据[6].文献[7]首次把广告点击率预测问题当作一个回归问题来处理,并使用传统机器学习模型逻辑回归模型(LR),用来预测广告点击率.文献[8]使用L-BFGS(该方法是拟牛顿法的优化算法) 方法来训练LR 模型,在模型中选择L1 正则化,避免模型的过拟合,以此来提高预测的准确率.文献[9]从Web 搜索引擎日志中挖掘点击数据,利用支持向量机(SVM)实现对广告点击率的预测.文献[10]使用GBDT 模型来处理Facebook 广告点击率的非线性特征数据,将Facebook 中的实际数据向量经过独热编码,来进行训练.在本文研究中,我们结合机器学习的方法,以LR 模型作为对比模型,使用GBDT 的改进模型XGBoost 和LightGBM 进行训练.
1.2 特征工程
特征工程在机器学习中占有相当重要的地位,特征工程是利用数据领域的相关知识来创建特征并且能够使机器学习算法达到最佳性能,包括三个子问题:特征选择、特征提取和特征构造[11].特征选择的目的是从特征集合中挑选出来一组最具有统计意义的特征子集,达到降低维度的效果,而特征提取是将原始数据转换成一组具有明显物理意义或者统计意义的特征.特征构造是从原始数据中人工构建新的特征,它需要人们花大量的时间去研究实际数据,思考数据之间的潜在联系.特征构造也能够通过FM (因子分解机)和深度学习(提取训练模型中隐藏层作为特征)等机器学习方法构造特征.文献[7]将具体广告、环境抽象成特征,用特征来达到泛化的目的,从而对广告点击率进行预测.文献[12]假设历史数据中不同种类的数据之间存在隐含的可能性,使用关键词聚类的方法,将同一层次的数据聚类到一起,形成一个聚类簇,并用该聚类簇预测广告点击率.本文研究过程中,使用特征工程处理实际数据,发掘数据中的潜在联系.
1.3 集成技术
集成模型是一个非常强大的技术,可以提高各种机器学习中任务的准确性.其思想就是充分利用不同分类算法各种的优势,取长补短,组合形成一个强大的集成框架.文献[13]中介绍了两种不同的集成思想来集成模型:1)平均法(Blending):它使用训练数据训练多个不同的单一模型,然后将模型的预测结果进行加权平均,借此来提高集成模型的准确率;2) 学习法(Stacking):它一般是将原始数据划成几等分,分别训练第一层的模型,将得到的所有的预测结果组合上原始数据,当作是第二层模型的输入,然后进行最终的预测.
集成模型存在许多问题,在集成模型过程中应该考虑集成哪些基础模型、使用什么集成方法和哪种集成模型能够取得更好的预测能力.文献[14]融合了GBDT和LR 模型,利用GBDT 模型提取数据中的特征,然后输入到LR 模型中进行训练,形成了GBDT+LR 模型,在Bing搜索上取得了不错的结果.文献[15]融合了LightGBM、XGBoost、FFM、VW 4 种算法,形成RF+LXFV 集成模型.在本文的实验中,将这2 种融合模型作为参照进行了对比分析.
在本文中,我们使用了3 种单一模型:LR、XGBoost和LightGBM.在集成思想上,首先我们使用Blending方法,按照一定的权重集成LR、XGBoost、LightGBM,形成BLLX 模型.然后使用Stacking 思想,分别集成XGBoost 和LightGBM,形成SXL 模型.
2 集成模型
本节分析研究所使用的集成模型以及基础模型,第一部分介绍基础模型,第二部分介绍集成模型,第三部分分析模型的优缺点.
2.1 基础模型
2.1.1 LR
LR 模型是优秀的二分类预测模型之一,常常被众多研究学者使用在点击率的预测问题中.对于二分类任务来说,它的输出一般只有两种情况:0 或者1.LR模型将线性函数的结果通过Sigmoid 函数计算,输出最终的预测结果.其基本模型如式(1)所示.其中Y为预测结果,x为样本,w为样本特征的权重向量,b为模型的偏置.LR 模型一般分为3 部分解决点击率预测问题:第一,寻找模型的预测函数f(x),通常我们使用sigmoid 函数作为预测函数f(x);第二,建立损失函数loss(w),一般使用极大似然估计法建立loss(w);第三,求解使损失函数loss(w)最小的参数w,一般使用梯度下降的方法求解w.
2.1.2 XGBoost
XGBoost[16]是大规模并行boosted tree 的工具,它是目前最快最好的开源boosted tree 工具包,比常见的工具包快10 倍以上.XGBoost 是以分类回归树CART为基础,对多个CART 进行组合.对于单个的CART,需要找到损失函数最小的一个分类回归树,而XGBoost通过加法模型来组合多个CART,将模型上次预测(由t-1 颗树组合成的模型) 产生的误差作为参考下一棵树(第t颗树)的建立.因此,每加入一棵树,将其损失函数不断降低.其算法的流程如下所示:
1)在每次迭代过程中加入一颗新树f(xi);
2)在每次迭代计算f(xi)的已一阶导数和二阶导数;
3)计算f(xi)的目标函数的最小损失值Obj,并根据值Obj来生成树f(xi).
2.1.3 LightGBM
尽管很多学者使用不同的优化算法来提高GBDT的效率,但当数据特征维度过高、数据量过大时,这些算法总是那么不尽人意.他们共同不足的地方是,在计算信息增益时都需要扫描所有的样本,来找到最佳的划分点,从而消耗了大量的计算时间.因此,微软为了解决这方面的问题,提出了Gradient-based One-Side Sampling 梯度单边采样(GOSS)和Exclusive Feature Bundling 互斥特征绑定(EFB)两个算法优化GDBT,将优化后的GDBT 称为LightGBM[17].
GOSS[17]提出是为了证明梯度较大的样本在计算信息增益的时起重要作用,从而能够从数量较小的样本中获得相当准确的信息增益估计值.其算法的核心思想是:在总样本中选取梯度较大的部分样本,并在剩下样本中随机选取出部分样本,两者组合成新的样本来学习新的分类器.这样的做法是为了采样的样本与总样本的分布一致和训练小梯度样本数据,从而在不改变样本的分布前提下不损失分类器学习的精确并且大大的减少了分类器学习的速率.
EFB[17]是一种能够减少高维数据的特征数并使损失最小的一种算法,将稀疏特征空间中的非0 值的特征绑定到一起形成一个特征,然后从特征绑定中建立相同的特征直方图作为单一特征,通过这种方式能够在无损精度的情况加速GBDT 的训练.
2.2 基于学习法和平均法的集成模型
本文基于LR、XGBoost 和LightGBM3 种单一模型,使用Stacking 和Blending 集成思想,提出2 种集成模型:SXL 和SSL.
2.2.1 SXL 模型
SXL 模型通过Stacking 技术,集成LightGBM 和XGBoost 两种单一模型,其整体结构如图1所示.SXL中S 代表集成模型的技术Stacking,X 和L 分别代表集成模型的基础模型XGBoost 和LightGBM.Stacking 初等模型层使用XGBoost 模型进行5 折交叉验证,最终模型从使用LightGBM 作预测.5 折交叉验证是将原始数据分成5 等分,每次训练选四折作为训练数据,另外一折作为测试数据,每一折训练得到一个预测结果,循环五次,最后将五次预测结果和原始数据拼接,得到最终模型从的训练数据.最终模型使用LightGBM 训练初等模型层得到的数据,输出最终的预测结果.
SXL 模型一共分为两层,第一层为初等模型层,其中选用XGBoost 为基础训练模型;第二层为最终模型层,选用LightGBM 为基础训练模型.SXL 模型的实现主要分为以下几个步骤:1)首先读取原始特征数据集I;2)按原始特征数据集I,平均分成5 等份Ii(i∈1,2,3,4,5);3)对每一个训练XGBoost 模型,得到Resulti;4)组合原始特征数据集I和初等模型层训练后得到的Resulti组合成新特征集D;5) 用训练最终模型层LightGBM,得到最终预测结果Result.
图1 SXL 集成模型图
2.2.2 BLLX 模型
BLLX 模型使用Blending 技术,集成LR、Light GBM、XGBoost 3 种基础单一模型.整体结构如图2所示.BLLX 模型是集成3 种单一模型的分别训练后的结果,通过一定的权重分配,来获得最后的结果.经过实验结果的对比,我们最终选择的模型权重如式(2).
图2 BLLX 集成模型图
2.3 性能分析
对于分析数据集,不同的方法处理数据集获得的结论不同,不同的机器学习模型学习数据集的方法不同,其训练结果也不一样.集成技术能够训练单一模型,结合它们的优点,提高预测的能力.XGBoost 改进了GBDT 的残差函数,利用CPU 的多线程,引入正则化项,控制模型的复杂度,使用预排序的方法实现特征并行.LightGBM 使用直方图算法,使训练过程加速,拥有更高的训练效率,相比于XGBoost,它占用更低的内存,具备处理大数据的能力.SXL 模型使用Stacking 集成思想,集成了XGBoost 和LightGBM 的优点,既能够并行进行训练,又能够得到更准确的预测结果.但是模型训练中多次训练单一模型,重复读取大量的数据,会导致模型的训练时间加倍增长,影响模型的效率,而且Stacking 技术增加了整个模型的复杂度,容易训练过拟合.BLLX 模型是在LR、XGBoost 和LightGBM 的各自训练后的结论上进行加权平均,不会导致过拟合的发生,其模型复杂度也没有SXL 模型高,更容易得到不错的预测结果.但是如何处理各个模型的权重的问题上,需要经过大量的时间计算,分配每个单一模型的权重值.
3 实验结果及分析
3.1 实验数据与预处理
本文采用的数据集来自腾讯社交广告高校算法大赛,该项比赛是以移动App 广告为研究对象,要求比赛参与者利用腾讯社交广告平台中的真实数据预测App 广告转化率,从而能够提高广告的投放效果,并且扩大广告带来的相关收入.原始数据中包含了以下数据特征:1)广告相关特征(广告主信息、广告的相关信息等);2) 用户特征(用户相关信息年龄、性别、学历、教育情况、婚姻情况等等);3)上下文特征(用户使用的手机类型、运营商、联网方式和广告位置的相关信息等).
由于数据来源于真实的广告平台中,每天都能产生大量的历史数据,每位用户都可能产生大量的广告日志记录,会造成数据中用户与转化成功的广告数量比严重不足.且在数据采集过程中,由于一些不可控的原因,会导致数据集中的数据缺失问题.针对此问题,我们根据缺失数据所属的特征进行分析,若它为连续型特征,我们会根据它的均值进行补充缺失值,若它为离散型特征,则我们会删除该条数据,虽然删除缺失值会影响后续模型预测的准确性,但是在本次的App 广告数据集中,缺失的样本几乎只占了样本总量的0.1%,删除它并不会影响样本的总体的分布.在经过处理后,我们的数据样本中包含9386 404 条数据,其中转化的App 广告条数为234 382 条,未转化的App 广告条数为9152 022 条.
3.2 评估标准
本文研究的问题是针对数据集中的每条数据样本,预测用户点击并激活App 广告的转化率.其本质上属于一个二分类问题,因为用户是否激活该App 广告,只有两个取值:0 或者1.对数损失(Log-likelihood Loss,LogLoss)是在概率论上定义的一个评估分类器的概率输出的标准.它能够通过惩罚错误的分类,完成对评估分类器的准确度的量化,为了计算LogLoss值,每个分类器必须提供样本的所属类别的概率值.对于一个二分类问题,LogLoss的计算公式如式(3)所示:
式中,yi代表第i个样本xi的类别,取值为0 或1,pi代表分类器输出的样本xi的预测概率值,取值区间在0 到1,N为样本总量.
3.3 特征提取
3.3.1 基础特征
基础特征为数据初始的特征,训练集中的每一个原始字段都可以作为基础特征,从而统计相关统计量(例如过去几天内的用户点击总量、用户是否转化过当前App 等).以训练集中的素材creative_id 为例,它是用户最直接看到的内容,对某个特定的 creative_id,我们统计过去若干天内该 creative_id 的总点击量、转化次数和转化率,作为该 creative_id 取值的3 个特征.它的物理意义是量化地描述了该素材是否更能吸引用户(点击量)和发生转化(转化率).
3.3.2 用户信息特征
基础特征以外,用户信息特征是非常重要的特征.因为一个App 广告是否得到激活转化,都是由用户主观上决定的,所以针对用户的相关行为进行分析对本次实验是十分重要的.我们通过对用户行为的分析,提取了一些相关的特征,包括:用户安装App 的总量、用户在转化该广告之间的一些行为(点击之前用户点击App 的数量等)、用户点击相同素材的广告总量等等一些与用户相关的行为特征.
3.3.3 贝叶斯平滑特征
贝叶斯平滑假设所有的广告都有一个自身的转化率,这些转化率服从于一个Beta 分布,其次对于某一个广告,给定转化次数和它自身的转化率,它的点击次数服从一个伯努利分布,最后用梯度下降来学习这个分布.当我们预测App 广告CVR 时,机器学习模型非常依赖于统计特征,每个广告的反馈CVR 都能够极大的提升预测的准确性.我们使用历史数据来获得App 广告的CVR 时存在一个问题,即在特种提取中我们统计了同一广告位App 的历史转化率,由于广告位上线有前后区别,而且上线慢的广告位统计不充分,大多数用户只点击过App 广告一次,那么它的历史转化率就是100%.如果拿这个特征训练模型,可能导致数据偏差.在贝叶斯平滑中,我们一共平滑了两种数据,一种是App 广告位置信息的贝叶斯平滑率(CF_pos),一种是App 广告素材信息的贝叶斯平滑率(CF_cre).
3.4 实验结果
3.4.1 模型参数设置
在设置XGBoost 和LightGBM 模型参数时,我们选择使用Python 学习库中的GridSearchCV 方法,对模型进行参数进行交叉验证选择出模型的合适参数,其参数设置如表1和表2所示.
3.4.2 特征提取的影响
我们使用GBDT 模型中对特征评估的方法,对我们在特征提取阶段得到的特征进行评估,得到如图3所示的重要性得分图.图中以SF 开始的特征为用户信息特征,CF 开始的特征为贝叶斯特征,小写字母开始和BF 开始的特征为基础特征.从图中我们可以得到,在经过贝叶斯平滑后得到的两个特征CF_pos 和CF_cre 的重要性得分最高,我们可以判断出App 广告的位置和广告使用的素材对App 广告成功转化有较大的影响.在基础特征中,年龄age 对App 广告成功转化的影响最大,appplatform 得分最低,我们可以得到年龄是决定App 广告转化的重要因素之一,而App 的平台(安卓和苹果)对App 广告成功转化有微弱的影响.因此我们筛选出得分少于100 的特征,得到最终的特征集.
表1 XGBoost 参数表
表2 LightGBM 参数表
接着,我们使用XGBoost 和lightGBM 两种单一模型对特征进行训练.V1 阶段我们使用原始数据集,V1-V2 和V2-V3 我们加入基础特征,V3-V4、V4-V5 和V5-V6 阶段我们加入用户信息特征,V6-V7 阶段我们加入贝叶斯平滑特征.从图4中我们可以看出,随着训练集中数据特征的增多,两个模型的LogLoss值趋向于下降,这证明我们提取的特征能够大幅度的提升模型的预测效果.
图3 特征重要性得分图
3.4.3 预测结果分析
在本文实验中,一共训练了7 种模型:LR、XGBoost、LightGBM3 种单一模型,GBDT+LR、RF+LXFV 两种用于广告转化率预测的集成模型,以及本文提出了两种集成模型SXL 和BLLX,7 种模型的训练结果如表3所示.从表中可以看出,LR 模型的效果最差,其LogLoss为0.1033;BLLX 模型的效果最好其LogLoss为0.0922;在单一模型中,XGBoost 和LightGBM 的预测能力均比LR 模型优秀;而集成模型与单一模型对比中,GBDT+LR 稍微比单一模型差,而其它3 种集成模型均比单一模型好;在4 种集成模型对比中,BLLX 模型和SXL 模型的效果比另外2 种好;在时间成本上,RF+LXFV 的时间成本最高,其原因在于集成了4 种单一模型,导致模型的复杂度提升,从而导致训练时间过长;SXL 模型在集成模型中,训练时间最短,为59.8 分钟.
图4 不同特征在模型上的效果图
表3 各模型App 广告转化预测的LogLoss 和时间成本
实验结果充分证明了我们提出的SXL 模型和BLLX模型的有效性与预测转化率的精准度,在实际使用中,BLLX 模型的时间成本比SXL 模型高,但LogLoss比BLLX 模型低,如果公司使用模型用在广告系统中,考虑到预测转化率的精度微弱提高都会带来巨大的收益情况下,建议使用BLLX 模型;而如果因为时间成本问题,在损失预测精度的情况下,可以考虑SXL 模型.
4 结论
本文通过对App 广告点击后激活的转化率预测问题的研究,使用特征工程,处理数据集,并提出了两种集成模型SXL 和BLLX.论文以腾讯社交广告算法大赛中的实际数据为基础,通过特征工程挖掘出大量的用户数据特征,提供了模型训练的训练集,为模型训练打下了坚实的基础.集成模型SXL 和BLLX 在LogLoss方法评估中都要明显高于传统机器学习模型和其它集成模型,本文模型的有效性得到了充分的验证.当然本文也存在很多不足的地方,例如在特征提取中,没有考虑到时间信息对App 广告转化率的影响.在今后的研究中,考虑挖掘时间信息,进一步提高模型的预测能力.