Lr

article/2025/9/27 11:31:33

二、 逻辑回归

       言归正传,因为广告大部分是按照CPC计费的,而我们手里的流量是固定的,因此对每条广告请求我们就需要保证这条广告的展示收益更大。而广告收益是可以根据点击率、广告计费价格、广告质量度均衡决定的,所以我们就需要评估广告的质量度和点击率,本文就主要研究广告点击率预估中广泛使用的逻辑回归模型。在实际广告点击率预估的应用中,样本数目和特征(逻辑回归粗暴离散化后)的数目均可以达到上亿纬度,而LR因为其简单和易并行,并且基于复杂的特征工程后也能得到非常好的效果,所以在工业界获得了广泛的应用。

      逻辑回归,相对于线性回归是用来处理目标函数是离散数值的情况。它的映射函数和损失函数分别为:

                                                                  (1)                                                                                                (2)

      使用梯度下降法进行求解,得到迭代公式:

           

1.  逻辑回归的优缺点:

      优点:  

          a. 简单

          b. 易于并行、速度快

      缺点:

          a. 需要复杂的特征工程

      注意事项:

          a. 输入特征需要离散化。

三、 SGD算法

         对于如上LR的迭代公式来说,我们可以得到GD(Gradient Descent)的求解算法。(W为求解的参数,l(w, z)为损失函数)。

      

      可是如果我们对参数做一轮迭代求解,都需要遍历所有的样本,这在实际应用中未免迭代速度太慢,模型更新速度也太慢。而且做机器学习的时候往往更多的数据意味着更好的效果,我们能把线上实时的数据和样本标注也利用进来么?答案是 Yes。仔细研究参数的迭代我们可以发现,都是给定一个初始的参数W,通过迭代逐步求解出当前W下降的方向并更新W直到损失函数稳定在最小点。那么我们是不是可以取部分训练集作为原训练集的子集,使用这些子集做迭代,并逐步求解W的下降方向,逐步对W进行更新(理论证明未知)。特别的,如果我们每次取原训练样本的一个训练样本,对W的值逐步进行更新,那么我们就得到了SGD算法。

             

            与SGD比较,GD需要每次扫描所有的样本以计算一个全局梯度,SGD则每次只针对一个观测到的样本进行更新。通常情况下SGD可以更快的逼近最优值,而且SGD每次更新只需要一个样本,使得它很适合进行增量或者在线计算(也就是所谓的Online learning)。

         特别的,迭代和选取模型的时候我们经常希望得到更加稀疏的模型,这不仅仅起到了特征选择的作用,也降低了预测计算的复杂度。在实际使用LR的时候我们会使用L1或者L2正则,避免模型过拟合和增加模型的鲁棒性。在GD算法下,L1正则化通常能得到更加稀疏的解;可是在SGD算法下模型迭代并不是沿着全局梯度下降,而是沿着某个样本的梯度进行下降,这样即使是L1正则也不一定能得到稀疏解。在后面的优化算法中,稀疏性是一个主要追求的目标。

四、 TG算法

1.  L1 正则化法

        由于L1正则项在0处不可导,往往会造成平滑的凸优化问题变成非平滑的凸优化问题,因此可以采用次梯度(Subgradient)来计算L1正则项的梯度。权重更新方式为:

         

       其中是一个标量,为L1正则化的参数;v是一个向量,sgn(v)为符号函数;称为学习率,通常将其设置为的函数;代表第t次迭代中损失函数的梯度。

2.  简单截断法

         既然L1正则化在Online模式下也不能产生更好的稀疏性,而稀疏性对于高维特征向量以及大数据集又特别的重要,我们应该如何处理的呢?

         简单粗暴的方法是设置一个阀值,当W的某纬度的系数小于这个阀值的时候,将其直接设置为0。这样我们就得到了简单截断法。简单截断法以k为窗口,当t/k不为整数时采用标准的SGD进行迭代,当t/k为整数时,权重更新方式如下:

           

           

         这里是一个正数;V是一个向量。

3.  梯度截断法

         简单截断法法简单且易于理解,但是在实际训练过程中的某一步,W的某个特征系数可能因为该特征训练不足引起的,简单的截断过于简单粗暴(too aggresive),会造成该特征的缺失。那么我们有没有其他的方法,使得权重的归零和截断处理稍微温柔一些呢?对,这就是梯度截断法,简单截断法和梯度截断法对特征权重的处理映射图对比如下:

            

           梯度截断法的迭代公式如下:

            

                                       (3)

           同样的梯度截断法也是以k为窗口,每k步进行一次截断。当t/k不为整数时,当t/k为整数时。从公式(3)可以看出决定了截断的区域,也决定了W的稀疏程度。这两个数值越大,截断区域越大,稀疏性也越强。尤其这两个值相等的时候,只需要调节一个参数就能控制稀疏性。根据公式(3),得到TG的算法逻辑如下:

         

         特别的对(3)进行改写,得到描述特征权重的更新方式为:

                

                

         如果令,截断公式变成:

                

         此时TG退化成简单截断法。同样如果令,我们就可以得到L1正则化方法。

