背景
随着互联网的高速普及与发展,“互联网+”成为当今的各行业发展的新思维,新方向。在这浪潮的冲击下,传统广告行业也迎来脱胎换骨的蜕变。与报纸、杂志、电视、广播这些传统的传播媒体广告相比,新生的互联网广告拥有天然优势:它能够追踪、研究用户的偏好,并在此基础上进行精准营销。通过每位网民的搜索行为、浏览习惯等个人信息的长期积累和深度分析,广告商便可以深入了解每一位用户的行为和爱好并按照他们的行为、喜好等为其呈现最适合的广告信息,这使得广告的设定不再千篇一律。可以说,数据与计算成为互联网广告的灵魂。
在线广告为广告商带来了巨大的商机和收益,他们从传统媒体逐渐向在线媒体转变。广告商在推送广告之前会预估用户会对广告发生点击行为的概率,然后决定是否会向当前用户推送广告,相比于传统的广告,互联网广告有效避免了资源的浪费。同时,用户对推送的广告的点击行为作为一种反馈,可以促进广告商对推送广告的机制的优化,进一步提升用户的体验。此外,广告商和广告主之间的计费标准多种多样,其中,主流的CPC标准就与点击率直接相关。由此看来,不论是从资源成本还是从直接收益来讲,准确的点击率预测对于广告商都有着举足轻重的贡献。
由于点击率预测存在的一些问题,如:数据量大、数据稀疏等,目前工业界还是偏于使用浅层的模型来解决,因为复杂模型难以训练、不易部署到生产环境中及解释性弱等缺点,所以使用浅层模型时,人们将更多的注意力放在人工构造特征上,即通过一些特征间的简单运算构造显性的组合特征来提高点击率预测模型的性能,并没有深度挖掘数据间隐性的组合特征和特征内在的高度非线性关系。而此时,深度学习在计算机视觉、自然语言处理和语音识别等很多领域取得了非常惊人的成绩,而且深度学习应用的领域还在不断拓展。因此,利用深度学习和海量历史数据对广告点击率进行预估是一项非常有意义的工作。
相关技术的现状
广告点击率预测一直是互联网广告公司研究的重点内容之一,目前,学术界也涌现出越来越多对它的研究。下面将对广告点击率的研究现状进行介绍。
点击率预测,起初最常用的模型是线性模型,如:逻辑回归(Logistic Regression,LR),LR模型因为是线性模型,所以具有很好的可解释性,分布式计算迭代速度快,适合工业界使用。并且LR模型的输出是0-1的连续值,取值范围天然契合概率。
在特征相互独立的情况下,LR效果虽然不错,但是很多情况下,特征之间的交互关系是非常重要的,因此需要进行特征间的组合与关联,以此来构造新的特征。然而,人工进行特征组合通常会存在非常多的困难,如特征爆炸、隐含关系难以被发现等。所以,模型的性能十分受限于人工构造特征的能力。为了让模型自动地覆盖特征之间的二阶组合关系,线性模型被推广为二阶多项式模型。
引入二阶多项式的模型可以在一定程度上反映特征间的关联性。然而,在进行参数估计时发现,这些二阶参数需要大量的非零样本来进行训练,但是很多情况下,特征空间是相当稀疏的,参数的估计值会变得非常不准确。
为了解决特征空间稀疏带来的参数估计不准确的问题,在2010年,Rendle等提出了因子分解机(Factorization Machine,FM) 。借助矩阵分解的思想,对二阶项的系数矩阵进行分解,将参数映射到隐空间,有效地解决了大规模数据稀疏的问题。这样,即使面对非常稀疏的数据,FM也可以构造任意两个特征维度间的组合特征并进行合理的参数估计 ,这大大提升了线性模型的表达能力。经过数学变换容易发现:FM模型的时间复杂度是线性的,FM的参数少,表达力却不弱,这让它大规模地应用在实际CTR中,并取得不错的效果。但是缺点是该模型没有将来自不同域的特征区别对待,也就无法充分挖掘出不同特征域之间的关系。
通过引入域的概念,Juan等人将FM模型进行升级,提出了域感知分解机(Field-aware Factorization Machines,FFM)模型。他们在因子分解机结构里加入了域的概念,把广告中性质相近或相同的特征归并一个域内,不同的特征属于不同的域。在FFM中,每一维特征,针对其它特征的每一种域 ,都会学习到一个隐向量。因此,隐向量不仅与特征有关,也与域有关。这就是所谓的“域感知”。通过该方法可以更好的挖掘出不同特征域之间的隐含信息。
Dave等人则提出梯度提升决策树(Gradient Boosting Decision Tree,GBDT)的预估方法,GBDT是一种基于集成学习中boosting思想的非线性模型。在感知不同的特征和特征组合方面,GBDT具有天然的优势。决策树得到的路径能直接作为LR模型的输入特征,免掉了人工发现和组合特征的麻烦。但是这一方法不适应于数据集规模大且稀疏的情况,届时,训练时间过长且准确率难以得到保证。
上述模型虽然表现出一定的效果,但大多都不能对特征间所有组合方式构造组合特征。除此之外,本质上这些模型都属于浅层结构,难以提取特征间存在的高度非线性关联,从而进行复杂特征的学习,因此模型的表现力仍然有限。为了提升模型的泛化能力,一个顺其自然的想法就是应用深度神经网络,加深浅层网络。
深度学习在挖掘特征组合方面具有极大的优势。比如以卷积神经网络(Convolutional Neural Networks, CNN)为代表的深度网络在语音识别,计算机视觉等方面大展身手,以循环神经网络(Recurrent NeuralNetworks,RNN)为代表的深度网络在自然语言处理方面也毫不示弱。于是,Zhang等人提出了用RNN预估广告点击率的方法,把用户所浏览的历史记录作为序列,通过用户在不同的时间间隔内来划分用户的历史点击序列。利用循环神经网络记忆历史的顺序点击的信息并应用于当前输出的特点进行预估。
然而在真实的场景下,用户对商品的兴趣会随时间而改变,RNN模型在此刻的场景下就受到限制。Qiang Liu 等人提出了卷积点击预测模型(A Convolutional Click Prediction Model,CCPM)。 模型的整体结构相对比较简单,首先把稀疏的特征映射到embedding稠密向量,然后利用卷积核抽取其中的高维特征,再经过池化层,筛选出其中更重要的高维信息,最后接全连接层,经过softmax得到最终输出。
在2016年Weinan Zhang等提出了因子分解机神经网络模型(Factorization Machine supported Neural Network,FNN)。FNN需要FM预训练,并将预训练得到的隐含层及其权重作为神经网络的第一层参数的初始值,之后叠加多层全连接层,最终输出预测的点击率。
FM在嵌入向量进行内积操作后,直接将其求和,没有充分考虑二阶特征组合的信息。就此,2016 年Huifeng Guo 等提出了基于向量积的神经网络(Product-based Neural Networks,PNN)。PNN通过二阶向量积层对 FM 嵌入后的向量两两进行向量内积或外积操作,将内积或者外积结果进行一定的变换作为之后全连接层的输入。显然,FNN和PNN都更多地关注高阶特征组合,而忽视了低阶的特征组合。
相似的,为了充分利用二阶特征组合的信息,Xiangnan He等在2017年提出了神经网络因子分解机(Neural Factorization Machines,NFM) 。NFM通过二阶交互池化层对FM嵌入后的向量两两进行元素级的乘法操作,形成同维度的向量,将其求和后作为全连接层的输入。它和PNN的初衷一样,都是通过一些向量之间的操作来体现二阶特征的组合。不同的是,NFM添加了元素级的乘法运算来提高模型的复杂度。这也是它的创新所在。在2017年,Jun Xiao等提出的注意力因子分解机模型(Attentional Factorization Machine,AFM)较NFM来讲,添加了加权求和的操作。AFM与NFM比较像,但AFM没有加后续的全连接层,而是将元素级乘法形成的向量进行加权求和,然后直接输出。
针对FNN需要预训练的问题,在2017年,Huifeng Guo等提出了深度因子分解机模型(Deep Factorization Machine, DeepFM) ,DeepFM不仅不需要预训练,而且还将FM部分与全连接部分进行联合训练且共享嵌入后的特征,大大减少了参数,有利于训练。DeepFM从wide、deep(即低阶、高阶)两方面同时进行考虑,进一步提高模型的泛化能力。
就像上述的FNN、PNN和DeepFM等模型,目前大多基于深度学习的模型以FM为基础,再通过多层全连接网络去自动学习特征间的高阶交互关系的。但是这样的模型学习出的交互特征是隐式的、未知的、不可控的。同时它们的特征交互是通过元素级的,而不是特征向量之间操作来体现的,这有违FM的初衷。2018年Jianxun Lian等提出了极深因子分解机模型(xDeepFM)来应对这一问题,同时以显式和隐式的方式自动学习高阶的特征交互,使特征交互发生在向量级,还兼具记忆与泛化的学习能力。
研究期间参考的资料
『TensorFlow』模型保存和载入方法汇总 - 叠加态的猫 - 博客园
2019腾讯广告算法大赛思路~~更新啦~~2019/4/25 - 简书
腾讯社交广告高校算法大赛 baseline1 - Twilightuse93的专栏 - CSDN博客
2019腾讯广告算法大赛之使用XGBOOST模型训练数据集 轻松上80 - YYLin - CSDN博客
2019腾讯广告算法大赛之整理测试数据集以及构造训练集 - YYLin - CSDN博客
特征工程(特征选择,表达,预处理) - day day up - CSDN博客
数据清洗--DataFrame中的空值处理 - 戴翔的技术博客 - CSDN博客
新大Python —— Pandas入门WorldIndex.csv数据分析 - 简书
第一届腾讯社交广告高校算法大赛经验分享 - songbinxu的博客 - CSDN博客
广告领域模型发展梳理以及最新模型xDeepFM解读 - 知乎
特征工程(sklearn) - wsh的专栏 - CSDN博客
基于深度学习的ctr预估模型集合(持续更新) - daiwk-github博客
非数值型特征如何进行编码? - luguanyou的博客 - CSDN博客