目录
第14章 点击率预测模型
14.1 点击率预测
14.1.1 点击率基本模型
14.1.2 LR模型优化算法
14.1.3 点击率模型的校正
14.1.4 点击率模型的特征
14.1.5 点击率模型评测
14.1.6 智能频次控制
14.2 其他点击率模型
14.2.1 因子分解机
14.2.2 GBDT
14.2.3 深度学习点击率模型
14.3 探索与利用
14.3.1 强化学习与E&E
14.3.2 UCB方法
14.3.3 考虑上下文的 bandit
14.3.4 汤普森采样
第14章 点击率预测模型
点击率(Click-Through Rate, CTR)预估是计算广告,乃至整个推荐系统的灵魂。它的使命是回答一个核心问题:在特定的场景下,将特定的广告展示给特定的用户,其被点击的概率是多少?这个看似简单的概率预测,构成了广告竞价排序、流量分配、智能出价等几乎所有关键决策的基石。CTR预估的准确性,每提升千分之一,都可能意味着一个大型平台每日数百万美元的额外收入。本章将系统阐述CTR预估的完整技术体系,从基础模型到前沿方法,从理论原理到工程实战。
14.1 点击率预测
14.1.1 点击率基本模型
点击率预测本质上是一个二分类概率预估问题。给定一次广告展示的上下文,其特征向量记为 xx,我们期望模型输出用户会点击该广告的概率,其中 y=1y=1 表示点击,y=0y=0 表示未点击。
1. 逻辑回归:经久不衰的基石
逻辑回归因其形式简单、可解释性强、易于分布式训练和在线学习,成为CTR预估最经典和广泛使用的模型。
模型形式:
其中,σ(⋅)σ(⋅) 是sigmoid函数,它将线性组合 z=wTx+bz=wTx+b 映射到 (0, 1) 区间。ww 是权重向量,bb 是偏置项。
直观解释:LR模型认为,对数几率
与特征向量 xx 呈线性关系。每个特征 xixi 的权重 wiwi 直接反映了该特征对点击概率的贡献(正负和大小)。
优势:
可解释性:权重向量直观反映了特征重要性。
概率校准:输出具有严格的概率意义。
计算高效:模型简单,预测和训练速度快。
稀疏友好:非常适合处理广告场景中海量的稀疏特征。
2. 特征工程:LR模型效果的生命线
由于LR本身是线性模型,特征工程的质量直接决定了其性能天花板。广告场景的特征主要分为几类:
用户特征:用户ID、人口属性(性别、年龄)、长期兴趣标签、实时行为序列等。
广告特征:广告ID、广告主ID、广告类别、创意类型、文案关键词等。
上下文特征:时间、地理位置、设备类型、网络环境、当前页面/APP信息等。
交叉特征:这是提升LR效果的关键。通过将不同域的特征进行笛卡尔积或组合,引入非线性。例如,“用户性别”与“广告类别”的交叉特征,可以捕捉“女性用户对美妆广告偏好更强”这种模式。然而,人工构造交叉特征成本高,且难以覆盖所有高阶组合。
3. 损失函数与优化目标
CTR预估通常使用对数损失作为损失函数,也称为二元交叉熵损失:
最小化该损失等价于最大化观测数据的似然函数。为了防止过拟合,通常会在损失函数中加入L1或L2正则化项,如
14.1.2 LR模型优化算法
在海量数据和高维稀疏特征的场景下,LR模型的训练需要特殊设计的优化算法。
批量优化算法(如L-BFGS):适用于中小规模数据集的全量训练,能收敛到高精度解,常用于离线模型训练。
在线学习算法:这是工业界的主流。数据以流式方式到来,模型需要持续、快速地更新。
随机梯度下降(SGD):每次用一个或一小批样本更新权重。简单,但收敛慢,对学习率敏感。
自适应学习率算法(AdaGrad, FTRL):为每个特征维护独立的学习率,对于稀疏特征尤其有效。
FTRL:是Google提出的专门针对稀疏逻辑回归的在线优化算法。它结合了L1正则化的截断特性(能产生稀疏模型)和自适应学习率,在保证精度的同时,使模型权重向量 ww 保持高度稀疏(大量权重为0),极大减少了模型存储和计算开销,成为工业界标配。
14.1.3 点击率模型的校正
实际训练得到的CTR预估值 y^y^ 往往与真实的点击频率存在偏差,可能整体偏高或偏低。模型校正的目标是使预估值在任何区间内都与实际后验统计概率一致。
为何需要校正?
样本选择偏差:训练样本是经过上一代模型筛选后展示的广告,并非随机曝光,这会导致模型预估有偏。
模型正则化与约束:L1/L2正则化会压缩权重,可能使预估值偏向先验均值(如全局平均CTR)。
损失函数不对称:业务上可能对正负样本赋予不同权重。
校准方法:
Platt Scaling:将LR的输出通过一个额外的逻辑回归函数进行变换:
在验证集上学习参数 a,ba,b。
Isotonic Regression:一种非参数方法,学习一个单调不减的映射函数。更灵活,但需要更多数据。
基于分桶的后验校正:将预估值范围划分为多个桶,计算每个桶内预估值的平均值和实际点击率的平均值,然后学习一个映射表或分段函数。
14.1.4 点击率模型的特征
现代CTR模型的特征体系已高度复杂化和自动化。
特征类型:
ID类特征:用户ID、广告ID等。通过Embedding层映射为低维稠密向量,这是深度学习模型处理稀疏特征的核心。
数值特征:用户年龄、广告历史CTR等。直接输入或进行分桶。
类别特征:性别、城市等。进行One-Hot或Embedding。
序列特征:用户最近点击的广告ID序列。使用RNN、Transformer或池化操作进行聚合。
多模态特征:广告图片的视觉特征、文案的语义特征。
特征交叉的自动化:从人工构造转向模型自动学习。
因子分解机(FM):自动学习二阶特征交叉。
深度神经网络:通过多层非线性变换,隐式地学习高阶特征交叉。
14.1.5 点击率模型评测
CTR模型的评估需从离线和在线两个层面进行。
离线评测:
AUC:最核心的指标,衡量模型将正样本排序高于负样本的能力。AUC对样本比例不敏感,适用于高度不平衡的CTR数据。
LogLoss:衡量预估概率与真实标签的差异。一个好的模型既要有高AUC(排序好),也要有低LogLoss(概率准)。
校准指标:如校准曲线、Expected Calibration Error (ECE),评估概率预估的准确性。
在线A/B测试:黄金标准。将新模型与基线模型在真实流量上进行对比,观测核心业务指标的变化:
点击率:直接指标。
千次展示收入:综合了CTR和竞价的影响,是平台收入的直接体现。
广告主投资回报率:对于采用oCPC等模式的广告主,其转化成本是否稳定或降低。
用户体验指标:如广告隐藏率、用户停留时长等。
14.1.6 智能频次控制
频次控制不仅是合约广告的需求,在效果广告中也至关重要。过度展示同一广告会引起用户疲劳,导致CTR骤降,损害用户体验和广告主效果。
传统频次控制:在广告投放引擎中设置硬性上限(如每个用户每天最多展示3次)。
智能频次控制:将频次控制整合到CTR模型中。
方法:将“用户今日已看到该广告的次数”作为一个特征加入CTR模型。模型会自动学习到,随着曝光次数增加,点击概率衰减的曲线。在排序时,一个已展示多次的广告,其预估CTR会自然降低,从而在竞争中排名下降,实现软性、自适应的频次控制。这比硬性截断更优,因为它考虑了广告本身的吸引力和用户个体的耐受度差异。
14.2 其他点击率模型
14.2.1 因子分解机
因子分解机(Factorization Machines, FM)是CTR预估领域的一个重要里程碑,它优雅地解决了LR需要手动构造交叉特征的难题。
模型形式:在LR线性部分的基础上,增加了对所有特征两两交叉的建模:
关键思想:FM为每个特征学习一个隐向量。两个特征的交互强度,不再由一个单独的权重 wijwij 表示(在数据稀疏下很难有效学习),而是通过它们对应隐向量的内积来估计。这借鉴了矩阵分解的思想,即使特征 ii 和 jj 在训练数据中从未同时出现,只要它们各自的隐向量通过其他交互被学习得很好,仍能估计其交叉效应。
优势:
自动学习高阶交叉:解决了人工特征工程的瓶颈。
处理数据稀疏:在特征共现稀疏的情况下仍能有效学习。
线性计算复杂度:通过数学化简,二阶项的计算复杂度可从 O(kn2)O(kn2) 降至 O(kn)O(kn),非常高效。
应用:FM及其扩展(如FFM - Field-aware FM)在2016年之前的各类CTR预估竞赛中独占鳌头,是深度学习普及前最强大的浅层模型。
14.2.2 GBDT
梯度提升决策树(Gradient Boosting Decision Tree, GBDT)是另一类强大的非线性模型,在CTR预估中常以两种方式使用:
独立预测模型:直接使用GBDT进行CTR预估。GBDT通过组合多个弱决策树,能够自动处理各种类型的特征(无需归一化),并捕捉复杂的非线性关系和特征交叉。但当特征维度极高(数百万)且非常稀疏时,纯GBDT可能效率不高。
特征变换器 + LR(GBDT+LR):这是Facebook提出的经典架构,曾极大地提升了其广告系统的效果。
流程:
先用GBDT模型对原始特征进行训练。
将每个样本输入训练好的GBDT,每棵树的输出是该样本落入的叶子节点的索引。
将所有树的叶子节点索引进行One-Hot编码,生成一个高维的稀疏二值向量(例如,有100棵树,每棵树有64个叶子,则生成一个6400维的向量)。
将这个向量作为新的特征,输入到LR模型中进行最终CTR预测。
思想:GBDT负责进行自动的、非线性的特征组合和离散化,它将原始特征空间映射到一个新的、由决策路径构成的稀疏特征空间。LR则在这个新空间上进行快速且可解释的线性拟合。
优点:结合了GBDT强大的特征发现能力和LR的高效稀疏计算优势。
14.2.3 深度学习点击率模型
深度学习已成为现代CTR预估的绝对主流,其核心优势在于能端到端地学习特征的深层表示和复杂的高阶交叉。
1. 模型演进脉络
基石:Embedding + MLP:将稀疏ID特征通过Embedding层映射为稠密向量,与稠密特征拼接后,输入多层感知机(MLP)。MLP通过全连接层和非线性激活函数,隐式地学习特征交叉。这是最简单的深度CTR模型。
Wide & Deep(Google, 2016):开创性工作,提出了“记忆”与“泛化”并重的思想。
Wide部分:一个广义线性模型(如LR),处理手工构造的交叉特征。负责“记忆”,即精确匹配历史数据中出现的模式。
Deep部分:一个Embedding+MLP网络。负责“泛化”,即探索未见过的特征组合,发现潜在模式。
两部分联合训练,最终输出为:
DeepFM(2017):对Wide & Deep的改进,用FM组件替代了Wide部分。
优势:FM组件可以自动学习所有二阶特征交叉,无需人工特征工程,且与Deep部分共享Embedding,模型更紧凑。
xDeepFM(2018):进一步提出压缩交互网络,旨在显式地、向量级地学习有界阶数的特征交叉,比隐式学习的MLP和简单的FM更强大。
基于用户行为序列的模型:
DIN(深度兴趣网络, Alibaba 2017):针对用户历史行为序列,引入了注意力机制。不是简单地将所有历史行为Embedding进行平均,而是计算历史行为与当前候选广告的相关性权重,进行加权求和。这模拟了用户兴趣的多样性以及与当前广告的关联性。
DIEN(深度兴趣进化网络, Alibaba 2018):在DIN的基础上,使用两层GRU来建模用户兴趣随时间的演化过程。第一层GRU抽取兴趣序列,第二层GRU结合注意力机制,模拟与当前广告相关的兴趣进化轨迹。
2. 核心组件与技术
Embedding层:处理亿级稀疏ID,通常需要分布式存储和训练。
多任务学习:一个模型同时预估CTR和CVR(转化率)、或不同互动类型(点击、点赞、转发),通过共享底层特征表示,提升各任务效果和数据利用效率。代表模型:MMoE。
采样与负样本优化:点击样本极度稀疏(通常<1%)。需要采用负采样、难负样本挖掘等技术。
在线服务优化:深度模型参数多,在线推理耗时。需采用模型蒸馏、量化、高性能算子优化等手段满足毫秒级响应要求。
14.3 探索与利用
探索与利用(Exploration & Exploitation, E&E)是CTR预估乃至所有推荐系统面临的根本性困境。系统是应该持续投放已知的高CTR广告(利用, Exploitation),以获取稳定收益?还是应该尝试投放一些新广告或给不常展示的广告一些机会(探索, Exploration),以收集数据、发现潜在的黑马,从而优化长期收益?
14.3.1 强化学习与E&E
强化学习(Reinforcement Learning, RL)为E&E问题提供了一个自然的数学框架。
智能体:广告投放系统。
环境:用户群体和广告市场。
状态:用户画像、上下文、广告库存状态等。
动作:选择哪个广告展示。
奖励:用户点击(+1),未点击(0),或更精细的转化价值。
目标:学习一个策略(从状态到动作的映射),以最大化长期累积奖励。
然而,将标准的RL(如Q-Learning, Policy Gradient)直接应用于广告系统面临巨大挑战:状态和动作空间极其巨大,奖励延迟且稀疏,线上试错成本高昂。因此,工业界更多采用一些轻量级、可解释性强的Bandit算法。
14.3.2 UCB方法
置信区间上界(Upper Confidence Bound, UCB)算法是解决E&E问题的经典方法,其思想朴素而有效:对每个选项(广告)的估值,不仅要看其当前的平均收益(利用),还要加上一个反映其估值不确定性的“信心加成”(探索)。
算法流程:假设有K个广告。
初始化:每个广告展示一次,记录其点击情况。
对于后续每一次决策,计算每个广告 ii 的UCB分数:
其中,μ^iμ^i 是广告 ii 历史点击率的均值(利用项),nini 是其被展示的次数,tt 是总展示次数。第二项是探索项:展示次数 nini 越少,该项越大,表示对该广告的点击率越不确定,越值得探索。常数 cc 控制探索的强度。
选择UCB分数最高的广告进行展示。
更新该广告的点击统计和总次数 tt。
优点:有坚实的理论保证(遗憾界),实现简单。
在广告中的应用:
冷启动阶段:对新上线的广告,可以赋予较高的探索权重。
在排序阶段融入探索:可以在CTR预估值 y^y^ 上加上一个与曝光次数负相关的探索奖励,然后重新排序。
14.3.3 考虑上下文的 bandit
标准的UCB假设广告的点击率是静态的。但实际上,点击率高度依赖于上下文(用户和场景)。上下文Bandit算法(Contextual Bandit)将上下文信息引入决策过程。
LinUCB:一个代表性的算法。它假设在给定上下文 xtxt(用户特征、广告特征等)下,广告 aa 的预期收益与其特征呈线性关系:
算法核心:
为每个广告 aa 维护一个参数向量 θaθa 及其协方差矩阵。
当收到带有上下文 xtxt 的请求时,对每个广告 aa,计算其预期收益的UCB:
选择LinUCB值最高的广告展示,并观察收益 rtrt。
使用新的观测数据 (xt,a,rt)(xt,a,rt) 更新广告 aa 的参数 θaθa 和矩阵 AaAa(通常使用岭回归)。
优势:结合了上下文信息,探索更有针对性,效率更高。
与深度学习的结合:可以将LinUCB中的线性模型替换为深度学习模型(如神经网络的输出层),形成神经Bandit或深度贝叶斯 Bandit,用神经网络强大的特征表示能力来建模复杂的收益函数。
14.3.4 汤普森采样
汤普森采样是另一种极其优雅且强大的Bandit算法,它基于贝叶斯思想。
核心:为每个广告的点击率维护一个概率分布(先验/后验),而不是一个点估计。例如,用Beta分布 Beta(α,β)Beta(α,β) 来刻画CTR的不确定性,其中 αα 代表历史点击次数+1,ββ 代表历史未点击次数+1。
决策过程:每次决策时,从每个广告的后验分布中随机抽取一个样本值(即一个可能的CTR值)。然后,选择抽取到样本值最大的那个广告进行展示。
直观理解:一个广告如果不确定性高(Beta分布较宽),它就有更大的概率抽到一个很高的值,从而被选中。随着展示次数增加,其后验分布变窄(集中在均值附近),抽样值趋于稳定,系统自然从探索转向利用。
优点:
实现简单,计算高效。
探索自然,无需手动设置探索参数(如UCB中的c)。
在许多场景下,其经验性能和理论遗憾界都优于或媲美UCB。
上下文汤普森采样:同样可以结合上下文。例如,使用贝叶斯线性回归,为线性模型的参数维护一个后验分布,每次从参数的后验分布中采样一组参数,再用这组参数计算各广告的期望收益并选择最高的。
总结:探索与利用是贯穿CTR模型生命周期的问题。在模型训练阶段,需要探索性的流量来学习新模式;在模型服务阶段,也需要保留一定的探索性来避免陷入局部最优和应对分布变化。Bandit算法,特别是汤普森采样和上下文Bandit,提供了一套在实践中被验证有效的、轻量级的解决方案,与复杂的深度CTR模型相辅相成,共同构建了一个既能把握当下、又能投资未来的智能广告系统。