四、 FOBOS算法

          FOBOS(Forward-Backward Splitting)是由John Duchi和Yoram Singer提出的。FOBOS算法把正则化的梯度下降问题分成一个经验损失梯度下降迭代和一个最优化问题。其中第二个最优化问题有两项:第一项2范数那项表示不能离loss损失迭代结果太远,第二项是正则化项,用来限定模型复杂度、抑制过拟合和做稀疏化等。

         

          由于求和公式中的每一项都是大于等于0的,所以公式(2)可以拆解成对特征权重每一纬度单独求解:

                      (2)

           首先假设w是(2)的最优解,则有。反正时代入,可以得到w=0是(2)的最优解。。。

           对v和w的取值分别进行求解可以得到:

           

           

           其中g_i^(t)为梯度G^(t)在纬度i上的取值。然后我们可以得到L1-FOBOS的算法逻辑:

           

1.  L1-FOBOS与TG的关系  

           从公式3)可以看出,L1-FOBOS 在每次更新W的时,对W的每个纬度都会加以判定,当满足时对该纬度的特征进行截断,这个判定的含义是当一条样本的梯度不足以令对应纬度上的权重值发生足够大的变化时,认为在本次更新中该纬度不够重要,应当令其权重为0。

           对于L1-FOBOS特征权重的各个纬度更新公式(3),也可以写为如下形式:

             

            如果令,L1-FOBOS与TG完全一致,L1-FOBOS是TG在特定条件下的特殊形式。

五、 RDA算法

           之前的算法都是在SGD的基础上,属于梯度下降类型的方法,这类型的方法的优点是精度比较高,并且TG、FOBOS也能在稀疏性上得到提升。但是RDA却从另一个方面进行在线求解,并且有效提升了特征权重的稀疏性。RDA是Simple Dual Averaging Scheme的一个扩展,由Lin Xiao发表与2010年。

          在RDA中,特征权重的更新策略包含一个梯度对W的积分平均值,正则项和一个辅助的严格凸函数。具体为:

。其中<G(t),W>表示梯度G对W的积分平均值,包含了之前所有梯度的平均值;为正则化项,表示一个非负且非自减序列,是一个严格的凸函数。

1.  算法原理

           之前的算法都是在SGD的基础上,属于梯度下降类型的方法,这类型的方法的优点是精度比较高,并且TG、FOBOS也能在稀疏性上得到提升。但是RDA却从另一个方面进行在线求解,并且有效提升了特征权重的稀疏性。RDA是Simple Dual Averaging Scheme的一个扩展,由Lin Xiao发表于2010年。

          L1-RDA特征权重各个纬度更新方式为:

                

          这里当某个纬度上累积梯度平均值小于阀值的时候,该纬度权重将被设置为0,特征稀疏性由此产生。

          对比L1-FOBOS我们可以发现,L1-FOBOS是TG的一种特殊形式,在L1-FOBOS中,进行截断的判定条件是

,通常会定义为正相关函数。因此L1-FOBOS的截断阀值为,随着t增加,这个阀值会逐渐降低。而相比较而言L1-RDA的截断阀值为,是一个固定的常数,因此可以认定L1-RDA比L1-FOBOS更加aggressive。此外L1-FOBOS判定是针对单次梯度计算进行判定,避免由于训练不足导致的截断问题。并且通过调节一个参数,很容易在精度和稀疏性上进行权衡。

六、FTRL算法

   有实验证明,L1-FOBOS这一类基于梯度下降的方法有较高的精度,但是L1-RDA却能在损失一定精度的情况下产生更好的稀疏性。如何能把这两者的优点同时体现出来的呢?这就是

1.  L1-FOBOS与L1-RDA在形式上的统一:

L1-FOBOS在形式上,每次迭代都可以表示为(这里我们令)

FTRL综合考虑了FOBOS和RDA对于正则项和W的限制,其特征权重为:


注意,公式(3)中出现了L2正则项,而论文[2]的公式中并没有这一项,但是在2013年发表的FTRL工程化实现的论文中却使用了L2正则化项。事实上该项的引入并不影响FTRL的稀疏性,仅仅相当于对最优化过程多了一个约束,使得结果求解更加平滑。

公司(3)看上去很复杂,更新特征权重貌似非常困难。不妨将其改写。将其最后一项展开等价于求解下面的这样一个最优化问题:


