当前位置: 首页 > news >正文

逻辑回归梯度推导

逻辑回归是一种广泛使用的分类算法,用于估计一个事件发生的概率。它是线性回归的扩展,通过sigmoid函数将线性回归的输出映射到[0, 1]区间,从而用于分类任务。
在逻辑回归中,我们使用对数似然损失函数(log-likelihood loss function)来衡量模型预测值与真实值之间的差异。我们的目标是最小化这个损失函数,以找到最优的模型参数。
假设我们有以下符号:

  • h θ ( x ) h_{\theta}(x) hθ(x) 是模型预测的概率, h θ ( x ) = 1 1 + e − θ T x h_{\theta}(x) = \frac{1}{1 + e^{-\theta^T x}} hθ(x)=1+eθTx1
  • m m m 是训练样本的数量。
  • y y y 是实际输出标签,取值为0或1。
  • θ \theta θ 是模型参数。
  • x x x 是单个训练样本的特征向量。

对数似然损失函数为(也可以说是交叉熵损失,来源于KL散度的后一项):
L ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] L(\theta) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h_{\theta}(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_{\theta}(x^{(i)}))] L(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

为了找到最小化损失函数的参数 θ \theta θ,我们需要计算损失函数关 $\theta $ 的梯度。以下是梯度计算的过程:

对 $ L(\theta) $ 求关于$ \theta_j $ 的偏导数:
∂ ∂ θ j L ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) ∂ ∂ θ j log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) ∂ ∂ θ j log ⁡ ( 1 − h θ ( x ( i ) ) ) ] = − 1 m ∑ i = 1 m [ y ( i ) h θ ( x ( i ) ) ∂ ∂ θ j h θ ( x ( i ) ) − 1 − y ( i ) 1 − h θ ( x ( i ) ) ∂ ∂ θ j h θ ( x ( i ) ) ] = − 1 m ∑ i = 1 m [ y ( i ) 1 h θ ( x ( i ) ) − ( 1 − y ( i ) ) 1 1 − h θ ( x ( i ) ) ] ∂ ∂ θ j h θ ( x ( i ) ) \begin{align*} \frac{\partial}{\partial \theta_j} L(\theta) &= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \frac{\partial}{\partial \theta_j} \log(h_{\theta}(x^{(i)})) + (1 - y^{(i)}) \frac{\partial}{\partial \theta_j} \log(1 - h_{\theta}(x^{(i)})) \right] \\ &= -\frac{1}{m} \sum_{i=1}^{m} \left[ \frac{y^{(i)}}{h_{\theta}(x^{(i)})} \frac{\partial}{\partial \theta_j} h_{\theta}(x^{(i)}) - \frac{1 - y^{(i)}}{1 - h_{\theta}(x^{(i)})} \frac{\partial}{\partial \theta_j} h_{\theta}(x^{(i)}) \right] \\ &= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \frac{1}{h_{\theta}(x^{(i)})} - (1 - y^{(i)}) \frac{1}{1 - h_{\theta}(x^{(i)})} \right] \frac{\partial}{\partial \theta_j} h_{\theta}(x^{(i)}) \end{align*} θjL(θ)=m1i=1m[y(i)θjlog(hθ(x(i)))+(1y(i))θjlog(1hθ(x(i)))]=m1i=1m[hθ(x(i))y(i)θjhθ(x(i))1hθ(x(i))1y(i)θjhθ(x(i))]=m1i=1m[y(i)hθ(x(i))1(1y(i))1hθ(x(i))1]θjhθ(x(i))

