logistic回归的梯度计算

这篇博客详细解析了logistic回归模型中损失函数的梯度计算过程,通过sigmoid激活函数和损失函数的定义,逐步推导出梯度的表达式,揭示了误差项与输入项的关系。

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

在logistic回归中,假设我们的训练集由m个已标记样本组成:\[\{ ({x^{(1)}},{y^{(1)}}),...,({x^{(m)}},{y^{(m)}})\} \]且激活函数为sigmoid函数:\[{h_\theta }(x) = \frac{1}{ {1 + {e^{ - {\theta ^T}x}}}}\]损失函数为:\[J(\theta ) =  - \frac{1}{m}\sum\limits_{i = 1}^m {[{y^{(i)}} \cdot log{h_\theta }({x^{(i)}}) + (1 - {y^{(i)}}) \cdot log(1 - {h_\theta }({x^{(i)}}))]} \]则损失函数对参数的梯度的第j个分量为:\[\begin{gathered}
  {\nabla _{ {\theta _{\text{j}}}}}J(\theta ) &=&  - \frac{1}{m}\sum\limits_{i = 1}^m {[{y^{(i)}} \cdot \frac{1}{ { {h_\theta }({x^{(i)}})}} \cdot ( - {h_\theta }^2({x^{(i)}})) \cdot {e^{ - {\theta ^T}{x^{(i)}}}} \cdot ( - {x^{(i)}})}  \\
 &&  + (1 - {y^{(i)}}) \cdot \frac{1}{ {1 - {h_\theta }({x^{(i)}})}} \cdot {h_\theta }^2({x^{(i)}}) \cdot {e^{ - {\theta ^T}{x^{(i)}}}} \cdot ( - {x^{(i)}})] \\
   &= & - \frac{1}{m}\sum\limits_{i = 1}^m {[{y^{(i)}}{h_\theta }({x^{(i)}}) \cdo
### Logistic 回归中的梯度下降法 #### 梯度下降算法概述 梯度下降是一种用于最小化损失函数的方法,在逻辑回归中用来优化模型参数。对于线性分类器如逻辑回归和支持向量机,随机梯度下降(SGD)是一个简单而有效的方式[^2]。 #### 随机梯度下降更新规则 SGD每次迭代只选取单个观测值(输入 \( x \) 和标签 \( y \)),计算该样本对应的代价函数相对于模型参数 \( \theta \) 的梯度,并按照负梯度方向调整这些参数,这一步骤通过一个小的学习率 \( \alpha \) 来缩放: \[ \theta := \theta - \alpha \nabla_\theta J(\theta; (x^{(i)},y^{(i)})) \] 其中 \( J(\theta; (x^{(i)},y^{(i)})) \) 表示针对第 i 个训练样例的成本函数。 #### 实现逻辑回归梯度下降过程 下面展示了一个简单的Python实现例子来说明如何利用批量梯度下降来进行逻辑回归学习: ```python import numpy as np def sigmoid(z): """Sigmoid activation function""" return 1 / (1 + np.exp(-z)) def compute_cost(X, y, theta): m = len(y) h = sigmoid(np.dot(X, theta)) cost = (-1/m) * (np.dot(y.T, np.log(h)) + np.dot((1-y).T, np.log(1-h))) return cost.flatten() def gradient_descent(X, y, theta, alpha, num_iters): m = len(y) costs = [] for _ in range(num_iters): h = sigmoid(np.dot(X, theta)) # Update rule based on computed gradients theta -= (alpha/m) * np.dot(X.T, (h - y)) # Record current iteration's cost value costs.append(compute_cost(X, y, theta)) return theta, costs ``` 此代码片段定义了sigmoid激活函数、成本函数以及执行批处理梯度下降的核心循环。注意这里采用的是整个数据集上的平均梯度而不是单一实例,因此称为“批处理”。 为了加速收敛速度并提高性能,特征标准化是非常重要的预处理步骤之一[^4]。这样做可以确保不同尺度下的属性不会对最终结果造成不公平的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值