,于是针对特征权重的各个纬度将其拆解成N个独立的标量最小化问题。上式最后一项相对于W说是一个常数项,并且令,上式等价于:

到这里,我们遇到了与RDA求解类似的最优化问题。用相同的分析方法可以得到:


上式可以看出,引入L2正则化对于FTRL结果的稀疏性产生任何影响。

在一个标准OGD中使用的是一个全局学习策略,这个策略保证了学习率是一个正的非增长序列,对于每个特征的纬度都是一样的。

考虑特征纬度的变化率:如果特征1比特征2的变化更快,那么纬度1上学习率应该下降的比较快。我们就很容易可以用某个纬度上梯度分量来反映这种变化率。在FTRL中纬度i上的学习率是这样计算的:

。由于,所以公式(4)中有,这里的是需要输入的参数,公式(4)中学习率写成累加的形式,是为了方便理解后面FTRL的迭代计算逻辑。

伪码采用的事L1和L2混合正则,即实际的迭代是如下形式:


总结:

从类型上来看,简单截断法、TG、FOBOS属于同一类,都是梯度下降类的算法,并且TG在特定条件可以转换成简单截断法和FOBOS;RDA属于简单对偶平均的扩展应用;FTRL可以视作RDA和FOBOS的结合,同时具备二者的优点。目前来看,RDA和FTRL是最好的稀疏模型Online Training的算法。FTRL并行化处理,一方面可以参考ParallelSGD,另一方面可以使用高维向量点乘,及梯度分量并行计算的思路。

参考文献:

1.  http://www.wbrecom.com/?p=342   本文显然大量参考了该文章。 作者写的确实好,我再写一遍以便加深自己的理解。


http://chatgpt.dhexx.cn/article/JegRRKHk.shtml

相关文章

在线学习FTRL介绍及基于Flink实现在线学习流程

背景 目前互联网已经进入了AI驱动业务发展的阶段&#xff0c;传统的机器学习开发流程基本是以下步骤&#xff1a; 数据收集->特征工程->训练模型->评估模型效果->保存模型&#xff0c;并在线上使用训练的有效模型进行预测。 这种方式主要存在两个瓶颈&#xff1…

FTRL的理解

个人理解&#xff1a;FTRL是针对LR学习器&#xff0c;设计了一种独特的梯度下降更新方法 从Logistic Regression到FTRL Logistic Regression在Linear Regression的基础上&#xff0c;使用sigmoid函数将yθxb的输出值映射到0到1之间&#xff0c;且log(P(y1)/P(y0)) θxb。并且…

2021-09-08FTRL 跟随正确的领导者

2.2.3 FTRL FTRL&#xff08;Follow the Regularized Leader&#xff09;是一种优化算法&#xff0c;在处理诸如逻辑回归 之类的带非光滑正则化项的凸优化问题上性能出色&#xff0c;自 2013 年谷歌发表 FTRL 算 法的工程性实现论文后[17]&#xff0c;业界纷纷上线该算法&…

python编程之np.argmin()用法解析

疑惑 np.argmin()究竟是干嘛用的&#xff1f; 解惑 给出水平方向最小值的下标&#xff1b; list最小的值是3&#xff0c;对应的下标是2&#xff1b; list1展平是9,8,7,66,23,55,4,23,33;最小的值是4&#xff0c;对应的下标是6

关于argmin和argmax的一点说明

一、定义 首先我们应该知道&#xff0c;arg是元素&#xff08;变元&#xff09;argument的英文缩写。 在数学中&#xff0c;arg max的参数是指使函数值最大化的某个函数域的点。与全局最大值相反&#xff0c;其指的是函数的最大输出 &#xff0c;同理&#xff0c;arg min指的是…

clickhouse的argMin()和argMax()函数

