点击率预测算法:FTRL

1、逻辑回归

FTRL本质上是一种优化方法,最早由google提出并用于CTR预估。常被用于逻辑回归的优化,因此先简单介绍一下逻辑回归的内容。

1.1 sigmoid函数

由于二分类结果是1或者0,这与数学的阶跃函数很类似,但是阶跃函数在x=0的位置会发生突变,这个突变在数学上很难处理。所以一般使用sigmoid函数来拟合:

g ( z ) = 1 1 + e − z ( 1 ) g(z)={\frac 1{1+e^{-z}}} \qquad(1) g(z)=1+ez1(1)

具体应用到逻辑回归算法中:

z = ω 0 + ω 1 x 1 + ω 2 x 2 + . . . . . . + ω n x n = ∑ i = 0 n ω i x i = ω T X ( 2 ) z={\omega}_0+{\omega}_1x_1+{\omega}_2x_2+......+{\omega}_nx_n=\sum_{i=0}^n{\omega}_ix_i=\mathbf{\omega^TX} \qquad(2) z=ω0+ω1x1+ω2x2+......+ωnxn=i=0nωixi=ωTX(2)

其中 x i x_i xi表示样本属性(对于我们而言,就是标签IP)的值, ω i \omega_i ωi表示这个属性对应的系数(也就是算法需要计算的内容)。注意这里将 x 0 x_0 x0 ω 0 \omega_0 ω0也代入了上述公式,其中前者恒为1。于是问题就变成了在训练样本中,已知属性x与最终分类结果y(1或者0)时,如何求得这些系数 ω i \omega_i ωi,使得损失最小。

1.2 极大似然估计MLE与损失函数

在机器学习理论中,损失函数(loss function)是用来衡量模型的预测值 f ( x ) f(x) f(x)与真实值 Y Y Y的不一致程度,它是一个非负实值函数,损失函数越小,模型越优(还需考虑过拟合等问题)。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子

ω ∗ = arg ⁡ min ⁡ ω 1 m ∑ i = 1 m L ( y i , f ( x i ; ω ) ) + λ   Φ ( ω ) ( 3 ) \omega^* = \arg \min_\omega \frac{1}{m}{}\sum_{i=1}^{m} L(y_i, f(x_i; \omega)) + \lambda\ \Phi(\omega) \qquad(3) ω=argωminm1i=1mL(yi,f(xi;ω))+λ Φ(ω)(3)

其中m表示样本的数量。对于逻辑回归,其loss function是log损失,这可以通过极大似然估计进行推导得到。

首先,给定一个样本 x x x,可以使用一个线性函数对自变量进行线性组合,即上述的(2)式子:
z = ω 0 + ω 1 x 1 + ω 2 x 2 + . . . . . . + ω n x n = ∑ i = 0 n ω i x i = ω T X ( 4 ) z={\omega}_0+{\omega}_1x_1+{\omega}_2x_2+......+{\omega}_nx_n=\sum_{i=0}^n{\omega}_ix_i=\mathbf{\omega^TX} \qquad(4) z=ω0+ω1x1+ω2x2+......+ωnxn=i=0nωixi=ωTX(4)

根据sigmoid函数,我们可以得出预测函数的表达式为:
h ω ( x ) = g ( ω T x ) = 1 1 + e − ω T x ( 5 ) h_{\omega}(x) = g(\omega^Tx) = \frac{1}{1 + e^{-\omega^Tx}} \qquad(5) hω(x)=g(ωTx)=1+eωTx1(5)
上式表示 y = 1 y=1 y=1的预测函数为 h ω ( x ) h_{\omega}(x) hω(x)。在这里,假设因变量 y y y服从伯努利分布,那么可以得到下列两个式子:

