数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
一、LR 模型 [2007]
在
$ \text{eCPM} = \text{pCTR} \times \text{bid} $cost-per-click:CPC
广告中广告主按点击付费。为了最大化平台收入和用户体验,广告平台必须预测广告的CTR
,称作predict CTR: pCTR
。对每个用户的每次搜索query
,有多个满足条件的广告同时参与竞争。只有pCTR x bid price
最大的广告才能竞争获胜,从而最大化eCPM
:基于最大似然准则可以通过广告的历史表现得统计来计算
pCTR
。假设广告曝光了100
次,其中发生点击5
次,则pCTR = 5%
。其背后的假设是:忽略表现出周期性行为或者不一致行为的广告,随着广告的不断曝光每个广告都会收敛到一个潜在的真实点击率 $ \text{CTR}_{\text{true}} $ 。这种计算
pCTR
的方式对于新广告或者刚刚投放的广告问题较大:新广告没有历史投放信息,其曝光和点击的次数均为
0
。刚刚投放的广告,曝光次数和点击次数都很低,因此这种方式计算的
pCTR
波动非常大。如:一个真实
CTR
为5%
的广告必须曝光1000
次才有85%
的信心认为pCTR
与真实CTR
的绝对误差在1%
以内。真实点击率越低,则要求的曝光次数越多。
为解决这个问题,论文
《Predicting Clicks: Estimating the Click-Through Rate for New Ads》
提出利用LR
模型来预测新广告的CTR
。从经验上来看:广告在页面上的位置越靠后,用户浏览它的概率越低。因此广告被点击的概率取决于两个因素:广告被浏览的概率、广告浏览后被点击的概率。
因此有:
$ p(\text{click} \mid \text{ad},\text{pos}) = p(\text{click} \mid \text{ad},\text{pos},\text{seen}) \times p(\text{seen} \mid \text{ad}, \text{pos}) $假设:
在广告被浏览(即:曝光)到的情况下,广告被点击的概率与其位置无关,仅与广告内容有关。
广告被浏览的概率与广告内容无关,仅与广告位置有关。
广告可能被拉取(推送到用户的页面),但是可能未被曝光(未被用户浏览到)。
则有:
$ p(\text{click} \mid \text{ad},\text{pos}) = p(\text{click} \mid \text{ad}, \text{seen}) \times p(\text{seen} \mid \text{pos}) $第一项 $ p(\text{click} \mid \text{ad}, \text{seen}) $ 就是我们关注和预测的
CTR
。第二项与广告无关,是广告位置(即:广告位)的固有属性。
可以通过经验来估计这一项:统计该广告位的总拉取次数 $ \text{impress}(\text{pos} ) $ ,以及总曝光次数 $ \text{seen}(\text{pos}) $ ,则:
$ p(\text{seen} \mid \text{pos}) = \frac{\text{seen}(\text{pos} )}{\text{impress}(\text{pos} )} $这也称作广告位的曝光拉取比。
1.1 数据集构造
通常广告主会为一个订单
order
给出多个竞价词term
,如:xxxxxxxxxx
41 Title: Buy shoes now,2 Text: Shop at our discount shoe warehouse!3 Url: shoes.com4 Terms: {buy shoes, shoes, cheap shoes}.此时广告系统会为每个竞价词生成一个广告,每个广告对应相同的
Title/Text/Url
、但是不同的竞价词。数据集包含
1
万个广告主,超过1
百万个广告、超过50
万竞价词(去重之后超过10
万个竞价词)。注意,不同的竞价词可能会展示相同的广告。样本的特征从广告基本属性中抽取(抽取方式参考后续小节)。广告的基本属性包括:
landing page
落地页:点击广告之后将要跳转的页面的url
。bid term
:广告的竞价词。title
:广告标题。body
:广告的内容正文。display url
:位于广告底部的、给用户展示的url
。clicks
:广告历史被点击的次数。views
:广告历史被浏览的次数。
将每个广告的真实点击率
CTR
来作为label
。考虑到真实点击率
CTR
无法计算,因此根据每个广告的累计曝光次数、累计点击次数从而得到其经验点击率 $ \overline{\text{CTR}} $ 来作为CTR
。
为了防止信息泄露,训练集、验证集、测试集按照广告主维度来拆分。最终训练集包含
70%
广告主、验证集包含10%
广告主、测试集包含20%
广告主。每个广告主随机选择它的1000
个广告,从而确保足够的多样性。因为同一个广告主的广告之间的内容、素材、风格相似度比较高,点击率也比较接近。
对于有专业投放管理的那些优质广告主,在数据集中剔除它们。因为:
优质广告主的广告通常表现出不同于普通广告主的行为:
- 两种广告主的广告具有不同的平均点击率
- 优质广告主的广告的点击率方差较低(表现比较稳定)、普通广告主的广告的点击率方差较高(表现波动大)
广告平台更关注于普通广告主,因为这些普通广告主的数量远远超过优质广告主的数量,而且这些普通广告主更需要平台的帮助。
对于曝光量少于
100
的广告,在数据集中剔除它们。因为我们使用经验点击率 $ \overline{\text{CTR}} $ 来近似真实CTR
来作为label
,对于曝光次数较少的广告二者可能相差很远,这将导致整个训练和测试过程中产生大量噪音。曝光阈值的选取不能太大,也不能太小:
- 阈值太小,则导致
label
中的噪音太多。 - 阈值太大,则离线训练样本(大曝光的广告)和在线应用环境(大量新广告和小曝光广告)存在
gap
,导致在线预测效果较差。
- 阈值太小,则导致
1.2 LR模型
论文将
$ \text{pCTR} = \frac{1}{1+\exp(-\sum_{i} w_i\times f_i)} $CTR
预估问题视作一个回归问题,采用逻辑回归LR
模型来建模,因为LR
模型的输出是在0
到1
之间。其中 $ f_i $ 表示从广告中抽取的第 $ i $ 个特征(如广告标题的单词数量), $ w_i $ 为该特征对应的权重。采用负号的原因是使得权重、特征和
pCTR
正相关:权重越大则pCTR
越大。模型通过
limited-memory Broyden-Fletcher-Goldfarb-Shanno:L-BFGS
算法来训练。模型的损失函数为交叉熵:
$ \mathcal L = -[\overline{\text{CTR}}\times \log (\text{pCTR}) + (1-\overline{\text{CTR}})\times\log (1-\text{pCTR})] $权重通过均值为零、方差为 $ \sigma $ 的高斯分布来随机初始化。其中 $ \sigma $ 为超参数,其取值集合为
[0.01,0.03,0.1,0.3,1,3,10,30,100]
,并通过验证集来选取最佳的值。
通过实验发现, $ \sigma = 0.1 $ 的效果最好。
论文采取了一些通用的特征预处理方法:
模型添加了一个
$ \sum_{i} w_i\times f_i + b \rightarrow \sum_{i} w_i\times f_i + b\times 1 = \sum_{i^\prime} w_{i^\prime}\times f_{i^\prime} $bias feature
,该特征的取值恒定为1
。即:将偏置项 $ b $ 视为 $ b\times 1 $ 。对于每个特征 $ f_i $ ,人工构造额外的两个非线性特征:: $ \log(f_i+1) $ , $ f_i^2 $ 。加
1
是防止 $ f_i $ 取值为0
。对所有特征执行标准化,标准化为均值为
0
、方差为1
。注意:对于验证集、测试集的标准化过程中,每个特征的均值、方差使用训练集上的结果。
对所有特征执行异常值截断:对于每个特征,任何超过均值
5
个标准差的量都被截断为5
个标准差。如:特征 $ f_1 $ 的均值为
20
,方差为2
。则该特征上任何大于30
的值被截断为30
、任何小于10
的值被截断为10
。注意:对于验证集、测试集的异常值截断过程中,每个特征的均值、方差使用训练集上的结果。
评价标准:
baseline
:采用训练集所有广告的平均CTR
作为测试集所有广告的pCTR
。即:测试集里无论哪个广告,都预测其
CTR
为一个固定值,该值就是训练集所有广告的平均CTR
。评估指标:测试集上每个广告的
$ \overline{\mathbb D_{KL}} = \frac 1T \sum_{i=1}^T \left(\text{pCTR}(\text{ad}_i) \times \log \frac{\text{pCTR}(\text{ad}_i)}{\overline{\text{CTR}}(\text{ad}_i)} + (1-\text{pCTR}(\text{ad}_i)) \times \log \frac{1-\text{pCTR}(\text{ad}_i)}{1-\overline{\text{CTR}}(\text{ad}_i)}\right) $pCTR
和真实点击率的平均KL
散度。KL
散度衡量了 $ \text{pCTR} $ 和真实点击率之间的偏离程度。一个理想的模型,其KL
散度为0
,表示预估点击率和真实点击率完全匹配。为了更好的进行指标比较,论文实验中也给出了测试集的
MSE
(均方误差)指标。
模型不仅可以用于预测新广告的
pCTR
,还可以为客户提供优化广告的建议。可以根据模型特征及其重要性来给广告主提供创建广告的建议,如:广告标题太短建议增加长度。
1.3 特征工程
1.3.1 Term CTR Feature Set
不同竞价词的平均点击率存在明显的差异,因此在预测某个广告的点击率时,相同竞价词的其它类似广告可能有所帮助。
因此论文对此提出两个特征,称作相同竞价词特征集
Term CTR Feature Set
。对于广告
ad
的竞价词term
(记作 $ \text{ad}_\text{term} $ )针对该
$ f_0 = N(\text{ad}_\text{term}) $term
竞价的其它广告主所有广告的数量:由于同一个广告主的不同广告之间相关性比较强,因此这里用其它广告主的广告作为特征来源。否则容易出现信息泄露。
针对该
$ f_1 = \frac{\alpha \overline{\text{CTR}} +N(\text{ad}_\text{term})\times \text{CTR}(\text{ad}_\text{term})}{\alpha + N(\text{ad}_\text{term})} $term
竞价的其它广告主的广告点击率(经过归一化):其中:
$ \overline{\text{CTR}} $ 是训练集上所有广告的平均点击率
$ N(\text{ad}_\text{term}) $ 是针对该
term
竞价的其它广告主所有广告的数量$ \text{CTR}(\text{ad}_\text{term}) $ 是针对该
term
竞价的其它广告主所有广告的平均点击率$ \alpha $ 是平滑系数,为了防止某些新的
term
出现导致 $ N(\text{ad}_\text{term}) =0 $ 。如果不采取平滑,则有 $ f_1 = \text{CTR}(\text{ad}_\text{term}) $ 。$ \alpha $ 代表了
term
竞价的广告数量的先验强度,默认取值为1
。实验发现,结果对 $ \alpha $ 的取值不敏感。
模型新增这两个特征的实验结果如下图所示,可见
term ctr feature set
使得评估指标 “平均KL
散度” 提升了13.28%
。
1.3.2 Related Term CTR Feature Set
预测某个广告的点击率时,相关竞价词的其它类似广告可能也有所帮助。
如:广告
a
的竞价词是 “电脑”,广告b
的竞价词是 “买电脑”,则广告b
的点击率对于预测广告a
的点击率是有帮助的。考虑竞价词的子集/超集。
给定一个竞价词
$ \mathbf R_{m,n}(t) = \begin{cases}& |\text{ad}_{\text{term}}\cap t | >0 \;\text{and}\\ \text{ad: } &|t- \text{ad}_{\text{term}} | = m \;\text{and} \\ &| \text{ad}_{\text{term}} -t| =n \end{cases} $t
,定义其相关广告集合为 $ \mathbf R_{m,n}(t) $ (一个竞价词term
可能包含多个单词word
,这里不考虑word
之间的词序):如:
t
是red shoes
- 如果广告的竞价词是
buy red shoes
,则该广告属于t
的 $ \mathbf R_{0,1} $ - 如果广告的竞价词是
shoes
,则该广告属于t
的 $ \mathbf R_{1,0} $ - 如果广告的竞价词是
red shoes
,则该广告属于t
的 $ \mathbf R_{0,0} $ - 如果广告的竞价词是
blue shoes
,则该广告属于t
的 $ \mathbf R_{1,1} $
- 如果广告的竞价词是
由 $ \mathbf R_{m,n}(t) $ 的定义可知:
- 广告集合 $ \mathbf R_{0,0} $ 代表广告的竞价
term
和t
完全匹配。 - 广告集合 $ \mathbf R_{m,0} $ 代表广告的竞价
term
比t
少了 $ m $ 个单词之外其它单词完全相同(不考虑词序)。 - 广告集合 $ \mathbf R_{0,n} $ 代表广告的竞价
term
比t
多了 $ n $ 个单词之外其它单词完全相同(不考虑词序)。
假设
*
为任意数值,则定义:- $ \mathbf R_{0,*}(t) $ 表示
t
的任何超集(不考虑词序)作为竞价term
的广告的集合。 - $ \mathbf R_{*,0}(t) $ 表示
t
的任何子集(不考虑词序)作为竞价term
的广告的集合。
- 广告集合 $ \mathbf R_{0,0} $ 代表广告的竞价
定义相关竞价词的一组特征,它们称为相关竞价词特征集
Related Term CTR Feature Set
:在
$ v_{m,n}(\text{term}) = |\mathbf R_{m,n}(\text{term})| $term
相关的竞价词上竞价的其它广告主所有广告的数量:在
$ \overline{\text{CTR}_{m,n}}(\text{term}) = \frac{1}{|\mathbf R_{m,n}(\text{term})|}\sum_{x\in \mathbf R_{m,n}(\text{term})}\text{CTR}_x $term
相关的竞价词上竞价的其它广告主所有广告的平均点击率:其中 $ \text{CTR}_x $ 表示广告
x
的真实点击率。和
$ \text{CTR}_{m,n}(\text{term}) = \frac{\beta \overline{\text{CTR}} +|\mathbf R_{m,n}(\text{term})|\times \overline{\text{CTR}_{m,n}}(\text{term})}{\beta + |\mathbf R_{m,n}(\text{term})|} $Term CTR Feature Set
一样,这里也采用平滑:其中 $ \beta $ 表示平滑系数。
论文中采取了 $ m,n\in \{0,1,2,3,*\} $ 一共
5x5=25
种组合,得到25 x 2 =50
个related term ctr
特征。测试集的 “平均KL
散度” 表明:采用这一组特征之后,取得了接近20%
的提升。
1.3.3 Ad Quality Feature Set
即使是同一个竞价
term
,不同广告的点击率也存在显著差异。从经验来看,至少有五种粗略的要素影响用户是否点击:外观
Appearance
:外观是否美观。吸引力
Attention Capture
:广告是否吸引眼球。声誉
Reputation
:广告主是否知名品牌。落地页质量
Landing page quality
:点击广告之后的落地页是否高质量。虽然用户只有点击之后才能看到落地页,但是我们假设这些落地页是用户熟悉的广告主(如
ebay, amazon
),因此用户在点击之前就已经熟知落地页的信息。相关性
Relevance
:广告与用户query
词是否相关。
针对每个要素,论文给出一些特征:
外观
Appearance
:- 广告标题包含多少个单词。
- 广告标题是在广告体内还是在广告体外。
- 标题是否正确的大小写首字母。
- 广告标题是否包含了太多的感叹号、美元符号或其它标点符号。
- 广告标题用的是短词还是长词。
吸引力
Attention Capture
:- 标题是否包含暗示着转化的单词,如
购买 buy
、加入join
、订阅subscribe
等等。 - 这些转化词是否出现在广告体内还是广告体外 。
- 标题是否包含数字(如折扣率,价格等)。
- 标题是否包含暗示着转化的单词,如
声誉
Reputation
:底部展示的
URL
是否以.com/.net/.org/.edu
结尾。底部展示的的
url
多长。底部展示的
url
分为几个部分。如
books.com
只有两部分,它比books.something.com
更好。底部展示的
url
是否包含破折号或者数字。
因为好的、短的
.com
域名比较贵,因此url
体现了广告主的实力。落地页质量
Landing page quality
:- 落地页是否包含
flash
。 - 落地页页面哪部分采用大图。
- 落地页是否符合
W3C
。 - 落地页是否使用样式表。
- 落地页是否弹出广告。
- 落地页是否包含
相关性
Relevance
:- 竞价词是否出现在标题。
- 竞价词的一部分是否出现在标题。
- 竞价词或者竞价词的一部分是否出现在广告体内。
- 如果出现,则竞价词或者竞价词的一部分占据广告体的几分之一。
最终在这
5
个要素种抽取了81
个特征。某些特征可以出现在多个要素里,如:广告内容中美元符号数量。该特征可能会增加吸引力,但是会降低外观。
除了以上
5
个内容要素,还有一个重要的内容要素:广告文本的单词。我们统计广告标题和正文中出现的
top 10000
个单词,将这1
万个单词出现与否作为unigram
特征。因为某些单词更容易吸引用户点击,因此unigram
特征能够弥补注意力要素遗漏的特征。注意:构造特征时,标题和正文的
unigram
分别进行构造。即:单词是否出现在标题中、单词是否出现在正文中。如下所示:单词
shipping
更倾向于在高CTR
广告中出现,这意味着shipping
更容易吸引用户点击。图中的三条曲线从上到下依次代表:- 每个单词在高
CTR
广告中出现的平均频次。 - 每个单词在所有广告中出现的平均频次。
- 每个单词在低
CTR
广告中出现的平均频次。
- 每个单词在高
以上5个内容要素,以及
unigram
特征一起构成了广告质量特征集Ad Quality Feature Set
。结果表明:该组特征能够显著提升性能,将测试集的 “平均
KL
散度” 提升约3.8 %
。考虑去掉
unigram
特征,结果表明:- 仅仅
5
个因素的81
个特征能够提升约1.1 %
。 unigram
特征能够提升约2.7 %
。
- 仅仅
1.3.4 Order Specificity Feature Set
有的订单定向比较窄。如:
xxxxxxxxxx
41 Title: Buy shoes now,2 Text: Shop at our discount shoe warehouse!3 Url: shoes.com4 Terms: {buy shoes, shoes, cheap shoes}.该订单的竞价词都和
shoes
相关,定向比较狭窄。而有的订单定向比较宽,如:
xxxxxxxxxx
41 Title: Buy [term] now,2 Text: Shop at our discount warehouse!3 Url: store.com4 Terms: {shoes, TVs, grass, paint}该订单的竞价词不仅包含
shoes
,还包括TV
、grass
等等。我们预期:定向越宽的订单,其平均
CTR
越低;定向越窄的订单,其平均CTR
越高。为了考虑捕捉同一个订单内不同广告的联系,论文提出了订单维度特征集
Order Specificity Feature Set
。同一个订单中,去重之后不同竞价词
$ Num(\text{order}_{\text{unique_term}}) $term
的数量:同一个订单中,竞价词
term
的类别分布。分布越集中,定向越窄;分布越分散,定向越宽。- 利用搜索引擎搜索每个竞价词
term
,并通过文本分类算法对搜索结果进行分类,将每个竞价词term
划分到74
个类别中。 - 计算每个订单的竞价词
term
的类别熵,并将类别熵作为特征。
- 利用搜索引擎搜索每个竞价词
采用该特征集之后,测试集的 “平均
KL
散度” 提升约5.5 %
。
1.3.5 Search Data Feature Set
事实上可以通过使用外部数据来构造特征。
如:给定一个竞价词
term
,可以通维基百科来判断它是否是一个众所周知的词,也可以通过同义词词库来查找其同义词等等。因此构建外部搜索数据特征集
Search Data Feature Set
,其中包括:每个竞价词
term
,网络上该term
出现的频率。这可以利用搜索引擎的搜索结果中包含该
term
的网页数量来初略估计。每个竞价词
term
,搜索引擎的query
中出现该term
的频率。这可以用近三个月搜索引擎的搜索日志中,
query
里出现该term
的数量来粗略估计。
这两个特征离散化为
20
个桶,仔细划分桶边界使得每个桶具有相同数量的广告。单独采用该特征集之后,测试集的 “平均
KL
散度” 提升约3.1 %
。但是融合了前面提到的特征之后没有任何改进,这意味着该特征集相比前面的几个特征集是冗余的。
1.3.6 更多特征
当独立的考虑每个
feature set
时,测试集的 “平均KL
散度” 提升效果如下:related term ctr feature set
:19.67%
。ad quality feature set
:12.0%
。unigram features along
:10.2%
。order specificity feature set
:8.9%
。search data feature set
:3.1%
。
有几个特征探索方向:
可以将广告的竞价词
term
进行聚类,从而提供广告之间的关系。这是从语义上分析竞价词term
的相似性。这组特征称作Related Term Feature Set
。可以基于用户的
query
来构造特征。在完全匹配条件下竞价词和用户搜索词完全相同,但是在更宽松的匹配下竞价词和搜索词可能存在某种更广义的关联。此时了解搜索词的内容有助于预测广告的点击率。
因此可以基于用户的搜索词
query term
来构建特征,如:query term
和bid term
相似度、query term
的单词数、query term
出现在广告标题/广告正文/落地页的频次。可以将落地页的静态排名和动态排名信息加入特征。如:用户访问落地页或者域名的频率、用户在落地页停留的时间、用户在落地页是否点击回退等等。
一个推荐的做法是:在模型中包含尽可能多的特征。这带来两个好处:
更多的特征带来更多的信息,从而帮助模型对于广告点击率预测的更准。
更多的特征带来一定的冗余度,可以防止对抗攻击。
广告主有动力来攻击特征来欺骗模型,从而提升广告的
pCTR
,使得他的广告每次排名都靠前。假设模型只有一个特征,该特征是 ”竞价词是否出现在标题“ 。广告主可以刻意将竞价词放置到广告标题,从而骗取较高的
pCTR
。一旦模型有多个特征,那么广告主必须同时攻击这些特征才能够欺骗模型。这种难度要大得多。
1.4 特征重要性
由于模型采用逻辑回归,因此可以直观的通过模型权重看到哪些特征具有最高权重、哪些特征具有最低权重。
模型的
top 10
和bottom 10
权重对应的特征如下:特征的权重不一定直接表示其重要性,因为特征之间不是独立的。
假设有一个重要的特征是文本中每个单词的平均长度(即:平均多少个字符) $ \text{word_len} $ ,但我们并没有直接给出这个特征,而是给出相关的两个特征:文本总字符数 $ \text{text_len} $ 、文本总单词数 $ \text{word_count} $ 。那么我们会发现:特征 $ \text{text_len} $ 具有一个较大的正权重、特征 $ \text{word_count} $ 有一个较大的负权重。
因为 $ \text{word_len} = \text{text_len}/ \text{word_count} $ ,所以特征 $ \text{word_len} $ 和特征 $ \text{text_len} $ 正相关,而特征 $ \text{word_len} $ 和特征 $ \text{word_count} $ 负相关。
在
unigram features
中,top 10
和bottom 10
权重对应的特征如下。可以看到:
- 排在前面的是更为成熟
established
的实体词,如official,direct,latest,version
。 - 排在后面的是更为吸引眼球的实体词,如
quotes, trial, deals, gift, compare
。
从经验上看:用户似乎更愿意点击声誉更好的、更成熟的广告,而不愿意点击免费试用、优惠类的广告。
- 排在前面的是更为成熟
1.5 曝光量
假设模型能准确预估广告的点击率,一个问题是:广告经过多少次曝光之后,观察到的点击率和预估的点击率接近。
定义观察到的点击率为:
$ \text{CTR}^* = \frac{ \text{click}}{\text{expo}} $定义预测的点击率为:
$ \hat p = \frac{\alpha p_0+ \text{click}}{\alpha + \text{expo}} $其中:
$ \text{expo} $ 是广告的曝光次数, $ \text{click} $ 为广告的点击次数, $ p_0 $ 为先验
CTR
, $ \alpha $ 是先验曝光次数。$ p_0 $ 是模型预估得到的
pCTR
,而 $ \alpha $ 是一个超参数。$ \hat p $ 是结合了模型预估的
pCTR
和广告已经产生的曝光、点击之后,预测的点击率。模型预测的
pCTR
没有考虑广告当前的曝光、点击,因此需要修正。
定义期望绝对损失
$ \mathbb E[\text{err}\mid \text{expo} ] = \sum_{\text{click}=1}^\text{expo} p(\text{click}\mid \text{expo} )\times |\hat p -\text{CTR}^*| $expected absolute error:EAE
:其中: $ p(\text{click}\mid \text{expo} ) $ 表示给定曝光的条件下,点击
click
次的概率。它通过统计其它广告得到。EAE
刻画了在不同曝光量的条件下,模型给出的 $ \hat p $ 和CTR
的绝对误差。这和模型优化目标平均KL
散度不同。baseline
和LR
模型的EAE
结果如下所示。可以看到:- 在广告的曝光量超过
100
时,baseline
和LR
模型的EAE
几乎相同。 - 在广告的曝光量小于
50
时,LR
模型的EAE
更低。
因此模型对于曝光量
100
以内的广告具有明显优势。这也是前面预处理将100
次曝光作为阈值截断的原因。对于百万级别广告的广告系统,如果在广告曝光的前
100
次期间对广告的CTR
预估不准,则导致这些广告以错误的顺序展示,从而导致收入减少和用户体验下降。- 在广告的曝光量超过
预处理选择
100
次曝光作为截断阈值,是希望样本的观察CTR
具有合理的置信水平。事实上有一些广告系统更关注于曝光量更大的广告,希望对这些广告能够预测更准确。更大曝光量意味着
label
中更少的噪音,模型会学习得效果更好。但是这也意味着广告样本不包含那些被系统判定为低价值的广告,因为系统没有给这些低价值广告足够多的曝光机会。
当曝光阈值提升到
1000
次时,模型效果如下。可以看到:曝光量超过1000
的广告比曝光量100
的广告,模型预测效果(以测试集的平均KL
散度为指标)提升了40%
左右((41.88-29.47)/29.47
)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论