Logistic回归5—优化求解

Logistic回归的目标函数

∙ \bullet Logistic回归的损失函数采用Logistic损失/交叉熵损失 L ( y , μ ( x ) ) = − y l o g μ ( x ) − ( 1 − y ) l o g ( 1 − μ ( x ) ) L(y, \mu(x)) = -ylog\mu(x) - (1-y)log(1-\mu(x)) L(y,μ(x))=ylo(x)(1y)log(1μ(x)) ∙ \bullet 其中y为真值, μ ( x ) = σ ( w T x ) \mu(x) = \sigma(\mathbf w^T \mathbf x) μ(x)=σ(wTx)为预测值为1的概率。
∙ \bullet 同其他机器学习模型一样,Logistic回归的目标函数也包括两项:训练集上的损失和 + 正则项 J ( w ; λ ) = ∑ i = 1 N L ( y i , μ ( x i ; w ) ) + λ R ( w ) J(\mathbf w;\lambda) = \sum_{i=1}^{N}L(y_{i}, \mu(\mathbf x_{i};\mathbf w)) + \lambda R(\mathbf w) J(w;λ)=i=1NL(yi,μ(xi;w))+λR(w)
∙ \bullet 类似回归任务,正则项R(w)可以是L1正则、L2正则、L1正则+L2正则,在线性回归模型中,分别对应岭回归(Ridge)、Lasso、弹性网络(ElasticNet)。
  注意:损失函数 μ ( x ) \mu(x) μ(x)是概率,不是最终分类,也不是线性模型计算出来的大于可以大于1的那个数。使用L1正则,包括L1+L2正则时,当 λ \lambda λ大到一定程度时,都可得到稀疏解,但仍然不可使用基于梯度的优化算法,也不可使用带二阶海森矩阵的优化算法,而要使用坐标轴下降。

目标函数的最优解

∙ \bullet 给定正则参数 λ \lambda λ的情况下,目标函数最优解:KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at position 5: \hat\̲m̲a̲t̲h̲b̲f̲ ̲w = argmin_{\ma…
∙ \bullet 最优解的必要条件为一阶导数为0: ∂ J ( w ; λ ) ∂ w = 0 \frac{\partial J(\mathbf w; \lambda)}{\partial\mathbf w} = 0 wJ(w;λ)=0
∙ \bullet 同线性回归模型不同,Logistic回归模型的参数无法用解析求解法求得最优解,可采用迭代求法求解:
  1)一阶近似:梯度相关:梯度下降、随机梯度下降(SGD)、随机平均梯度下降(SAG)、随机平均梯度改进版(SAGA)、共轭梯度、座标轴下降。没有列出小批量梯度下降(MBGD)啊?平均梯度下降也是第一次听说。
  2)二阶近似:牛顿法、拟牛顿法(BFGS、LBFGS)

梯度

∙ \bullet 训练集上损失函数和部分: J 1 ( w ) = ∑ i = 1 N − y i l o g μ ( x i ; w ) − ( 1 − y i ) l o g ( 1 − μ ( x i ; w ) ) J_{1}(\mathbf w) = \sum_{i=1}^{N}-y_{i}log\mu(\mathbf x_{i};\mathbf w) - (1-y_{i})log(1-\mu(\mathbf x_{i};\mathbf w)) J1(w)=i=1Nyilo(xi;w)(1yi)log(1μ(xi;w)) ∙ \bullet μ i = μ ( x i ; w ) = σ ( w T x ) \mu_{i} = \mu(\mathbf x_{i};\mathbf w) = \sigma(\mathbf w^T\mathbf x) μi=μ(xi;w)=σ(wTx)
∙ \bullet 先给出结论,梯度: g ( w ) = ∇ J 1 ( w ) = ∑ i = 1 N ( μ i − y i ) x i = X T ( μ − y ) g(\mathbf w) = \nabla J_{1}(\mathbf w) = \sum_{i=1}^{N}(\mu_{i} - y_{i})\mathbf x_{i} = \mathbf X^T(\mathbf \mu - \mathbf y) g(w)=J1(w)=i=1N(μiyi)xi=XT(μy)
  矩阵X一行是一个样本,一列是一个特征,转置后,一行就是一个特征,刚好与后面的 ( μ − y ) (\mu - y) (μy)相乘, μ \mu μ y y y都是列向量。