p ( y = 1 ∣ x ) = h ω ( x ) ( 6 ) p ( y = 0 ∣ x ) = 1 − h ω ( x ) ( 7 ) \begin{aligned} p(y=1 | x) &= h_{\omega} (x) \quad\qquad(6)\\ p(y=0 | x) &= 1 - h_{\omega} (x) \qquad(7) \end{aligned} p(y=1x)p(y=0x)=hω(x)(6)=1hω(x)(7)
而对于上面的两个表达式,通过观察,我们发现,可以将其合并为以下表达式:
p ( y ∣ x ) = h ω ( x ) y ( 1 − h ω ( x ) ) 1 − y ( 8 ) p(y | x) = h_{\omega} (x)^y (1-h_{\omega} (x))^{1-y} \qquad(8) p(yx)=hω(x)y(1hω(x))1y(8)
根据上面的式子,给定一定的样本之后,我们可以构造出似然函数,然后可以使用极大似然估计MLE的思想来求解参数。但是,为了满足最小化风险理论,我们可以将MLE的思想转化为最小化风险化理论,最大化似然函数其实就等价于最小化负的似然函数。对于MLE,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说是什么样的参数才能使我们观测到目前这组数据的概率最大。使用MLE推导LR的loss function的过程如下。
首先,根据上面的假设,写出相应的极大似然函数(假定有 m m m个样本):
L ( ω ) = ∏ i = 1 m p ( y i ∣ x i ; ω ) = ∏ i = 1 m h ω ( x i ) y i ( 1 − h ω ( x i ) 1 − y i ( 9 ) \begin{aligned} L(\omega)&= \prod_{i=1}^{m} p(y_i | x_i; \omega) \\ &= \prod_{i=1}^{m} h_{\omega} (x_i)^{y_i} (1-h_{\omega} (x_i)^{1-y_i} \\ \end{aligned} \qquad(9) L(ω)=i=1mp(yixi;ω)=i=1mhω(xi)yi(1hω(xi)1yi(9)

上述式子中的 ω \omega ω x i x_i xi均为向量,并未显示其转置。

直接对上面的式子求导会不方便,因此,为了便于计算,我们可以对似然函数取对数,经过化简可以得到下式的推导结果:
log ⁡ L ( ω ) = ∑ i = 1 m log ⁡ [ ( h ω ( x i ) y i ( 1 − h ω ( x i ) ) 1 − y i ) ] = ∑ i = 1 m [ y i log ⁡ h ω ( x i ) + ( 1 − y i ) log ⁡ ( 1 − h ω ( x i ) ) ] ( 10 ) \begin{aligned} \log L(\omega)&= \sum_{i=1}^{m} \log \left [ (h_{\omega} (x_i)^{y_i} (1-h_{\omega} (x_i))^{1-y_i}) \right ] \\ &= \sum_{i=1}^{m} \left [ y_i \log h_{\omega} (x_i) + (1-y_i) \log(1-h_{\omega} (x_i)) \right ] \\ \end{aligned} \qquad(10) logL(ω)=i=1mlog[(hω(xi)yi(1hω(xi))1yi)]=i=1m[yiloghω(xi)+(1yi)log(1hω(xi))](10)

因此,损失函数可以通过最小化负的似然函数得到,即下式:

J ( ω ) = − 1 m ∑ i = 1 m [ y i log ⁡ h ω ( x i ) + ( 1 − y i ) log ⁡ ( 1 − h ω ( x i ) ] ( 11 ) J(\omega) = - \frac{1}{m} \sum_{i=1}^m \left [ y_i \log h_{\omega}(x_i) + (1-y_i) \log(1-h_{\omega}(x_i) \right ] \qquad(11) J(ω)=m1i=1m[yiloghω(xi)+(1yi)log(1hω(xi)](11)

在周志华版的机器学习中,将sigmiod函数代入 h ω ( x i ) h_{\omega}(x_i) hω(xi),并使用ln代替log,上述公式表示为:

J ( ω ) = − 1 m ∑ i = 1 m [ y i ln ⁡ h ω ( x i ) + ( 1 − y i ) ln ⁡ ( 1 − h ω ( x i ) ] = − 1 m ∑ i = 1 m [ y i ln ⁡ 1 1 + e − ω x i + ( 1 − y i ) ln ⁡ e − ω x i 1 + e − ω x i ] = − 1 m ∑ i = 1 m [ ln ⁡ 1 1 + e ω x i + y i ln ⁡ 1 e − ω x i ] = 1 m ∑ i = 1 m [ − y i w x i + ln ⁡ ( 1 + e ω x i ) ] ( 12 ) \begin{aligned} J(\omega) &= - \frac{1}{m} \sum_{i=1}^m \left [ y_i \ln h_{\omega}(x_i) + (1-y_i) \ln(1-h_{\omega}(x_i) \right ]\\ &=- \frac{1}{m} \sum_{i=1}^m \left [ y_i\ln \frac{1}{1+e^{-\omega x_i}}+(1-y_i)\ln \frac{e^{-\omega x_i}}{1+e^{-\omega x_i}}\right ]\\ &=- \frac{1}{m} \sum_{i=1}^m \left [ \ln \frac{1}{1+e^{\omega x_i}} + y_i \ln \frac{1}{e^{-\omega x_i}}\right ]\\ &= \frac{1}{m} \sum_{i=1}^m \left [ -y_iwx_i + \ln(1+e^{\omega x_i})\right ] \end{aligned} \qquad(12) J(ω)=m1i=1m[yilnhω(xi)+(1yi)ln(1hω(xi)]=m1i=1m[yiln1+eωxi1+(1yi)ln1+eωxieωxi]=m1i=1m

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值