知识点深化 · 逻辑回归
逻辑回归:Sigmoid 与分类决策边界
逻辑回归名字带「回归」,做的却是分类 。它先像线性回归一样算一个分数,再用 Sigmoid 把分数压到 (0,1) 变成概率,最后阈值化判类别。这一页讲清楚 Sigmoid、交叉熵损失、决策边界为什么是 θᵀx=0。
① 小白第一课怎么学(4 步走,约 60 分钟)
逻辑回归名字带"回归",其实做的是分类 。按这四步走:
1 看图建立直觉(10 分钟) 读第②③部分:看 Sigmoid 怎么把任意实数压到 (0,1),搞懂"概率→类别"。
2 记公式与推导(15 分钟) 读第④部分:Sigmoid、交叉熵损失、梯度更新式、决策边界。
3 手算例题(20 分钟) 精读第⑤部分 3 道例题,跟着算一遍概率和边界。
4 刷题+纠错(15 分钟) 做第⑦⑩部分,错题回到第⑥部分高频错误里找原因。
本课小目标 学完你要能:① 画出 Sigmoid 形状并说出它把 z 压到什么范围;② 解释为什么逻辑回归用交叉熵而不是 MSE;③ 写出决策边界方程 θᵀx=0 并判断新样本属于哪类。
② 一图看懂:逻辑回归全地图
逻辑回归
Sigmoid 函数
σ(z)=1/(1+e⁻ᶻ) 压到(0,1)
交叉熵损失
L=−[ylog p+(1−y)log(1−p)]
决策边界
θᵀx=0 分割两类
梯度下降更新
θ←θ−α·(1/n)Σ(p−y)x
应用:垃圾邮件/患病预测
二分类概率输出
易错:阈值/不平衡
默认 0.5,类别失衡要调
读法:中心是"逻辑回归",四大块——Sigmoid 压概率、交叉熵损失、决策边界、梯度更新;下方是应用和易错。
③ 本质直觉:回归出一条线,再把它"弯"成概率
线性回归输出的是任意实数(比如 −100 到 +100),但分类问题要的是"属于正类的概率 ",必须落在 0~1 之间。
第一步: 先像线性回归一样算一个线性得分 z = θᵀx(可正可负,可大可小)。
第二步: 把 z 喂给 Sigmoid 函数 σ(z)=1/(1+e⁻ᶻ),它像一个"压缩器":z→+∞ 时 σ→1,z→−∞ 时 σ→0,z=0 时 σ=0.5。输出就是概率 p。
第三步: 设个阈值(默认 0.5):p≥0.5 判为正类(y=1),p<0.5 判为负类(y=0)。
决策边界: p=0.5 时 σ(z)=0.5,反推 z=0,即 θᵀx=0 。这就是一条直线(高维是超平面),把特征空间切成两半。
(0, 0.5)
σ→1
σ→0
Sigmoid:S 形,把 z 压到 (0,1)
为什么不用 MSE 做损失 逻辑回归若用 MSE,损失函数对 θ 是非凸的(到处是坑),梯度下降容易卡在局部最优;换成交叉熵 后,损失变成凸函数,保证收敛到全局最优。这就是它和线性回归最大的区别。
④ 完整体系与公式表
Sigmoid 函数
Sigmoid / Logistic
σ(z) = 1 / (1 + e−z ) σ'(z) = σ(z)(1−σ(z))
模型与概率
逻辑回归模型
z = θᵀx = θ₀ + θ₁x₁ + … + θn xn
p = P(y=1|x) = σ(z) = 1/(1+e−θᵀx )
交叉熵损失(单个样本)
二元交叉熵
L(θ) = −[ y·log(p) + (1−y)·log(1−p) ]
y=1 时只看第一项(−log p,p 越接近 1 损失越小);y=0 时只看第二项(−log(1−p),p 越接近 0 损失越小)。
梯度下降更新式(和线性回归形式一样!)
优雅的更新式
θj ← θj − α · (1/n) · Σi ( σ(z(i) ) − y(i) ) · xj (i)
决策边界
项目 公式 含义
边界方程 θᵀx = 0 p=0.5 的那条线
预测正类 θᵀx > 0 p>0.5 → y=1
预测负类 θᵀx < 0 p<0.5 → y=0
单变量边界 θ₀+θ₁x=0 → x=−θ₀/θ₁ 一个分界点
Python 代码片段
from sklearn.linear_model import LogisticRegression
model = LogisticRegression().fit(X_train, y_train)
p = model.predict_proba(X_test)[:,1] → 取正类概率
⑤ 用法场景与典型例题
例1(基础·算概率)已知 z=2,求 Sigmoid 输出 p
套公式 σ(z)=1/(1+e⁻ᶻ)。
① e⁻²≈0.135。
② p = 1/(1+0.135) = 1/1.135 ≈ 0.881 。
③ p=0.881>0.5,判为正类 。
答案: p≈0.88,预测为正类。
例2(决策边界)已知 θ₀=−3, θ₁=1,特征 x₁ 单变量,求决策边界和 x=5 的预测
边界即 z=0 的位置。
① 边界:θ₀+θ₁x=0 → −3+x=0 → x=3 。x>3 判正类,x<3 判负类。
② x=5 时 z=−3+5=2,p=σ(2)≈0.881。
③ p>0.5,预测正类 。
答案: 分界点 x=3;x=5 预测为正类,概率约 0.88。
例3(损失计算)真实 y=1,模型预测 p=0.9;另一例 y=0,p=0.2。分别算交叉熵损失
套 L=−[y·log p+(1−y)log(1−p)]。
① 第一例:y=1,L=−log(0.9)=−(−0.105)=0.105 (预测很准,损失小)。
② 第二例:y=0,L=−log(1−0.2)=−log(0.8)=0.223 (预测 p=0.2 偏低但方向对)。
③ 若第二例预测 p=0.9(完全反了),L=−log(1−0.9)=−log(0.1)=2.303 ,损失巨大。
答案: 交叉熵对"猜错且自信"惩罚极重,这正是它想要的效果。
逻辑回归 vs 线性回归一句话 线性回归输出任意实数做预测;逻辑回归把那个实数过一遍 Sigmoid 变成 0~1 概率,再阈值化做分类。名字里的"回归"是历史遗留,本质是分类器 。
⑥ 高频错误诊断(4 条)
错误 1:把 predict 的输出当概率 model.predict(X) 输出的是类别 (0 或 1),不是概率。要概率请用 predict_proba(X)。新手常搞混。
错误 2:默认阈值 0.5 不调整 癌症筛查场景,漏诊(把有病判成没病)代价极大,应把阈值调低到 0.3 甚至 0.2——宁可误诊多查几个,也不能漏。阈值要按业务代价调,不是死的。
错误 3:类别不平衡时直接看准确率 99% 是负样本,模型全猜负类也有 99% 准确率,但毫无用处。要看精确率/召回率/F1/ROC-AUC。
错误 4:用逻辑回归拟合非线性问题不做特征工程 逻辑回归的决策边界是直线/超平面,遇到 XOR 或圆形边界分不出来。需要构造多项式特征(x₁², x₁x₂)或换非线性模型(决策树、神经网络)。
⑦ 考点真题演练(4 题)
考点分布
考法 出题形式 应对
Sigmoid 计算 给 z 求 p σ(z)=1/(1+e⁻ᶻ)
损失函数 问为什么用交叉熵 MSE 非凸,交叉熵凸且惩罚自信错判
决策边界 给 θ 求边界方程 令 θᵀx=0
评估指标 不平衡数据看什么 召回率/F1/AUC,别只看准确率
真题 基础 1. Sigmoid 函数 σ(z)=1/(1+e⁻ᶻ) 的输出范围是?
A. (−∞, +∞)
B. (0, 1)
C. [0, 1]
D. (−1, 1)
真题 中档 2. 逻辑回归分类时,默认把概率 p 超过多少判为正类?
A. 0.9
B. 0.5
C. 0.1
D. 0
真题 中档 3. 逻辑回归使用交叉熵损失而不是 MSE 的主要原因是?
A. MSE 计算太慢
B. 交叉熵损失函数是凸函数,避免局部最优
C. 交叉熵不需要标签
D. 交叉熵只能用于二分类
真题 拔高 4. 已知 θ₀=−2, θ₁=0.5,特征 x₁=6,预测结果是?
A. z=1,p≈0.73,正类
B. z=−1,p≈0.27,负类
C. z=1,p=0.5,不确定
D. z=0,p=0.5,正类
⑧ 必背公式卡
Sigmoid: σ(z)=1/(1+e−z ) 压到 (0,1)
概率: p=σ(θᵀx) 正类概率
决策边界: θᵀx=0 p=0.5 的那条线
损失: L=−[y·log p+(1−y)·log(1−p)] 交叉熵
更新: θj ←θj −α(1/n)Σ(p−y)xj 形式和线性回归一样
预测: p≥0.5→y=1,否则 y=0 阈值可调
铁律: 不平衡数据看召回/F1/AUC,别只看准确率 99% 准确率可能全猜负类
⑨ 应用输出:用逻辑回归判断肿瘤恶性
建模场景:肿瘤良性/恶性二分类
医院有一组患者数据:肿块大小 x₁、细胞密度 x₂,标签 y=1 表示恶性、y=0 良性。要建模型辅助医生判断。
① 选模型: 二分类问题,用逻辑回归,输出恶性概率。
② 训练: LogisticRegression().fit(X_train, y_train),解出 θ。
③ 新患者: x₁=2.5, x₂=3,算出 z=θᵀx=1.8,p=σ(1.8)≈0.86。
④ 调阈值: 癌症漏诊代价高,把阈值从 0.5 调到 0.3。p=0.86>0.3,判恶性 ,建议进一步活检。
⑤ 评估: 重点看召回率(真恶性有多少被找出来)≥95%,宁可多做活检也不漏。
⑥ 注意: 逻辑回归只给概率,最终诊断由医生决定,模型是辅助。
口述训练思路 合上课本说一遍:"先算线性得分 z=θᵀx,Sigmoid 压成概率 p;用交叉熵做损失,梯度下降调 θ;阈值判类别;不平衡或高代价场景要调阈值、看召回率。"
⑩ 分层练习 18 题(基础 6 + 中档 6 + 拔高 6)
▍基础 6 题
基础1 逻辑回归解决的是分类还是回归问题?
解析 分类 (二分类)。名字带回归是历史遗留。
基础2 Sigmoid 函数在 z=0 时输出多少?
解析 0.5 。σ(0)=1/(1+1)=0.5。
基础3 逻辑回归的决策边界对应 p 等于多少?
解析 p=0.5 ,对应 z=θᵀx=0。
基础4 逻辑回归常用的损失函数叫什么?
解析 二元交叉熵 (Cross-Entropy)。
基础5 predict_proba 输出的是什么?
解析 各类别的概率 ,不是直接类别。
基础6 默认阈值 0.5,p=0.72 预测什么类?
解析 正类(y=1) 。p>0.5。
▍中档 6 题
中档7 z=0 时 p=0.5;z=10 时 p 大约多少?
解析 e−10 ≈0.000045,p≈0.99995,接近 1。
中档8 θ₀=0, θ₁=1,x=−2 时预测什么类?
解析 z=−2,p=σ(−2)≈0.119<0.5,负类 。
中档9 y=1, p=0.99,交叉熵损失大约多少?
解析 L=−log(0.99)≈0.01,预测很准。
中档10 y=1, p=0.01(完全猜错),损失大约多少?
解析 L=−log(0.01)=4.6,惩罚极大。
中档11 为什么癌症筛查要调低分类阈值?
解析 漏诊代价远高于误诊。调低阈值(如 0.3)会让更多样本被判阳性,提高召回率,宁可多活检。
中档12 逻辑回归的决策边界在特征数=2 时是什么形状?
解析 一条直线 (θ₀+θ₁x₁+θ₂x₂=0)。
▍拔高 6 题
拔高13 类别 99% 负、1% 正,全猜负类准确率多少?模型有用吗?
解析 准确率 99%,但一个正例都没抓到,完全没用。要看召回率/F1/AUC。
拔高14 训练准确率 99%,测试准确率 50%,什么问题?
解析 过拟合 。加正则(L1/L2)、减特征、增数据。
拔高15 逻辑回归能直接解决 XOR 问题吗?为什么?
解析 不能。决策边界是直线,XOR 需要两条直线才能分开,线性边界分不开。需加多项式特征或换非线性模型。
拔高16 精确率和召回率此消彼长,调高阈值会怎样?
解析 调高阈值→判正类更严格→精确率上升、召回率下降;调低则相反。
拔高17 L2 正则在逻辑回归中起什么作用?
解析 惩罚大权重,让 θ 趋近 0,防止过拟合、提高泛化。sklearn 默认 C=1.0 即 L2。
拔高18 多分类任务(猫/狗/鸟)逻辑回归怎么办?
解析 用 One-vs-Rest 或 Softmax 多分类扩展。sklearn 的 LogisticRegression 默认支持多分类。
⑪ 记忆口诀 + 7 天复习计划
三句口诀
① 线性得分 S 形压,零到一里出概率。
② 交叉熵、凸函数,自信错判罚得重。
③ 边界就是 z 等于零,阈值按代价来调。
天 任务 自检
第 1 天 读②③④,手画 Sigmoid 曲线 说出 z=0, +∞, −∞ 对应 p
第 2 天 背公式卡 + 做基础 1-6 基础全对
第 3 天 做中档 7-12,手算 3 个 z 的 p p 算对
第 4 天 做拔高 13-18,理解交叉熵为什么凸 能解释为什么不用 MSE
第 5 天 做⑦真题 4 题 限时每题 2 分钟
第 6-7 天 合上书口述三句口诀,写 Sigmoid 和交叉熵 不看资料全默对
← 返回算法与AI总览