文章目录
-
- 一、考试范围知识框架
- 二、正文内容
-
- [1. 逻辑函数与sigmoid函数](#1. 逻辑函数与sigmoid函数)
- [2. 逻辑回归模型](#2. 逻辑回归模型)
- [3. 梯度下降法](#3. 梯度下降法)
- [4. 梯度下降法的改进](#4. 梯度下降法的改进)
- [5. 逻辑回归与线性回归的关系](#5. 逻辑回归与线性回归的关系)
-
- 逻辑回归是"线性"的吗?
- 决策边界是线性的
- [线性回归 vs 逻辑回归](#线性回归 vs 逻辑回归)
- 逻辑回归的特点
一、考试范围知识框架
- 逻辑函数与sigmoid函数
- 逻辑回归模型
- 梯度下降法及其改进
- 逻辑回归与线性回归的关系
二、正文内容
1. 逻辑函数与sigmoid函数
关键词:逻辑函数、sigmoid函数、非线性转换、概率输出
为什么需要逻辑回归?
问题:线性回归预测的是连续值(如房价、温度),但分类问题需要预测离散的类别(如"是/否"、"猫/狗")。
直接使用线性回归的问题:线性回归的输出可以是任意实数(如 -100 或 1000),但概率必须在 [0, 1] 之间,类别标签是离散的(0 或 1)。
解决方案:使用**逻辑函数(sigmoid函数)**将线性回归的输出映射到 [0, 1] 区间,表示概率。
Sigmoid函数
逻辑函数(sigmoid函数) 的数学表达式:
σ ( x ) = e x e x + 1 = 1 1 + e − x \sigma(x) = \frac{e^x}{e^x + 1} = \frac{1}{1 + e^{-x}} σ(x)=ex+1ex=1+e−x1
函数特点 :输入可以是任意实数( − ∞ -\infty −∞ 到 + ∞ +\infty +∞);输出在 [0, 1] 之间(正好是概率的范围);S形曲线,平滑过渡;当 x = 0 x = 0 x=0 时, σ ( 0 ) = 0.5 \sigma(0) = 0.5 σ(0)=0.5;当 x → + ∞ x \to +\infty x→+∞ 时, σ ( x ) → 1 \sigma(x) \to 1 σ(x)→1;当 x → − ∞ x \to -\infty x→−∞ 时, σ ( x ) → 0 \sigma(x) \to 0 σ(x)→0。
图像特点 :中间部分( x x x 接近0)变化较快;两端部分( x x x 很大或很小)变化缓慢,接近饱和。
逻辑回归模型
逻辑回归将线性回归的输出通过sigmoid函数转换为概率:
p ( y = 1 ∣ x ) = σ ( θ T x ) = 1 1 + e − θ T x p(y=1|x) = \sigma(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}} p(y=1∣x)=σ(θTx)=1+e−θTx1
p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = 1 1 + e θ T x p(y=0|x) = 1 - p(y=1|x) = \frac{1}{1 + e^{\theta^T x}} p(y=0∣x)=1−p(y=1∣x)=1+eθTx1
其中: θ T x \theta^T x θTx 是线性组合(就像线性回归), σ ( θ T x ) \sigma(\theta^T x) σ(θTx) 将线性组合映射到 [0, 1] 区间。
例子:垃圾邮件分类
假设我们根据邮件的特征(如包含"免费"、"中奖"等关键词)判断是否为垃圾邮件:
- 特征: x = [ 1 , x 1 , x 2 ] x = [1, x_1, x_2] x=[1,x1,x2]( x 1 x_1 x1 = "免费"出现次数, x 2 x_2 x2 = "中奖"出现次数)
- 参数: θ = [ θ 0 , θ 1 , θ 2 ] \theta = [\theta_0, \theta_1, \theta_2] θ=[θ0,θ1,θ2]
- 线性组合: θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 \theta^T x = \theta_0 + \theta_1 x_1 + \theta_2 x_2 θTx=θ0+θ1x1+θ2x2
- 概率: p ( 垃圾邮件 ∣ x ) = σ ( θ T x ) p(\text{垃圾邮件}|x) = \sigma(\theta^T x) p(垃圾邮件∣x)=σ(θTx)
如果 θ T x = 2 \theta^T x = 2 θTx=2,则 p ( 垃圾邮件 ∣ x ) = σ ( 2 ) ≈ 0.88 p(\text{垃圾邮件}|x) = \sigma(2) \approx 0.88 p(垃圾邮件∣x)=σ(2)≈0.88(88%的概率是垃圾邮件)
优化目标
逻辑回归的优化目标是学习合适的参数 θ \theta θ,使得:当 x x x 属于"1"类(正类)时, p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x) 较大(接近1);当 x x x 属于"0"类(负类)时, p ( y = 0 ∣ x ) p(y=0|x) p(y=0∣x) 较大(接近1),即 p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x) 较小(接近0)。
通俗理解:让模型对正样本给出高概率,对负样本给出低概率。
2. 逻辑回归模型
关键词:伯努利分布、最大似然、负对数似然、优化目标
概率模型假设
逻辑回归假设每个样本的类标签 y i y_i yi 都是独立同分布的伯努利变量(Bernoulli distribution)。
伯努利分布:只有两个可能结果的分布(0或1),就像抛硬币。
- p ( y i = 1 ∣ x i ) = σ ( θ T x i ) p(y_i = 1 | x_i) = \sigma(\theta^T x_i) p(yi=1∣xi)=σ(θTxi):样本 i i i 属于正类的概率
- p ( y i = 0 ∣ x i ) = 1 − σ ( θ T x i ) p(y_i = 0 | x_i) = 1 - \sigma(\theta^T x_i) p(yi=0∣xi)=1−σ(θTxi):样本 i i i 属于负类的概率
联合似然函数
对于 N N N 个独立样本,联合似然函数为:
p ( y ∣ x , θ ) = ∏ i = 1 N p ( y i ∣ x i , θ ) = ∏ i = 1 N [ p ( y i = 1 ∣ x i ) y i ⋅ ( 1 − p ( y i = 1 ∣ x i ) ) 1 − y i ] p(y|x, \theta) = \prod_{i=1}^{N} p(y_i | x_i, \theta) = \prod_{i=1}^{N} [p(y_i=1|x_i)^{y_i} \cdot (1-p(y_i=1|x_i))^{1-y_i}] p(y∣x,θ)=i=1∏Np(yi∣xi,θ)=i=1∏N[p(yi=1∣xi)yi⋅(1−p(yi=1∣xi))1−yi]
通俗理解 :如果 y i = 1 y_i = 1 yi=1(正类),则使用 p ( y i = 1 ∣ x i ) p(y_i=1|x_i) p(yi=1∣xi);如果 y i = 0 y_i = 0 yi=0(负类),则使用 1 − p ( y i = 1 ∣ x i ) 1-p(y_i=1|x_i) 1−p(yi=1∣xi);所有样本的概率相乘,得到整体数据的似然。
最大似然估计
目标 :找到参数 θ \theta θ,使得观测到的数据出现的概率最大。
等价转换:最大化似然函数等价于最小化负对数似然函数:
max p ( y ∣ x , θ ) ⇔ min − ln p ( y ∣ x , θ ) \max p(y|x, \theta) \Leftrightarrow \min -\ln p(y|x, \theta) maxp(y∣x,θ)⇔min−lnp(y∣x,θ)
**为什么取对数?**乘积变成求和,计算更方便;避免数值下溢(概率相乘可能非常小);对数函数单调递增,最大值位置不变。
负对数似然函数(损失函数)
负对数似然函数(也称为交叉熵损失):
L ( θ ) = − ln p ( y ∣ x , θ ) = − ∑ i = 1 N [ y i ln p ( y i = 1 ∣ x i ) + ( 1 − y i ) ln ( 1 − p ( y i = 1 ∣ x i ) ) ] L(\theta) = -\ln p(y|x, \theta) = -\sum_{i=1}^{N} [y_i \ln p(y_i=1|x_i) + (1-y_i) \ln(1-p(y_i=1|x_i))] L(θ)=−lnp(y∣x,θ)=−i=1∑N[yilnp(yi=1∣xi)+(1−yi)ln(1−p(yi=1∣xi))]
函数特点 :当 y i = 1 y_i = 1 yi=1 且 p ( y i = 1 ∣ x i ) p(y_i=1|x_i) p(yi=1∣xi) 接近1时,损失接近0(预测正确);当 y i = 1 y_i = 1 yi=1 且 p ( y i = 1 ∣ x i ) p(y_i=1|x_i) p(yi=1∣xi) 接近0时,损失很大(预测错误);当 y i = 0 y_i = 0 yi=0 且 p ( y i = 1 ∣ x i ) p(y_i=1|x_i) p(yi=1∣xi) 接近0时,损失接近0(预测正确);当 y i = 0 y_i = 0 yi=0 且 p ( y i = 1 ∣ x i ) p(y_i=1|x_i) p(yi=1∣xi) 接近1时,损失很大(预测错误)。
例子:
假设有3个样本:
- 样本1: y 1 = 1 y_1 = 1 y1=1, p ( y 1 = 1 ∣ x 1 ) = 0.9 p(y_1=1|x_1) = 0.9 p(y1=1∣x1)=0.9 → 损失 = − ln ( 0.9 ) ≈ 0.11 -\ln(0.9) \approx 0.11 −ln(0.9)≈0.11(小)
- 样本2: y 2 = 0 y_2 = 0 y2=0, p ( y 2 = 1 ∣ x 2 ) = 0.2 p(y_2=1|x_2) = 0.2 p(y2=1∣x2)=0.2 → 损失 = − ln ( 0.8 ) ≈ 0.22 -\ln(0.8) \approx 0.22 −ln(0.8)≈0.22(小)
- 样本3: y 3 = 1 y_3 = 1 y3=1, p ( y 3 = 1 ∣ x 3 ) = 0.1 p(y_3=1|x_3) = 0.1 p(y3=1∣x3)=0.1 → 损失 = − ln ( 0.1 ) ≈ 2.3 -\ln(0.1) \approx 2.3 −ln(0.1)≈2.3(大,预测错误)
总损失 = 0.11 + 0.22 + 2.3 = 2.63 0.11 + 0.22 + 2.3 = 2.63 0.11+0.22+2.3=2.63
优化目标 :通过调整参数 θ \theta θ,使得总损失最小。
3. 梯度下降法
关键词:梯度下降、学习率、批量梯度下降、随机梯度下降、小批量梯度下降
如何优化损失函数?
逻辑回归的损失函数 L ( θ ) L(\theta) L(θ) 是一个复杂的函数,没有像线性回归那样的解析解。我们需要用迭代优化的方法来找到最小值。**梯度下降法(Gradient Descent)**是最常用的优化方法。
什么是梯度?
对于多元函数 y = f ( x 1 , x 2 , . . . , x n ) y = f(x_1, x_2, ..., x_n) y=f(x1,x2,...,xn),梯度是一个向量:
∇ f = ( ∂ y ∂ x 1 , ∂ y ∂ x 2 , . . . , ∂ y ∂ x n ) \nabla f = \left(\frac{\partial y}{\partial x_1}, \frac{\partial y}{\partial x_2}, ..., \frac{\partial y}{\partial x_n}\right) ∇f=(∂x1∂y,∂x2∂y,...,∂xn∂y)
梯度的含义 :梯度指向函数增长最快 的方向;负梯度指向函数减小最快的方向;就像在山坡上,梯度指向最陡的上坡方向。
形象比喻:就像盲人下山,用脚感受坡度,沿着最陡的方向走。
梯度下降算法
核心思想:沿着负梯度方向(函数减小最快的方向)更新参数,逐步接近最小值。
更新规则:
θ ( k + 1 ) = θ ( k ) − η ⋅ ∇ L ( θ ( k ) ) \theta^{(k+1)} = \theta^{(k)} - \eta \cdot \nabla L(\theta^{(k)}) θ(k+1)=θ(k)−η⋅∇L(θ(k))
其中: θ ( k ) \theta^{(k)} θ(k) 是第 k k k 次迭代的参数值, η \eta η 是学习率(步长),控制每次更新的幅度, ∇ L ( θ ( k ) ) \nabla L(\theta^{(k)}) ∇L(θ(k)) 是损失函数在当前参数处的梯度。
算法流程:
- 初始化参数 θ ( 0 ) \theta^{(0)} θ(0)(随机初始化)
- 计算梯度 ∇ L ( θ ( k ) ) \nabla L(\theta^{(k)}) ∇L(θ(k))
- 更新参数: θ ( k + 1 ) = θ ( k ) − η ⋅ ∇ L ( θ ( k ) ) \theta^{(k+1)} = \theta^{(k)} - \eta \cdot \nabla L(\theta^{(k)}) θ(k+1)=θ(k)−η⋅∇L(θ(k))
- 重复步骤2-3,直到收敛(梯度接近0或损失不再减小)
学习率的选择
学习率 η \eta η 的选择非常重要:η \eta η 太小 时每次更新幅度小,收敛慢,需要很多次迭代;η \eta η 适中 时收敛速度快,效果好;η \eta η 太大时可能跳过最优解,甚至发散(损失函数值越来越大)。
例子:
假设损失函数是一个碗形(凸函数):
- η = 0.01 \eta = 0.01 η=0.01:小步前进,需要1000步到达底部
- η = 0.1 \eta = 0.1 η=0.1:大步前进,需要100步到达底部
- η = 1.0 \eta = 1.0 η=1.0:步长太大,可能跳过底部,在两边来回跳
梯度下降法的问题
1. 训练速度慢
对于大型数据集:每次迭代需要计算所有样本的梯度;需要遍历所有样本,计算量大;当数据量达到百万级时,每次迭代都很慢。
2. 容易陷入局部最优解
梯度下降只能看到"局部"的信息(当前位置的梯度);如果损失函数有多个"坑"(局部最小值),可能陷入较浅的坑;就像盲人下山,可能走到一个小洼地就以为到底了。
形象比喻 :全局最优 是整个山区的最低点(真正的山底),局部最优是某个小洼地(比周围低,但不是最低的)。
解决方案:使用改进的梯度下降方法(见下一节)。
4. 梯度下降法的改进
关键词:批量梯度下降、随机梯度下降、小批量梯度下降、动量法、自适应学习率
批量梯度下降法(BGD)
标准梯度下降 (也叫批量梯度下降,Batch Gradient Descent,BGD):每次迭代使用所有样本计算梯度,梯度方向准确,但计算量大。
特点:✅ 梯度方向准确(使用全部数据);✅ 收敛稳定;❌ 计算量大,速度慢;❌ 不适合大数据集。
随机梯度下降法(SGD)
核心思想 :每次迭代只使用一个样本计算梯度并更新参数。
更新规则:
θ ( k + 1 ) = θ ( k ) − η ⋅ ∇ L i ( θ ( k ) ) \theta^{(k+1)} = \theta^{(k)} - \eta \cdot \nabla L_i(\theta^{(k)}) θ(k+1)=θ(k)−η⋅∇Li(θ(k))
其中 L i L_i Li 是第 i i i 个样本的损失。
特点:✅ 训练速度快(每次只处理一个样本);✅ 可以实时学习(来一个样本更新一次);✅ 可能跳出局部最优(随机性);❌ 梯度方向不准确(只用1个样本);❌ 收敛不稳定(波动大);❌ 容易受噪声或离群点影响。
形象比喻 :BGD 看完整张地图再决定方向(准确但慢),SGD只看一个路标就决定方向(快但不准确)。
小批量梯度下降法(MBGD)
核心思想 :每次迭代使用一小批样本(mini-batch)计算梯度,是BGD和SGD的折中。
更新规则:
θ ( k + 1 ) = θ ( k ) − η ⋅ 1 m ∑ i = 1 m ∇ L i ( θ ( k ) ) \theta^{(k+1)} = \theta^{(k)} - \eta \cdot \frac{1}{m} \sum_{i=1}^{m} \nabla L_i(\theta^{(k)}) θ(k+1)=θ(k)−η⋅m1i=1∑m∇Li(θ(k))
其中 m m m 是批量大小(batch size),通常取32、64、128等。
特点:✅ 训练速度较快(比BGD快);✅ 梯度方向较准确(比SGD准确);✅ 收敛较稳定(比SGD稳定);✅ 可以利用GPU并行计算(批量处理);✅ 实际应用中最常用。
批量大小选择 :m = 1 m = 1 m=1退化为SGD;** m = N m = N m=N** (全部样本)退化为BGD;** m = 32 − 256 m = 32-256 m=32−256**是常用选择,平衡速度和稳定性。
动量梯度下降法(Momentum)
核心思想 :不仅考虑当前梯度,还考虑历史梯度,就像给球一个惯性。
更新规则:
m ( t ) = γ ⋅ m ( t − 1 ) + ( 1 − γ ) ⋅ ∇ L ( θ ( t ) ) m^{(t)} = \gamma \cdot m^{(t-1)} + (1-\gamma) \cdot \nabla L(\theta^{(t)}) m(t)=γ⋅m(t−1)+(1−γ)⋅∇L(θ(t))
θ ( t + 1 ) = θ ( t ) − η ⋅ m ( t ) \theta^{(t+1)} = \theta^{(t)} - \eta \cdot m^{(t)} θ(t+1)=θ(t)−η⋅m(t)
其中: m ( t ) m^{(t)} m(t) 是动量项(历史梯度的加权平均), γ \gamma γ 是动量系数(通常0.9),控制历史梯度的权重。
优点:✅ 加速收敛(在一致方向上有"惯性");✅ 减少震荡(平滑梯度方向);✅ 可能跳出局部最优(有动量)。
形象比喻 :标准梯度下降 每步都重新决定方向,动量梯度下降有"惯性",在一致方向上加速。
例子:
假设损失函数是一个长而窄的"峡谷":
- 标准梯度下降:在峡谷两边来回震荡,前进缓慢
- 动量梯度下降:利用惯性,沿着峡谷底部快速前进
其他改进算法
自适应学习率算法:根据历史梯度自动调整学习率
- AdaGrad:对频繁更新的参数使用小学习率,对不频繁更新的参数使用大学习率
- RMSProp:改进AdaGrad,使用指数移动平均
- Adam:结合动量和自适应学习率,实际应用中最常用
Adam算法特点:✅ 自适应学习率;✅ 结合动量;✅ 收敛快且稳定;✅ 对超参数不敏感;✅ 深度学习中最常用的优化器。
算法对比总结
| 算法 | 速度 | 稳定性 | 适用场景 |
|---|---|---|---|
| BGD | 慢 | 稳定 | 小数据集 |
| SGD | 快 | 不稳定 | 在线学习 |
| MBGD | 较快 | 较稳定 | 最常用 |
| Momentum | 快 | 稳定 | 有"峡谷"的损失函数 |
| Adam | 快 | 稳定 | 深度学习首选 |
实际应用建议:
- 小数据集(<1000样本)→ 使用BGD
- 大数据集 → 使用MBGD(batch size = 32-256)
- 深度学习 → 使用Adam优化器
- 需要快速实验 → 使用SGD
5. 逻辑回归与线性回归的关系
关键词:广义线性模型、对数几率、线性分类器、决策边界
逻辑回归是"线性"的吗?
逻辑回归看起来是非线性的(因为有sigmoid函数),但本质上又是线性的。
关键理解:逻辑回归对**对数几率(log-odds)**是线性的。
对数几率:
对数几率 = ln ( p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) ) = ln ( p ( y = 1 ∣ x ) 1 − p ( y = 1 ∣ x ) ) = θ T x \text{对数几率} = \ln\left(\frac{p(y=1|x)}{p(y=0|x)}\right) = \ln\left(\frac{p(y=1|x)}{1-p(y=1|x)}\right) = \theta^T x 对数几率=ln(p(y=0∣x)p(y=1∣x))=ln(1−p(y=1∣x)p(y=1∣x))=θTx
通俗理解 :几率 = p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) \frac{p(y=1|x)}{p(y=0|x)} p(y=0∣x)p(y=1∣x)(正类概率与负类概率的比值),对数几率 = ln ( 几率 ) \ln(\text{几率}) ln(几率),逻辑回归假设:对数几率是特征的线性组合。
例子:
假设 p ( y = 1 ∣ x ) = 0.75 p(y=1|x) = 0.75 p(y=1∣x)=0.75, p ( y = 0 ∣ x ) = 0.25 p(y=0|x) = 0.25 p(y=0∣x)=0.25:
- 几率 = 0.75 / 0.25 = 3 0.75 / 0.25 = 3 0.75/0.25=3(正类概率是负类的3倍)
- 对数几率 = ln ( 3 ) ≈ 1.1 \ln(3) \approx 1.1 ln(3)≈1.1
逻辑回归假设: ln ( 3 ) = θ T x \ln(3) = \theta^T x ln(3)=θTx(线性关系)
决策边界是线性的
决策边界:将不同类别分开的边界。
逻辑回归的决策规则:如果 p ( y = 1 ∣ x ) > 0.5 p(y=1|x) > 0.5 p(y=1∣x)>0.5,预测为正类;如果 p ( y = 1 ∣ x ) < 0.5 p(y=1|x) < 0.5 p(y=1∣x)<0.5,预测为负类;如果 p ( y = 1 ∣ x ) = 0.5 p(y=1|x) = 0.5 p(y=1∣x)=0.5,在决策边界上。
由于 p ( y = 1 ∣ x ) = σ ( θ T x ) p(y=1|x) = \sigma(\theta^T x) p(y=1∣x)=σ(θTx),当 p ( y = 1 ∣ x ) = 0.5 p(y=1|x) = 0.5 p(y=1∣x)=0.5 时: σ ( θ T x ) = 0.5 \sigma(\theta^T x) = 0.5 σ(θTx)=0.5, θ T x = 0 \theta^T x = 0 θTx=0(因为 σ ( 0 ) = 0.5 \sigma(0) = 0.5 σ(0)=0.5)。
结论 :决策边界是 θ T x = 0 \theta^T x = 0 θTx=0,这是一个线性边界(超平面)。
例子:
假设有两个特征 x 1 x_1 x1 和 x 2 x_2 x2,参数 θ = [ θ 0 , θ 1 , θ 2 ] = [ − 1 , 2 , − 1 ] \theta = [\theta_0, \theta_1, \theta_2] = [-1, 2, -1] θ=[θ0,θ1,θ2]=[−1,2,−1]:
决策边界: − 1 + 2 x 1 − x 2 = 0 -1 + 2x_1 - x_2 = 0 −1+2x1−x2=0,即 x 2 = 2 x 1 − 1 x_2 = 2x_1 - 1 x2=2x1−1
这是一条直线,将特征空间分成两部分。
线性回归 vs 逻辑回归
| 特性 | 线性回归 | 逻辑回归 |
|---|---|---|
| 输出 | 连续值(任意实数) | 概率值([0, 1]) |
| 目标 | 拟合数据的分布 | 拟合决策边界 |
| 函数 | 线性函数 | Sigmoid函数(非线性) |
| 对参数 | 线性 | 线性(对对数几率) |
| 决策边界 | 无(回归问题) | 线性边界 |
相同点 :都使用线性组合 θ T x \theta^T x θTx;都属于广义线性模型(GLM) ;都通过输入值 x x x 结合线性权重 θ \theta θ 来预测输出。
不同点:线性回归直接输出连续值;逻辑回归通过sigmoid函数输出概率,再转换为类别。
逻辑回归的特点
优点:
-
直接对概率建模:不需要假设数据分布(区别于生成式模型如朴素贝叶斯),避免了分布假设不准确带来的问题。
-
输出概率值:不仅给出类别,还给出概率,对需要概率辅助决策的任务很有用(如医疗诊断、风险控制)。
-
计算效率高:梯度计算可以并行化,训练和预测速度快。
-
可解释性强 :参数 θ \theta θ 有明确的含义(每个特征的影响程度),可以分析哪些特征最重要。
缺点:
-
特征缺失或特征空间很大时表现不好:需要特征工程,可以使用正则化处理。
-
只能处理线性决策边界:对于非线性问题,需要特征变换(如多项式特征)。
-
对异常值敏感:可以使用正则化或鲁棒损失函数。
适用场景:二分类问题(可以扩展到多分类);需要概率输出的场景;特征数量适中的问题;需要可解释性的场景。
实际应用:垃圾邮件分类;医疗诊断(疾病预测);金融风控(信用评分);广告点击率预测。