1.语法规则 函数语法argMin(arg&#xff0c;val)计算最小值的arg值。如果val的最小值有几个不同的arg值&#xff0c;则遇到的第一个值是输出。argMax(arg&#xff0c;val&#xff09;计算最大值的参数值。如果存在多个不同的arg值来表示val的最大值&#xff0c;则遇到的第一个…

LaTeX 书写 argmax and argmin 公式

LaTeX 书写 argmax and argmin 公式 1. arg max or argmax For a real-valued function f f f with domain S S S, arg ⁡ max ⁡ f ( x ) x ∈ S \underset{x\in S}{{\arg\max} \, f(x)} x∈Sargmaxf(x)​ is the set of elements in S S S that achieve the global maxi…

torch.argmin()的使用举例

参考链接: argmin(dimNone, keepdimFalse) → LongTensor 参考链接: torch.argmin() 代码实验举例: Microsoft Windows [版本 10.0.18363.1256] (c) 2019 Microsoft Corporation。保留所有权利。C:\Users\chenxuqi>conda activate ssd4pytorch1_2_0(ssd4pytorch1_2_0) C:\U…

numpy.argmin()||argmax()结构及用法||详解axis

numpy.argmin(a, axisNone, outNone)官方文档 参数详解 a : array_like 输入数组 axis : int, optional 默认输入数组展平&#xff0c;否则&#xff0c;按照指定的axis方向 按照指定轴&#xff0c;可以理解为将数据投影到这个轴上。 out : array, optional如果设置了某个数…

ARG MIN的含义是什么?

ARG MIN的含义是什么&#xff1f; 最通俗的理解&#xff1a;表示使目标函数取最小值时的变量值 From Wikipedia In mathematics, arg max (or argmax) stands for the argument of the maximum, that is to say, the set of points of the given argument for which the value…

Matlab中关于argmax、argmin函数的使用

1、在matlab的现有函数中&#xff0c;并没有argmax&#xff0c;argmin函数可以直接调用&#xff0c;要根据这两个函数的实际意义&#xff0c;自己编写程序进行计算 2、我要求解的函数是下式&#xff1a; 其中mad(theta)和amd(theta)两个均为1 * 11的double型向量 括号里得到一…

argmax和argmin的理解

1、符号 &#xff1a;argmax: 2、符号 &#xff1a;argmin:

argmin ,argmax函数

在数学中&#xff0c;ARG MAX&#xff08;或ARGMAX&#xff09;代表最大值&#xff0c;即给定参数的点集&#xff0c;给定表达式的值达到其最大值&#xff1a; 换一种说法&#xff0c; 是f&#xff08;x&#xff09;具有最大值M的x的值的集合。例如&#xff0c;如果f&#xff0…

全网最详细numpy的argmin与argmax解析(一次性理解np.argmin)

本文以np.argmin()进行讲解&#xff0c;np.argmax()与之类似&#xff0c;np.argmin()求最小值对应的索引&#xff0c;np.argmax()求最大值对应的索引 首先看一下官方注释 def argmin(a, axisNone, outNone):"""Returns the indices of the minimum values alo…

矩阵的内积和外积,三向量混合积

矩阵的内积指的是矩阵点乘&#xff0c;即矩阵的对应元素相乘&#xff1b;矩阵的外积指的是矩阵的叉乘&#xff0c;即矩阵相乘&#xff0c;比如CA*B&#xff0c;则A的列数要与B的行数一致&#xff0c;例如A为[m,n]&#xff0c; B 为[n,k]&#xff0c; 则C为 [m,k].三向量混合积的…

矩阵与向量的乘积

下面是定义&#xff1a; Ax的结果会让我们想起之前的线性系统和多元一次方程组 也就是说&#xff0c;向量x在经过矩阵A的变换后&#xff0c;得到了向量B 下面以两种观点来看矩阵与向量的乘积。 row aspect 矩阵的第n行与向量做内积&#xff0c;然后将结果放在第n行 2.colum…

【矩阵论】内积空间与等距变换(2)

内积空间与等距变换之正交补空间与等距变换 一. 正交补空间的定义及概念 1. 正交关系的定义 &#xff08;1&#xff09;向量正交于子空间 若某空间V中的向量α垂直于V的子空间W中的任意一个向量&#xff0c;就说该向量α垂直于子空间W。 &#xff08;2&#xff09;子空间正交…

【矩阵论】内积空间与等距变换(1)

内积空间与等距变换之基本概念 前面有关于“线性空间与线性变换”的概念主要是对几何空间中的线性运算&#xff08;数乘和加法运算&#xff09;进行了推广&#xff1b; 不论我们讨论线性空间的什么性质和定义&#xff0c;其本质都是围绕着线性运算进行展开的。 但是在几何空间…

矩阵分析L3内积空间

一、内积空间的概念 1.概念 两个向量的点乘操作应该算内积空间 2.性质 3.类型 Rn上的标准内积 因为要对应位置相乘&#xff0c;所以后一个转置了一下 Rnn上的内积 同样也是对应位置相乘 Rmn上的内积 转置后再相乘&#xff0c;因为对应 二、向量的长度及夹角 1.向量长度 …

矩阵分析(三)内积空间

根据前面的知识&#xff0c;可知&#xff0c;在线性空间中&#xff0c;向量之间的基本运算只有加法和数乘向量两种运算&#xff0c;而向量的度量在线性空间理论中没有反映&#xff0c;这局限了线性空间理论的应用。在本篇中&#xff0c;我们将借助于内积把度量概念引入到线性空…