逻辑回归(Logistic Regression)详细解释与公式推导
逻辑回归是二分类任务的经典统计学习模型,核心思想是:用对数几率(Logit) 将线性回归的连续输出映射到 [0,1] 区间,从而表示样本属于某一类别的概率。它虽名为“回归”,实则是分类模型,广泛应用于信用评估、医疗诊断、垃圾邮件识别等场景。
一、模型核心思想
1. 线性回归的局限
线性回归的输出是连续值(y=wTx+by = \boldsymbol{w}^T\boldsymbol{x} + by=wTx+b),但二分类任务需要输出“属于正类的概率”(范围 [0,1])。直接用线性回归存在两个问题:
- 输出可能超出 [0,1],不符合概率定义;
- 线性回归假设输出与特征呈线性关系,但分类任务中“概率与特征的关系”往往是非线性的。
2. 引入“Sigmoid函数”(激活函数)
为解决上述问题,逻辑回归在线性回归的基础上嵌套了Sigmoid函数,将线性输出映射到 [0,1] 区间,得到“样本属于正类的概率”。
Sigmoid函数(也叫Logistic函数)的定义:
σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1
其中 zzz 是线性回归的输出(即 z=wTx+bz = \boldsymbol{w}^T\boldsymbol{x} + bz=wTx+b),w\boldsymbol{w}w 是权重向量,x\boldsymbol{x}x 是输入特征向量,bbb 是偏置项。
3. Sigmoid函数的关键性质
- 值域:σ(z)∈(0,1)\sigma(z) \in (0,1)σ(z)∈(0,1),完美契合概率的取值范围;
- 单调性:当 z→+∞z \to +\inftyz→+∞ 时,σ(z)→1\sigma(z) \to 1σ(z)→1;当 z→−∞z \to -\inftyz→−∞ 时,σ(z)→0\sigma(z) \to 0σ(z)→0;当 z=0z=0z=0 时,σ(z)=0.5\sigma(z)=0.5σ(z)=0.5;
- 导数性质(后续推导关键):σ′(z)=σ(z)(1−σ(z))\sigma'(z) = \sigma(z)(1 - \sigma(z))σ′(z)=σ(z)(1−σ(z)),推导如下:
σ′(z)=ddz(11+e−z)=e−z(1+e−z)2=11+e−z⋅(1−11+e−z)=σ(z)(1−σ(z))\sigma'(z) = \frac{d}{dz}\left(\frac{1}{1 + e^{-z}}\right) = \frac{e^{-z}}{(1 + e^{-z})^2} = \frac{1}{1 + e^{-z}} \cdot \left(1 - \frac{1}{1 + e^{-z}}\right) = \sigma(z)(1 - \sigma(z)) σ′(z)=dzd(1+e−z1)=(1+e−z)2e−z=1+e−z1⋅(1−1+e−z1)=σ(z)(1−σ(z))
4. 逻辑回归的最终形式
结合线性回归和Sigmoid函数,逻辑回归对“样本 x\boldsymbol{x}x 属于正类(记为 y=1y=1y=1)”的概率预测为:
P(y=1∣x;w,b)=σ(wTx+b)=11+e−(wTx+b)(1)P(y=1 \mid \boldsymbol{x}; \boldsymbol{w}, b) = \sigma(\boldsymbol{w}^T\boldsymbol{x} + b) = \frac{1}{1 + e^{-(\boldsymbol{w}^T\boldsymbol{x} + b)}} \tag{1} P(y=1∣x;w,b)=σ(wTx+b)=1+e−(wTx+b)1(1)
对应的,“样本属于负类(y=0y=0y=0)”的概率为:
P(y=0∣x;w,b)=1−P(y=1∣x;w,b)=e−(wTx+b)1+e−(wTx+b)(2)P(y=0 \mid \boldsymbol{x}; \boldsymbol{w}, b) = 1 - P(y=1 \mid \boldsymbol{x}; \boldsymbol{w}, b) = \frac{e^{-(\boldsymbol{w}^T\boldsymbol{x} + b)}}{1 + e^{-(\boldsymbol{w}^T\boldsymbol{x} + b)}} \tag{2} P(y=0∣x;w,b)=1−P(y=1∣x;w,b)=1+e−(wTx+b)e−(wTx+b)(2)
二、模型参数估计(极大似然估计MLE)
逻辑回归的核心是求解最优参数 w\boldsymbol{w}w 和 bbb,使得模型对训练数据的预测概率尽可能接近真实标签。这里采用极大似然估计(Maximum Likelihood Estimation, MLE),核心思想是:“让观测到的训练数据出现的概率最大”。
1. 似然函数(Likelihood Function)
假设训练集有 NNN 个独立同分布的样本 {(x1,y1),(x2,y2),...,(xN,yN)}\{(\boldsymbol{x}_1, y_1), (\boldsymbol{x}_2, y_2), ..., (\boldsymbol{x}_N, y_N)\}{(x1,y1),(x2,y2),...,(xN,yN)},其中 yi∈{0,1}y_i \in \{0,1\}yi∈{0,1} 是第 iii 个样本的真实标签。
将式(1)和式(2)合并为统一形式(利用 yiy_iyi 只能取0或1的性质):
P(yi∣xi;w,b)=[P(y=1∣xi;w,b)]yi⋅[1−P(y=1∣xi;w,b)]1−yiP(y_i \mid \boldsymbol{x}_i; \boldsymbol{w}, b) = \left[P(y=1 \mid \boldsymbol{x}_i; \boldsymbol{w}, b)\right]^{y_i} \cdot \left[1 - P(y=1 \mid \boldsymbol{x}_i; \boldsymbol{w}, b)\right]^{1 - y_i} P(yi∣xi;w,b)=[P(y=1∣xi;w,b)]yi⋅[1−P(y=1∣xi;w,b)]1−yi
- 当 yi=1y_i=1yi=1 时,第二项为1,表达式退化为 P(y=1∣xi)P(y=1 \mid \boldsymbol{x}_i)P(y=1∣xi);
- 当 yi=0y_i=0yi=0 时,第一项为1,表达式退化为 P(y=0∣xi)P(y=0 \mid \boldsymbol{x}_i)P(y=0∣xi)。
由于样本独立,整个训练集的似然函数(所有样本同时出现的概率)是单个样本似然的乘积:
L(w,b)=∏i=1NP(yi∣xi;w,b)=∏i=1N[σ(wTxi+b)]yi⋅[1−σ(wTxi+b)]1−yi\mathcal{L}(\boldsymbol{w}, b) = \prod_{i=1}^N P(y_i \mid \boldsymbol{x}_i; \boldsymbol{w}, b) = \prod_{i=1}^N \left[\sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b)\right]^{y_i} \cdot \left[1 - \sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b)\right]^{1 - y_i} L(w,b)=i=1∏NP(yi∣xi;w,b)=i=1∏N[σ(wTxi+b)]yi⋅[1−σ(wTxi+b)]1−yi
2. 对数似然函数(Log-Likelihood)
乘积形式的似然函数计算复杂,且易出现数值下溢。通过取对数将乘积转化为求和,得到对数似然函数(对数是单调递增函数,最大化似然等价于最大化对数似然):
ℓ(w,b)=logL(w,b)=∑i=1N[yilogσ(wTxi+b)+(1−yi)log(1−σ(wTxi+b))]\ell(\boldsymbol{w}, b) = \log \mathcal{L}(\boldsymbol{w}, b) = \sum_{i=1}^N \left[ y_i \log \sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b) + (1 - y_i) \log \left(1 - \sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b)\right) \right] ℓ(w,b)=logL(w,b)=i=1∑N[yilogσ(wTxi+b)+(1−yi)log(1−σ(wTxi+b))]
3. 损失函数(负对数似然)
机器学习中通常最小化“损失函数”,因此将对数似然函数取负,得到逻辑回归的损失函数(也叫交叉熵损失,Cross-Entropy Loss):
J(w,b)=−1Nℓ(w,b)=−1N∑i=1N[yilogpi+(1−yi)log(1−pi)](3)\mathcal{J}(\boldsymbol{w}, b) = -\frac{1}{N} \ell(\boldsymbol{w}, b) = -\frac{1}{N} \sum_{i=1}^N \left[ y_i \log p_i + (1 - y_i) \log (1 - p_i) \right] \tag{3} J(w,b)=−N1ℓ(w,b)=−N1i=1∑N[yilogpi+(1−yi)log(1−pi)](3)
其中 pi=P(yi=1∣xi;w,b)=σ(wTxi+b)p_i = P(y_i=1 \mid \boldsymbol{x}_i; \boldsymbol{w}, b) = \sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b)pi=P(yi=1∣xi;w,b)=σ(wTxi+b),1N\frac{1}{N}N1 是对样本数归一化,避免样本量影响损失大小。
损失函数的直观意义
- 若 yi=1y_i=1yi=1 且模型预测 pi≈1p_i \approx 1pi≈1:logpi≈0\log p_i \approx 0logpi≈0,损失趋近于0(预测准确);
- 若 yi=1y_i=1yi=1 但模型预测 pi≈0p_i \approx 0pi≈0:logpi≈−∞\log p_i \approx -\inftylogpi≈−∞,损失趋近于 +∞+\infty+∞(预测错误,惩罚极大);
- 同理,yi=0y_i=0yi=0 时,pip_ipi 越接近0,损失越小。
三、参数求解(梯度下降法)
损失函数 J(w,b)\mathcal{J}(\boldsymbol{w}, b)J(w,b) 是凸函数(无局部最优解,只有全局最优解),可通过梯度下降法(Gradient Descent)最小化损失,求解最优参数 w∗\boldsymbol{w}^*w∗ 和 b∗b^*b∗。
1. 梯度计算(关键步骤)
梯度下降的核心是计算损失函数对每个参数的偏导数(梯度),再沿梯度反方向更新参数。为简化推导,先将 w\boldsymbol{w}w 和 bbb 合并为扩展参数向量 w~=[w;b]\tilde{\boldsymbol{w}} = [\boldsymbol{w}; b]w~=[w;b],对应的输入特征扩展为 x~i=[xi;1]\tilde{\boldsymbol{x}}_i = [\boldsymbol{x}_i; 1]x~i=[xi;1](即给每个样本特征加一个常数1,将偏置 bbb 融入权重 w\boldsymbol{w}w 中),此时线性输出可简化为 zi=w~Tx~iz_i = \tilde{\boldsymbol{w}}^T \tilde{\boldsymbol{x}}_izi=w~Tx~i,pi=σ(zi)p_i = \sigma(z_i)pi=σ(zi)。
(1)损失函数对单个样本的偏导数
先计算单个样本的损失(式(3)去掉 1N\frac{1}{N}N1 和求和)对 w~\tilde{\boldsymbol{w}}w~ 的偏导数:
∂∂w~[−yilogpi−(1−yi)log(1−pi)]\frac{\partial}{\partial \tilde{\boldsymbol{w}}} \left[ -y_i \log p_i - (1 - y_i) \log (1 - p_i) \right] ∂w~∂[−yilogpi−(1−yi)log(1−pi)]
代入 pi=σ(zi)=11+e−zip_i = \sigma(z_i) = \frac{1}{1 + e^{-z_i}}pi=σ(zi)=1+e−zi1,并利用Sigmoid的导数性质 σ′(zi)=pi(1−pi)\sigma'(z_i) = p_i(1 - p_i)σ′(zi)=pi(1−pi),分步推导:
- 对 logpi\log p_ilogpi 求偏导:∂logpi∂w~=1pi⋅∂pi∂w~=1pi⋅pi(1−pi)⋅∂zi∂w~=(1−pi)x~i\frac{\partial \log p_i}{\partial \tilde{\boldsymbol{w}}} = \frac{1}{p_i} \cdot \frac{\partial p_i}{\partial \tilde{\boldsymbol{w}}} = \frac{1}{p_i} \cdot p_i(1 - p_i) \cdot \frac{\partial z_i}{\partial \tilde{\boldsymbol{w}}} = (1 - p_i) \tilde{\boldsymbol{x}}_i∂w~∂logpi=pi1⋅∂w~∂pi=pi1⋅pi(1−pi)⋅∂w~∂zi=(1−pi)x~i;
- 对 log(1−pi)\log (1 - p_i)log(1−pi) 求偏导:∂log(1−pi)∂w~=−11−pi⋅∂pi∂w~=−11−pi⋅pi(1−pi)⋅x~i=−pix~i\frac{\partial \log (1 - p_i)}{\partial \tilde{\boldsymbol{w}}} = \frac{-1}{1 - p_i} \cdot \frac{\partial p_i}{\partial \tilde{\boldsymbol{w}}} = \frac{-1}{1 - p_i} \cdot p_i(1 - p_i) \cdot \tilde{\boldsymbol{x}}_i = -p_i \tilde{\boldsymbol{x}}_i∂w~∂log(1−pi)=1−pi−1⋅∂w~∂pi=1−pi−1⋅pi(1−pi)⋅x~i=−pix~i;
- 合并代入损失函数的偏导:
∂∂w~[−yilogpi−(1−yi)log(1−pi)]=−yi(1−pi)x~i+(1−yi)pix~i=(pi−yi)x~i\frac{\partial}{\partial \tilde{\boldsymbol{w}}} \left[ -y_i \log p_i - (1 - y_i) \log (1 - p_i) \right] = -y_i(1 - p_i)\tilde{\boldsymbol{x}}_i + (1 - y_i)p_i \tilde{\boldsymbol{x}}_i = (p_i - y_i) \tilde{\boldsymbol{x}}_i ∂w~∂[−yilogpi−(1−yi)log(1−pi)]=−yi(1−pi)x~i+(1−yi)pix~i=(pi−yi)x~i
(2)整个训练集的梯度(批量梯度下降)
对所有样本的损失求平均(即式(3)的梯度):
∇w~J(w~)=1N∑i=1N(pi−yi)x~i(4)\nabla_{\tilde{\boldsymbol{w}}} \mathcal{J}(\tilde{\boldsymbol{w}}) = \frac{1}{N} \sum_{i=1}^N (p_i - y_i) \tilde{\boldsymbol{x}}_i \tag{4} ∇w~J(w~)=N1i=1∑N(pi−yi)x~i(4)
若不使用扩展参数(分开 w\boldsymbol{w}w 和 bbb),梯度可拆分为:
- 对权重 w\boldsymbol{w}w 的梯度:∇wJ(w,b)=1N∑i=1N(pi−yi)xi\nabla_{\boldsymbol{w}} \mathcal{J}(\boldsymbol{w}, b) = \frac{1}{N} \sum_{i=1}^N (p_i - y_i) \boldsymbol{x}_i∇wJ(w,b)=N1∑i=1N(pi−yi)xi;
- 对偏置 bbb 的梯度:∇bJ(w,b)=1N∑i=1N(pi−yi)\nabla_b \mathcal{J}(\boldsymbol{w}, b) = \frac{1}{N} \sum_{i=1}^N (p_i - y_i)∇bJ(w,b)=N1∑i=1N(pi−yi)(因为 x~i\tilde{\boldsymbol{x}}_ix~i 的最后一维是1,求和后对应偏置的梯度)。
2. 参数更新规则
梯度下降的参数更新公式为:沿梯度反方向移动,步长由学习率 η\etaη(η>0\eta > 0η>0)控制:
w~(t+1)=w~(t)−η⋅∇w~J(w~(t))\tilde{\boldsymbol{w}}^{(t+1)} = \tilde{\boldsymbol{w}}^{(t)} - \eta \cdot \nabla_{\tilde{\boldsymbol{w}}} \mathcal{J}(\tilde{\boldsymbol{w}}^{(t)}) w~(t+1)=w~(t)−η⋅∇w~J(w~(t))
代入式(4),得到具体更新:
w~(t+1)=w~(t)−η⋅1N∑i=1N(pi(t)−yi)x~i\tilde{\boldsymbol{w}}^{(t+1)} = \tilde{\boldsymbol{w}}^{(t)} - \eta \cdot \frac{1}{N} \sum_{i=1}^N (p_i^{(t)} - y_i) \tilde{\boldsymbol{x}}_i w~(t+1)=w~(t)−η⋅N1i=1∑N(pi(t)−yi)x~i
其中 pi(t)=σ(w~(t)Tx~i)p_i^{(t)} = \sigma(\tilde{\boldsymbol{w}}^{(t)T} \tilde{\boldsymbol{x}}_i)pi(t)=σ(w~(t)Tx~i) 是第 ttt 轮迭代的预测概率。
常见梯度下降变体
- 批量梯度下降(BGD):每次用所有样本计算梯度(式(4)),稳定但速度慢;
- 随机梯度下降(SGD):每次用单个样本计算梯度(∇J≈(pi−yi)x~i\nabla \mathcal{J} \approx (p_i - y_i) \tilde{\boldsymbol{x}}_i∇J≈(pi−yi)x~i),速度快但波动大;
- 小批量梯度下降(Mini-batch GD):每次用 kkk 个样本(1<k<N1 < k < N1<k<N)计算梯度,兼顾速度和稳定性(实际应用中最常用)。
3. 迭代终止条件
当满足以下任一条件时,停止迭代:
- 损失函数 J(w,b)\mathcal{J}(\boldsymbol{w}, b)J(w,b) 的下降量小于预设阈值(如 10−610^{-6}10−6);
- 梯度的L2范数小于阈值(梯度趋近于0,接近最优解);
- 迭代次数达到预设最大值。
四、模型预测规则
训练完成后,得到最优参数 w∗\boldsymbol{w}^*w∗ 和 b∗b^*b∗,对新样本 xnew\boldsymbol{x}_{\text{new}}xnew 的预测步骤:
- 计算线性输出:znew=w∗Txnew+b∗z_{\text{new}} = \boldsymbol{w}^{*T} \boldsymbol{x}_{\text{new}} + b^*znew=w∗Txnew+b∗;
- 计算正类概率:pnew=σ(znew)=11+e−znewp_{\text{new}} = \sigma(z_{\text{new}}) = \frac{1}{1 + e^{-z_{\text{new}}}}pnew=σ(znew)=1+e−znew1;
- 分类决策(默认阈值0.5):
- 若 pnew≥0.5p_{\text{new}} \geq 0.5pnew≥0.5,预测为正类(ypred=1y_{\text{pred}} = 1ypred=1);
- 若 pnew<0.5p_{\text{new}} < 0.5pnew<0.5,预测为负类(ypred=0y_{\text{pred}} = 0ypred=0)。
阈值可根据业务需求调整(如医疗诊断中,为降低漏诊率,可将阈值调小至0.3)。
五、关键补充:对数几率回归的本质
逻辑回归的另一种解读是“对数几率回归”,即:正类概率与负类概率的比值(几率)的对数,是特征的线性函数。
几率(Odds)的定义:正类概率与负类概率的比:Odds(y=1∣x)=P(y=1∣x)1−P(y=1∣x)\text{Odds}(y=1 \mid \boldsymbol{x}) = \frac{P(y=1 \mid \boldsymbol{x})}{1 - P(y=1 \mid \boldsymbol{x})}Odds(y=1∣x)=1−P(y=1∣x)P(y=1∣x)。
对几率取对数(对数几率,Logit):
log(P(y=1∣x)1−P(y=1∣x))=wTx+b(5)\log \left( \frac{P(y=1 \mid \boldsymbol{x})}{1 - P(y=1 \mid \boldsymbol{x})} \right) = \boldsymbol{w}^T \boldsymbol{x} + b \tag{5} log(1−P(y=1∣x)P(y=1∣x))=wTx+b(5)
推导验证:将 P=σ(wTx+b)P = \sigma(\boldsymbol{w}^T\boldsymbol{x} + b)P=σ(wTx+b) 代入左边:
log(P1−P)=log(11+e−ze−z1+e−z)=log(ez)=z=wTx+b\log \left( \frac{P}{1 - P} \right) = \log \left( \frac{\frac{1}{1 + e^{-z}}}{\frac{e^{-z}}{1 + e^{-z}}} \right) = \log(e^z) = z = \boldsymbol{w}^T\boldsymbol{x} + b log(1−PP)=log(1+e−ze−z1+e−z1)=log(ez)=z=wTx+b
与式(5)一致。这说明:逻辑回归本质是通过线性模型拟合“对数几率”,而非直接拟合概率——这也是它被称为“对数几率回归”的原因。
六、总结
- 模型形式:逻辑回归 = 线性回归 + Sigmoid函数,核心是将线性输出映射为概率;
- 损失函数:交叉熵损失(负对数似然),确保预测概率与真实标签一致;
- 参数求解:通过梯度下降法最小化损失,利用Sigmoid的导数性质简化梯度计算;
- 核心优势:模型简单、可解释性强(权重 w\boldsymbol{w}w 可反映特征对分类的影响程度)、训练速度快、泛化能力稳定;
- 适用场景:二分类任务,尤其适合需要概率输出和特征解释的场景。
逻辑回归的扩展形式(如Softmax回归)可用于多分类任务,但其核心思想(线性拟合+概率映射)保持一致。
