逻辑回归损失函数的梯度计算表达式
时间: 2024-11-13 17:15:18 浏览: 32
逻辑回归通常采用的是对数似然损失函数(Logistic Loss),也称为交叉熵损失(Cross-Entropy Loss)。其数学表达式为:
\[ L(y, \hat{y}) = -\frac{1}{m} \sum_{i=1}^{m} [ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) ] \]
其中 \( y_i \) 是实际标签(0 或 1),\( \hat{y}_i \) 是模型预测的概率(介于 0 到 1 之间)。为了计算梯度,我们对每个样本求导,得到单个样本的梯度为:
\[ \frac{\partial L}{\partial w_j} = -\frac{1}{m} \left[ x_j( y - \hat{y}) \right] \]
\[ \frac{\partial L}{\partial b} = -\frac{1}{m} \left[ \sum_{i=1}^m ( y_i - \hat{y}_i ) \right] \]
这里的 \( w_j \) 是权重向量中的第 \( j \) 个元素,\( b \) 是偏置项。通过反向传播算法,我们可以从这个基本的单样本梯度开始,更新模型的所有参数。
相关问题
逻辑回归的损失函数求导
### 逻辑回归损失函数求导过程解释
对于逻辑回归而言,其核心在于通过最大化似然估计来找到最优参数 \(\theta\)。为了实现这一目标,在实践中通常会最小化负对数似然函数,即所谓的对数损失函数或交叉熵损失函数[^3]。
#### 对数损失函数定义
给定数据集 \(D=\{(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})\}\),其中\(x^{(i)}\) 表示第 \(i\) 个输入特征向量, \(y^{(i)}∈{0,1}\) 是对应的标签,则逻辑回归中的对数损失函数可以表示为:
\[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)}))] \]
这里,
- \(h_\theta(x)\) 定义为预测概率:\[h_\theta(x)=g(z)=\frac{1}{1+\exp(-z)}\], 其中 \(z=\theta^Tx\)
上述表达式的目的是衡量模型输出的概率分布与真实标签之间的差异程度;当实际类别为正类时(\(y=1\)),希望模型给出较高的正值响应;反之亦然。因此,此公式能够有效地惩罚错误分类的情况[^4]。
#### 求解梯度
为了应用梯度下降方法更新权重参数 \(\theta_j\) ,需要计算损失函数关于各个参数的偏导数:
\[\begin{aligned}
\nabla_{\theta_j}J(\theta)&=\nabla_{\theta_j}-\frac{1}{m}\left [\sum_i y^{(i)}\log h_\theta(x^{(i)}) + (1-y^{(i)})\log(1-h_\theta(x^{(i)}))\right ]\\
&=-\frac{1}{m}\sum_i[(y^{(i)}-\hat{y}^{(i)})x_j^{(i)}]\\
\end{aligned}\]
具体来说,对于每一个训练样本 \(i\) 和 特征维度 \(j\) :
- 如果 \(y^{(i)}=1\) , 则 \((y^{(i)}-\hat{y}^{(i)})=(1-g(\theta^T x^{(i)}))<0\) 。此时减去一个小于零的数量意味着增加相应的权值以提高正例的可能性;
- 反之,如果 \(y^{(i)}=0\) , 那么 \((y^{(i)}-\hat{y}^{(i)})=(-g(\theta^T x^{(i)}))>0\) . 减掉一个大于零的部分将会降低误报率。
综上所述,通过对损失函数进行适当变换并利用链式法则完成对其各分量的一阶微分运算后可得到用于指导迭代调整方向的信息——梯度向量。这使得可以通过不断沿反向传播路径累积误差信号的方式逐步逼近全局最优点[^2]。
```python
def compute_gradient(X, y, theta):
m = len(y)
predictions = sigmoid(np.dot(X, theta))
error = predictions - y
grad = np.dot(X.T, error)/m
return grad
def sigmoid(z):
return 1 / (1 + np.exp(-z))
```
阅读全文