逻辑回归 logistic regression 算法原理及优化

本文深入解析逻辑回归算法,探讨其作为分类方法而非回归方法的本质,强调无需假设数据分布的优点,介绍算法推导过程,包括线性模型、Sigmoid函数、代价函数及梯度下降法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

逻辑回归也叫对数几率回归

“逻辑回归”虽然叫回归,但是却是一种分类方法,跟线性回归(linear regression)有着显著的不同。

  • 优点:无需事先假设数据分布,可以避免假设分布不准确带来的问题;不是预测出类别,而是给出近似概率;对率函数是任意阶可导的凸函数,有很好的数学性质。
  • 缺点:

算法推导

  • 给定训练数据集D={(xi,yi)}i=1mD=\{(x_i,y_i)\}_{i=1}^mD={(xi,yi)}i=1m,样本xix_ixiddd个属性描述,线性模型为:
    hω(x)=ωTx+b h_\omega(x)=\omega^Tx+b hω(x)=ωTx+b
    引入Sigmod函数
    f(z)=11+ez f(z)=\frac{1}{1+e^z} f(z)=1+ez1
    f(z)∈{0,1}f(z) \in \{0,1\}f(z){0,1} ,将$h(x)=z $即为逻辑回归的模型.
    fω(x)=11+ehω(x) f_\omega(x)=\frac{1}{1+e^{h_\omega(x)}} fω(x)=1+ehω(x)1
    代价函数为
    J(ω)={−log(fω(x))  ,if  y=1−log(1−fω(x))  ,y=0 J(\omega)=\begin{cases} -log(f_\omega(x)) \; , if \; y=1 \\ -log(1-f_\omega(x))\;, y=0 \end{cases} J(ω)={log(fω(x)),ify=1log(1fω(x)),y=0
    这个代价函数还可以进一步简化为:
    J(ω)=−ylog(fω(x))−(1−y)log(1−fω(x)) J(\omega)=-ylog(f_\omega(x))-(1-y)log(1-f_\omega(x)) J(ω)=ylog(fω(x))(1y)log(1fω(x))
    我们的目标就是确定ω\omegaω,使得J(ω)J(\omega)J(ω)最小

使用梯度下降的方法:
对于训练集中的每个样本{xi,yi}\{x^i,y^i\}{xi,yi},为了方便计算,将代价函数改写为:
J(ω)=−1m∑i=1m[yilog(fω(xi))+(1−yi)log(1−fω(xi))] J(\omega)=-\frac{1}{m} \sum_{i=1}^{m}[y^ilog(f_\omega(x^i))+(1-y^i)log(1-f_\omega(x^i))] J(ω)=m1i=1m[yilog(fω(xi))+(1yi)log(1fω(xi))]
如果作以下denote,可以将其写成矢量化

X=[x1T1x2T1⋮⋮xmT1] X=\begin{bmatrix} x_1^T&1 \\ x_2^T&1 \\ \vdots&\vdots \\ x_m^T&1 \end{bmatrix} X=x1Tx2TxmT111
ω=(ω;b)=[ω1ω2...ωdb] \omega=(\omega ;b)= \begin{bmatrix} \omega_1 \\ \omega_2\\ ... \\ \omega_d \\ b \end{bmatrix} ω=(ω;b)=ω1ω2...ωdb
y=[y1y2⋮ym]g(x)=11+ex y=\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix} g(x)=\frac{1}{1+e^x} y=y1y2ymg(x)=1+ex1

矢量化的写法为:(矢量化可以大大减少计算复杂度,在Python或者MATLAB等上可以实现)

h=g(Xω)J(ω)=1m⋅[−yTlog(h)−(1−y)Tlog(1−h)] h=g(X\omega) \\ J(\omega)=\frac{1}{m} \cdot [-y^Tlog(h)-(1-y)^Tlog(1-h)] h=g(Xω)J(ω)=m1[yTlog(h)(1y)Tlog(1h)]
则其梯度为:
∂J(ω)∂ωj=1m∑i=1m(fω(xi)−yi)⋅xji \frac{\partial J(\omega)}{\partial \omega_j}=\frac{1}{m} \sum_{i=1}^{m}(f_\omega(x^i)-y^i)\cdot x_j^i ωjJ(ω)=m1i=1m(fω(xi)yi)xji
梯度的矢量化写法为:
∂J(ω)∂ωj=1mXT(g(Xω)−y) \frac{\partial J(\omega)}{\partial \omega_j}=\frac{1}{m}X^T(g(X\omega)-y) ωjJ(ω)=m1XT(g(Xω)y)
所以,逻辑回归的梯度下降算法为:

重复此过程直至收敛:{
ωj:=ωj−αmXT(g(Xω)−y) \omega_j:=\omega_j - \frac{\alpha}{m}X^T(g(X\omega)-y) ωj:=ωjmαXT(g(Xω)y)
}

其中,α\alphaα为学习率,这是矢量化的写法,如果用普通写法,就逐个参数同时更新,这里就不写了。

关于代价函数采用-log()的解释

出发点:假设样本的分类为1(y=1y=1y=1),我们希望当预测的结果越接近1,损失越小,预测结果越接近0,损失越大。考虑到函数y=log(x)y=log(x)y=log(x)当log的底数大于1的函数图像:

将其倒转并取x值为(0,1]可得:

这样的函数就很好的契合了我们的目标,即越接近0值越大,越接近1值越小。
当样本分类为0(y=0y=0y=0)时也是一样的道理将x换成1-x即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值