Press "Enter" to skip to content

计算广告面面观(6):CTR预估模型简介之非深度学习篇

本文主要介绍 CTR 预估中常用的一些模型,主要是非深度学习模型,包括 LR、GBDT+LR、FM/FFM、MLR。每个模型会简单介绍其原理、论文出处以及其一些开源实现。

 

一、LR(Logistic Regerssion)

 

LR + 海量人工特征 是业界流传已久的做法,这个方法由于简单、可解释性强,因此在工业界得到广泛应用,但是这种做法依赖于特征工程的有效性,也就是需要对具体的业务场景有深刻的认识才能提取出好的特征。

 

原理

 

LR是一个很简单的线性模型,其输出的值可认为是事件发生$(y=1)$的概率,即输出值如下式所示:

 

其中$w$为模型参数,$x$为提取的样本特征,两者均为向量,$b$是偏置项。$σ$为$sigmoid$函数,即 $σ(x)=1/(1+e^{−x})$

 

有了事件发生的概率,则事件不发生的概率为$p(y=0|x)=1−h(x)$,将这两个概率通过如下一条公式表示为

 

有了这个概率值,则给定 n 个样本,便可通过极大似然估计来估算模型参数,即目标函数为

 

通常我们还会对概率取 log,同时添加负号将 max 改成min,则可将目标函数改写成如下的形式

 

上面的损失函数也叫作log loss,实际上多分类的cross entropy也同以通过极大似然估计推导出来。

 

有了损失函数,便可通过优化算法来求出最优的参数,由于这是个无约束的最优化问题,可选用的方法很多,最常用的就是gradient descent,除此之外,另外还有基于二阶导数的牛顿法系列,适用于分布式中的 ADMM,以及由 Google 在论文 Ad Click Prediction: a View from the Trenches
中提出的 FTRL 算法,目前也是业界普遍采用的方法,该算法具有online learning 和稀疏性的良好特性,online learning 指的是其更新方式与 SGD(stochastic gradient descent) 相似,稀疏性指的是该算法能够解决带非光滑的L1正则项的优化问题。由于这里这篇文章主要讲述各种 CTR 预估模型,因此这里不对优化算法做展开了。

 

上面提到了 L1 正则项,就是在原来的损失函数基础上加上了$C∑^m_{i=1}|w_i|$ 这一项, 表示各个参数的绝对值的和乘上常数C;加上这一项后能够使得最终的求解出来的参数中大部分的$|w_i|$为0,这也是稀疏性的名称来源。稀疏性使得模型的复杂度下降,缓解了过拟合的问题,同时具有有特征筛选的能力。因为 LR 模型可以理解为对各个特征进行加权求和,如果某些特征的权重即$w_i$为0,则可认为这些特征的重要性不高。在CTR预估中输入的是海量人工特征,因此添加 L1 正则化就更有必要了。

 

由于L1正则项不再是处处光滑可导的函数,因此在优化损失函数时。原来的gradient descent不能够直接使用,而是要通过subgradient的方法或前面提到的FTRL算法进行优化。

 

上面涵盖了LR模型的基本原理。而在CTR预估中,应用LR模型的重点在于特征工程。LR模型适用于高维稀疏特征。对于categorical特征,可以通过one-hot编码使其变得高纬且稀疏。而对于continious特征,可以先通过区间划分为categorica特征再进行one-hot编码。同时还需要进行特征的组合/交叉,以获取更有效的特征。

 

一些问题

 

上面介绍过程中有一些结论我们直接就使用了,下面对于上面提到的某些结论做出一些解释

 

 

    1. $LR$的输出为什幺可以被当做是概率值?

 

 

这部分涉及到广义线性模型$(GLM,Generalized linear model)$的知识,这里略过复杂的推导,直接给出结论。简单来说,LR 实际上是一个广义线性模型,其假设是二分类中$(y|x,θ)$服从伯努利分布(二项分布),即给定输入样本$x$和模型参数$θ$, 事件是否发生服从伯努利分布。假设伯努利分布的参数 ϕ ,则 ϕ 可作为点击率。通过 广义线性模型的推导,能够推出$ϕ$ 的表示形式如下

 

从上面的式子可知,$LR$中的$sigmoid$函数并不是凭空来的,而式子中的$η$也被称为连接函数(Link function), 是确定一个$GLM$的重要部分,在$LR$中为简单的线性加权。

 

另外,如果将输出值与真实值的误差的分布假设为高斯分布,那幺从 GLM 可推导出 Linear Regression,关于 GLM 详细的推导可参考这篇文章 广义线性模型(GLM)

 

 

为什幺 L1 正则项能够带来稀疏性?

 

连续特征为什幺需要离散化?

 

 

参考这个问题: 连续特征的离散化:在什幺情况下将连续的特征离散化之后可以获得更好的效果?

 

离散化后有以下几个好处:

 

1) 稀疏向量内积乘法运算速度快,计算结果方便存储

 

2) 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;

 

3) 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,可以通过 one-hot 编码为每个变量设置单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;

 

4) 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;

 

5) 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎幺划分区间要取决于具体的场景

 

 

    1. 为什幺要对 categorical 特征做 One-hot 编码后再输入 LR?

 

 

参考这篇文章 One-Hot编码与哑变量
,简单来说,就是LR建模时,要求特征具有线性关系,而实际应用中很少有满足这个假设关系的,因此LR模型效果很难达到应用要求。但是通过对离散特征进行 one-hot 编码,LR 可以为某个特征中所有可能的值设置一个权重,这样就能够更准确的建模,也就能够获得更精准的模型。而 one-hot 编码后特征实际上也是做了一个 min-max 归一化,能够克服不同特征的量纲差异,同时使模型收敛更快。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注