计算 h θ ( x ) h_{\theta}(x) hθ(x) 关于 θ j \theta _{j} θj的偏导数:
∂ ∂ θ j h θ ( x ) = ∂ ∂ θ j ( 1 1 + e − θ T x ) = e − θ T x ( 1 + e − θ T x ) 2 ∂ ∂ θ j ( − θ T x ) = e − θ T x ( 1 + e − θ T x ) 2 ( − x j ) = h θ ( x ) ( 1 − h θ ( x ) ) ( − x j ) \begin{align*} \frac{\partial}{\partial \theta_j} h_{\theta}(x) &= \frac{\partial}{\partial \theta_j} \left( \frac{1}{1 + e^{-\theta^T x}} \right) \\ &= \frac{e^{-\theta^T x}}{(1 + e^{-\theta^T x})^2} \frac{\partial}{\partial \theta_j} (-\theta^T x) \\ &= \frac{e^{-\theta^T x}}{(1 + e^{-\theta^T x})^2} (-x_j) \\ &= h_{\theta}(x) (1 - h_{\theta}(x)) (-x_j) \\ \end{align*} θjhθ(x)=θj(1+eθTx1)=(1+eθTx)2eθTxθj(θTx)=(1+eθTx)2eθTx(xj)=hθ(x)(1hθ(x))(xj)
将 ( ∂ ∂ θ j h θ ( x ) \frac{\partial}{\partial \theta_j} h_{\theta}(x) θjhθ(x) ) 的结果代入梯度公式中:
∂ ∂ θ j L ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) 1 h θ ( x ( i ) ) − ( 1 − y ( i ) ) 1 1 − h θ ( x ( i ) ) ] h θ ( x ) ( 1 − h θ ( x ) ) ( − x j ) = − 1 m ∑ i = 1 m [ y ( i ) ( 1 − h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) h θ ( x ( i ) ) ] ( − x j ( i ) ) = − 1 m ∑ i = 1 m [ y ( i ) − h θ ( x ( i ) ) ] ( − x j ( i ) ) \begin{align*} \frac{\partial}{\partial \theta_j} L(\theta) &= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \frac{1}{h_{\theta}(x^{(i)})} - (1 - y^{(i)}) \frac{1}{1 - h_{\theta}(x^{(i)})} \right]h_{\theta}(x) (1 - h_{\theta}(x)) (-x_j) \\ &= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} (1 - h_{\theta}(x^{(i)})) - (1 - y^{(i)}) h_{\theta}(x^{(i)}) \right] (-x_j^{(i)}) \\ &= -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} - h_{\theta}(x^{(i)}) \right] (-x_j^{(i)}) \end{align*} θjL(θ)=m1i=1m[y(i)hθ(x(i))1(1y(i))1hθ(x(i))1]hθ(x)(1hθ(x))(xj)=m1i=1m[y(i)(1hθ(x(i)))(1y(i))hθ(x(i))](xj(i))=m1i=1m[y(i)hθ(x(i))](xj(i))
因此,逻辑回归损失函数 L ( θ ) L(\theta) L(θ) 关于参数 θ j \theta_j θj的梯度是:
∂ ∂ θ j L ( θ ) = − 1 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i ) \frac{\partial}{\partial \theta_j} L(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ h_{\theta}(x^{(i)}) - y^{(i)} \right] x_j^{(i)} θjL(θ)=m1i=1m[hθ(x(i))y(i)]xj(i)

​ 这个梯度表达式告诉我们,对于每个参数 θ j \theta_j θj,我们需要计算模型预测 h θ ( x ( i ) ) h_{\theta}(x^{(i)}) hθ(x(i)) 和实际标签 y ( i ) y^{(i)} y(i) 之间的差异,然后将这个差异乘以特征 x j ( i ) x_j^{(i)} xj(i),最后对所有训练样本求和并除以样本数量 m m m。这个梯度用于在优化过程中更新参数 θ j \theta_j θj,以最小化损失函数。

http://www.lryc.cn/news/386618.html

相关文章:

  • Python 使用函数输出一个整数的逆序数
  • 【Linux】Wmware Esxi磁盘扩容
  • 树莓派4B_OpenCv学习笔记15:OpenCv定位物体实时坐标
  • MySQL之如何定位慢查询
  • Open3D 删除点云中重复的点
  • 填报志愿选专业是兴趣重要还是前景重要?
  • python开发基础——day9 函数基础与函数参数
  • STM32——使用TIM输出比较产生PWM波形控制舵机转角
  • 第十五章 集合(set)(Python)
  • 面试-javaIO机制
  • 在.NET Core中,config和ConfigureServices的区别和作用
  • App Inventor 2 如何实现多个定时功能?
  • 技术驱动的音乐变革:AI带来的产业重塑
  • 重生之我要学后端0--HTTP协议和RESTful APIs
  • 深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络
  • AI Infra简单记录
  • 三英战吕布 | 第5集 | 温酒斩华雄 | 竖子不足与谋 | 三国演义 | 逐鹿群雄
  • 【C语言】自定义类型:结构体
  • 算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全
  • [每周一更]-(第103期):GIT初始化子模块
  • 单例模式---线程安全实现
  • Agent技术在现代软件开发与应用中的探索
  • c语言中extern定义和引用其他文件的变量,(sublime text)单独一个文件编译不会成功
  • 时序数据中的孤立野点、异常值识别及处理方法
  • JetBrains PyCharm 2024 mac/win版编程艺术,智慧新篇
  • MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式
  • 《逆向投资 邓普顿的长赢投资法》
  • C++中main函数的参数、返回值分别什么意思?main函数返回值跟普通函数返回值一样吗?
  • Java程序员学习Go开发Higress的WASM插件
  • Python入门-基本数据类型-数字类型