g ( w ) = ∇ w J 1 ( w ) = ∂ J 1 ( w ) ∂ w g(\mathbf w) = \nabla_{\mathbf w} J_{1}(\mathbf w) = \frac{\partial J_{1}(\mathbf w)}{\partial \mathbf w} g(w)=wJ1(w)=wJ1(w)
= − ∑ i = 1 N ( y i 1 μ i − ( 1 − y i ) 1 1 − μ i ) ∗ ∂ μ i ∂ w =-\sum_{i=1}^{N}(y_{i}\frac{1}{\mu_{i}} - (1-y_{i}) \frac{1}{1-\mu_{i}} )*\frac{\partial \mu_{i}}{\partial \mathbf w} =i=1N(yiμi1(1yi)1μi1)wμi注意:上一步骤的复合函数求导中, 1 − μ i 1-\mu_{i} 1μi也是一个复合函数。
= − ∑ i = 1 N ( y i 1 μ i − ( 1 − y i ) 1 1 − μ i ) ∗ μ i ( 1 − μ i ) x i =-\sum_{i=1}^{N}(y_{i}\frac{1}{\mu_{i}} - (1-y_{i}) \frac{1}{1-\mu_{i}} )*\mu_{i}(1-\mu_{i})\mathbf x_{i} =i=1N(yiμi1(1yi)1μi1)μi(1μi)xi注意:上一步骤中,直接使用了结论: ∂ μ i w = μ i ( 1 − μ i ) x i \frac{\partial \mu_{i}}{\mathbf w} = \mu_{i}(1-\mu_{i})\mathbf x_{i} wμi=μi(1μi)xi,后边会有推导过程。
= − ∑ i = 1 N [ y i ( 1 − μ i ) − ( 1 − y i ) μ i ] x i =-\sum_{i=1}^{N}[y_{i}(1-\mu_{i}) - (1-y_{i})\mu_{i}]\mathbf x_{i} =i=1N[yi(1μi)(1yi)μi]xi = − ∑ i = 1 N ( y i − μ i ) x i =-\sum_{i=1}^{N}(y_{i} - \mu_{i}) \mathbf x_{i} =i=1N(yiμi)xi = ∑ i = 1 N ( μ i − y i ) x i =\sum_{i=1}^{N}(\mu_{i} - y_{i}) \mathbf x_{i} =i=1N(μiyi)xi下面推导上面直接使用导的结论
d σ ( z ) d z = d ( 1 1 + e − z ) d z = − 1 ( 1 + e − z ) 2 ∗ ( − e − z ) \frac{d\sigma(z)}{dz} = \frac{d(\frac{1}{1+e^{-z}})}{dz} = -\frac{1}{(1+e^{-z})^2} * (-e^{-z}) dzdσ(z)=dzd(1+ez1)=(1+ez)21(ez) = 1 ( 1 + e − z ) 2 ∗ e − z =\frac{1}{(1+e^{-z})^2} * e^{-z} =(1+ez)21ez = 1 1 + e − z ∗ e − z 1 + e − z =\frac {1}{1 + e^{-z}} * \frac{e^{-z}}{1+e^{-z}} =1+ez11+ezez = 1 1 + e − z ∗ ( 1 − 1 1 + e − z ) =\frac {1}{1 + e^{-z}} * (1 - \frac{1}{1+e^{-z}}) =1+ez1(11+ez1) = σ ( z ) ∗ ( 1 − σ ( z ) =\sigma(z) * (1-\sigma(z) =σ(z)(1σ(z)这是sigmoid函数的求导结论,下面推导线性模型作为自变量的sigmoid函数的求导公式:
∂ μ ∂ w = ∂ σ ( w T x ) ∂ w \frac{\partial \mu}{\partial \mathbf w} = \frac{\partial \sigma(\mathbf w^T\mathbf x)}{\partial \mathbf w} wμ=wσ(wTx) = ∂ σ ( z ) ∂ z ∗ ∂ z ∂ w = \frac{\partial \sigma(z)}{\partial z} * \frac{\partial z}{\partial \mathbf w} =zσ(z)wz = σ ( z ) ∗ ( 1 − σ ( z ) ∗ x i =\sigma(z) * (1-\sigma(z)* \mathbf x_{i} =σ(z)(1σ(z)xi根据前面的定义, σ = μ \sigma = \mu σ=μ = μ ∗ ( 1 − μ ) ∗ x i =\mu * (1-\mu) * \mathbf x_{i} =μ(1μ)xi注意:上式得到的其实是一个向量。

用牛顿法求解Logistic损失函数和的极小值:IRLS

不是完全明白,直接贴处PPT,之后再来弄清楚细节。
  在这里插入图片描述
  在这里插入图片描述
∙ \bullet IRLS的翻译为迭代加权最小二乘,主要是因为倒数第三个公式里的S,是在倒数第二个公式的基础上的加权值。倒数第二个公式,是标准的最小二乘解析求解的公式。
在这里插入图片描述
∙ \bullet 加权最小二乘又通过共轭梯度法求解,因此Scikit-Learn中采用的牛顿法求解的算法名称取为“Newton-CG”。
∙ \bullet 此处讲的最小二乘与上一节讲过的用“线性回归”模型计算 d t d^t dt之间是什么关系?

Logistic回归优化求解

∙ \bullet Logistic回归优化求解有多种方法:牛顿法、梯度、随机梯度、共轭梯度都可以。
∙ \bullet L2正则函数连续,可采用所有的优化方法。
∙ \bullet 由于L1正则函数不连续,所以需要用梯度/Hessian矩阵的方法不适用。类似Lasso求解,可采用坐标轴下降。

Scikit-Learn中实现Logistic回归的类

class sklearn.linear_model.LogisticRegression(penalty='l2',...,solver='liblinear',...)

∙ \bullet 参数solver表示优化算法,可选:
  1)liblinear:使用开源的liblinear库实现,内部使用了坐标轴下降算法来优化损失函数,支持L1正则和L2正则。
  2)lbfgs:拟牛顿法,只支持L2。
  3)newton-cg:牛顿法(每个大迭代中的加权在这里插入代码片最小二乘回归部分采用共轭梯度实现,拟牛顿法是这样的吗?没写出来就应该不是的吧?拟牛顿法,应该涉及到计算更新量的问题,因为它只是换各方式计算海森矩阵,没说不用计算更新量。),只支持L2正则。
  4)sag:随机平均梯度下降,梯度下降的变种,适合于样本数据多(如大于5万)的时候,只支持L2正则。
  5)saga:改进的随机平均梯度下降,支持L1正则。what,梯度下降类算法不是不支持L1正则吗?老师原话说的是,在最新版的Scikit-Learn中已经可以支持L1正则了。看来此处不是笔误啊。
∙ \bullet liblinear是一个大规模线性方程求解的库。
根据上面的信息,在Scikit-Learn中,若想用L1正则,则只有liblinear和saga两种选择,样本数小的时候用libliner,样本数特别大的时候用saga。
在这里插入图片描述
在讲这张PPT的时候,老师说道:若要用L2,数据量小的时候用liblinear、newton_cg,数据量大的时候用lbfgs、sag,数据量再大一些的时候用saga。说道的根PPT里的内容好像有细微的区别。
大数据还可以考虑SGDClassifier,用logloss就是logistic回归,用hingelos,就是用随机梯度下降实现的SVM。
注意最后一句话,其实加正则也需要做数据缩放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值