逻辑回归损失函数推导及求导

本文介绍了逻辑回归的优点和缺点,如简单实现、快速分类,但也指出其可能的欠拟合和仅适用于线性可分的二分类问题。重点讲解了逻辑回归的损失函数,通过极大似然估计法得出损失函数表达式,并对其求导得到梯度。实际应用中,通常使用随机梯度下降或拟牛顿法进行参数优化。

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

优点
  • 实现简单;
  • 分类时计算量非常小,速度很快,存储资源低;
缺点
  • 容易欠拟合,一般准确度不太高
  • 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分
损失函数

逻辑回归的公式为:
h ( x ) = 1 1 + e − ( w T x + b ) h(x) = \frac{1} {1 + e^{-(w^Tx+b)}} h(x)=1+e(wTx+b)1

假设有N个样本,样本的标签只有0和1两类,可以用极大似然估计法估计模型参数,从而得到逻辑回归模型

设yi=1的概率为pi,yi=0的概率为1 - pi,那么观测的概率为:
p ( y i ) = p i y i ∗ ( 1 − p i ) 1 − y i p(y_i) = p_i^{y_i} * (1-p_i)^{1-y_i} p(yi)=piyi(1pi)1yi
可以看到这个公式很巧妙的将0和1两种情况都包括进去,数学真是美妙的东西

概率由逻辑回归的公式求解,那么带进去得到极大似然函数:
∏ i N h ( x i ) y i ∗ ( 1 − h ( x i ) ) 1 − y i \prod_i^N h(x_i)^{y_i} * (1-h(x_i))^{1-y_i} iNh(xi)

<think>好的,我现在需要帮助用户理解逻辑回归损失函数,也就是对数似然函数的求导过程。首先,我得回顾一下逻辑回归的基本原理。逻辑回归虽然名字里有“回归”,但它实际上是一个分类模型,通常用于二分类问题。它的核心是使用sigmoid函数将线性组合映射到0到1之间,表示概率。 用户的问题是要求对数似然函数的导数,这通常是用来进行参数更新的,比如在梯度下降法中。对数似然函数的推导过程涉及到一些微积分,可能需要分步骤讲解。首先,我需要确认用户是否了解逻辑回归的假设和sigmoid函数的形式,因为这是推导的基础。 接下来,我应该回忆一下逻辑回归损失函数,也就是对数似然损失函数。对于二分类问题,假设真实标签是y∈{0,1},预测的概率是hθ(x)=σ(θ^T x),其中σ是sigmoid函数。对数似然函数通常写作L(θ)=Σ [y_i log(hθ(x_i)) + (1-y_i) log(1-hθ(x_i))],然后取负号作为损失函数,即J(θ)=-L(θ)。所以求导的时候实际上是针对J(θ)求导,然后更新参数θ。 现在需要对这个损失函数J(θ)关于θ_j求导。我需要分步骤来推导。首先,写出单个样本的损失项:对于第i个样本,损失是 -[y_i log(h_i) + (1-y_i) log(1-h_i)],其中h_i=σ(θ^T x_i)。然后,整个损失函数是所有样本的平均,即J(θ)= (1/m) Σ 损失项。不过有时候也会省略1/m,因为缩放不会影响梯度的方向,只是影响步长。 接下来,对单个样本的损失关于θ_j求导。这里需要应用链式法则。首先,h_i = σ(z_i),其中z_i = θ^T x_i。sigmoid函数的导数是σ'(z)=σ(z)(1-σ(z))。因此,dh_i/dθ_j = h_i(1-h_i) x_ij,这里的x_ij是第i个样本的第j个特征值。 然后,单个样本的损失对θ_j的导数是:- [y_i / h_i * dh_i/dθ_j - (1-y_i)/(1-h_i) * dh_i/dθ_j ]。合并项之后,可以得到 - [ y_i(1-h_i) x_ij - (1-y_i)h_i x_ij ]。进一步简化,得到 (h_i - y_i) x_ij。因为当y_i=1时,第二项消失,剩下h_i -1乘以x_ij,而当y_i=0时,第一项消失,得到h_i x_ij,但符号可能需要注意。这里可能需要仔细检查推导过程是否正确。 将整个损失函数的导数求平均后,得到梯度向量为 (1/m) Σ (h_i - y_i) x_i,其中x_i是第i个样本的特征向量。这个结果看起来简洁,但推导过程中需要确保每一步都正确,尤其是符号的处理。 用户可能需要详细的步骤解释,而不仅仅是最终结果。因此,我应该将整个过程分解开来,逐步说明,确保每个中间步骤都清晰。例如,先写出sigmoid函数及其导数,再处理单个样本的损失函数导数,最后扩展到所有样本的平均梯度。 还需要注意可能的误区,比如损失函数的选择,对数似然和交叉熵的关系,以及为什么使用梯度下降法来优化。同时,可能需要解释为什么导数结果如此简洁,以及它的实际意义,比如梯度反映了预测误差与特征值的乘积,这在参数更新中的作用。 此外,用户可能对为什么使用对数似然函数而不是其他损失函数感兴趣,比如平方误差。这里可以简要提到,平方误差在逻辑回归中会导致非凸的优化问题,而对数似然损失是凸的,更容易找到全局最优解。 最后,总结整个推导过程,并可能给出梯度下降更新参数的公式,即θ_j := θ_j - α * (梯度),其中α是学习率。确保用户能够理解从损失函数到梯度计算的整个流程,以及如何应用于实际参数更新中。</think>--- ### **逻辑回归损失函数(对数似然函数)求导详解** 逻辑回归损失函数(对数似然函数)的推导是理解模型参数优化的关键步骤。以下分步解析其求导过程: --- #### **1. 基础定义** - **逻辑回归模型**: 预测函数为Sigmoid函数: $$ h_\theta(x) = \sigma(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}} $$ 其中,$\theta$ 为参数向量,$x$ 为特征向量。 - **损失函数(对数似然函数)**: 二分类问题中,负对数似然函数(交叉熵损失)为: $$ J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left[ y^{(i)} \log h_\theta(x^{(i)}) + (1 - y^{(i)}) \log (1 - h_\theta(x^{(i)})) \right] $$ 其中,$m$ 为样本数量,$y^{(i)} \in \{0,1\}$ 为标签。 --- #### **2. 单样本导数推导** 以单个样本 $(x^{(i)}, y^{(i)})$ 为例,损失项为: $$ L^{(i)}(\theta) = -y^{(i)} \log h_\theta(x^{(i)}) - (1 - y^{(i)}) \log (1 - h_\theta(x^{(i)})) $$ **目标**:求 $\frac{\partial L^{(i)}}{\partial \theta_j}$(对参数 $\theta_j$ 的偏导)。 --- ##### **步骤1:计算 Sigmoid 函数的导数** Sigmoid 函数的导数为: $$ \sigma'(z) = \sigma(z)(1 - \sigma(z)) $$ 令 $z = \theta^T x^{(i)}$,则: $$ \frac{\partial h_\theta(x^{(i)})}{\partial \theta_j} = h_\theta(x^{(i)}) (1 - h_\theta(x^{(i)})) \cdot x_j^{(i)} $$ --- ##### **步骤2:展开损失项对 $\theta_j$ 的偏导** 对 $L^{(i)}$ 求导: $$ \begin{aligned} \frac{\partial L^{(i)}}{\partial \theta_j} &= -\frac{y^{(i)}}{h_\theta(x^{(i)})} \cdot \frac{\partial h_\theta(x^{(i)})}{\partial \theta_j} + \frac{1 - y^{(i)}}{1 - h_\theta(x^{(i)})} \cdot \frac{\partial h_\theta(x^{(i)})}{\partial \theta_j} \\ &= \left[ -\frac{y^{(i)}}{h_\theta(x^{(i)})} + \frac{1 - y^{(i)}}{1 - h_\theta(x^{(i)})} \right] \cdot h_\theta(x^{(i)}) (1 - h_\theta(x^{(i)})) \cdot x_j^{(i)} \\ \end{aligned} $$ --- ##### **步骤3:化简表达式** 合并项后: $$ \begin{aligned} \frac{\partial L^{(i)}}{\partial \theta_j} &= \left[ -y^{(i)}(1 - h_\theta(x^{(i)})) + (1 - y^{(i)}) h_\theta(x^{(i)}) \right] \cdot x_j^{(i)} \\ &= \left( h_\theta(x^{(i)}) - y^{(i)} \right) \cdot x_j^{(i)} \end{aligned} $$ --- #### **3. 全体样本的梯度** 对所有样本求平均梯度: $$ \frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} $$ 写成向量形式: $$ \nabla_\theta J(\theta) = \frac{1}{m} X^T (h_\theta(X) - Y) $$ 其中,$X$ 为设计矩阵,$Y$ 为标签向量。 --- #### **4. 直观解释** - **梯度含义**: 梯度是 **预测误差** $h_\theta(x^{(i)}) - y^{(i)}$ 与 **特征值** $x_j^{(i)}$ 的乘积的平均值。 - **参数更新**: 梯度下降更新公式为: $$ \theta_j := \theta_j - \alpha \cdot \frac{\partial J(\theta)}{\partial \theta_j} $$ 其中 $\alpha$ 为学习率。 --- #### **5. 关键点总结** | 步骤 | 核心公式/操作 | |-----------------------|-----------------------------------------------------------------------------| | 定义Sigmoid函数 | $h_\theta(x) = \frac{1}{1 + e^{-\theta^T x}}$ | | 损失函数(单样本) | $L^{(i)}(\theta) = -y^{(i)} \log h_\theta(x^{(i)}) - (1 - y^{(i)}) \log (1 - h_\theta(x^{(i)}))$ | | Sigmoid导数 | $\frac{\partial h_\theta}{\partial \theta_j} = h_\theta (1 - h_\theta) x_j^{(i)}$ | | 单样本梯度 | $\frac{\partial L^{(i)}}{\partial \theta_j} = (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)}$ | | 全体样本梯度 | $\nabla_\theta J(\theta) = \frac{1}{m} X^T (h_\theta(X) - Y)$ | --- #### **6. 扩展思考** - **凸性保证**:对数似然函数是凸函数,梯度下降可收敛到全局最优解。 - **与线性回归对比**:线性回归的梯度为 $\frac{1}{m} X^T (X\theta - Y)$,形式类似但预测函数不同。 - **实际应用**:梯度公式直接用于代码实现(如Python中向量化计算提升效率)。 --- **注**:此推导逻辑回归理论的核心,理解后可直接推广到多分类(Softmax回归)场景。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值