← 返回算法与AI总览 算法与AI · 知识点深化 · 逻辑回归:Sigmoid 与分类决策边界
知识点深化 · 逻辑回归

逻辑回归: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₁ + … + θnxn
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 = 0p=0.5 的那条线
预测正类θᵀx > 0p>0.5 → y=1
预测负类θᵀx < 0p<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⁻ᶻ) 的输出范围是?

真题中档2. 逻辑回归分类时,默认把概率 p 超过多少判为正类?

真题中档3. 逻辑回归使用交叉熵损失而不是 MSE 的主要原因是?

真题拔高4. 已知 θ₀=−2, θ₁=0.5,特征 x₁=6,预测结果是?

⑧ 必背公式卡

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逻辑回归解决的是分类还是回归问题?
分类(二分类)。名字带回归是历史遗留。
基础2Sigmoid 函数在 z=0 时输出多少?
0.5。σ(0)=1/(1+1)=0.5。
基础3逻辑回归的决策边界对应 p 等于多少?
p=0.5,对应 z=θᵀx=0。
基础4逻辑回归常用的损失函数叫什么?
二元交叉熵(Cross-Entropy)。
基础5predict_proba 输出的是什么?
各类别的概率,不是直接类别。
基础6默认阈值 0.5,p=0.72 预测什么类?
正类(y=1)。p>0.5。

▍中档 6 题

中档7z=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,负类。
中档9y=1, p=0.99,交叉熵损失大约多少?
L=−log(0.99)≈0.01,预测很准。
中档10y=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精确率和召回率此消彼长,调高阈值会怎样?
调高阈值→判正类更严格→精确率上升、召回率下降;调低则相反。
拔高17L2 正则在逻辑回归中起什么作用?
惩罚大权重,让 θ 趋近 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 的 pp 算对
第 4 天做拔高 13-18,理解交叉熵为什么凸能解释为什么不用 MSE
第 5 天做⑦真题 4 题限时每题 2 分钟
第 6-7 天合上书口述三句口诀,写 Sigmoid 和交叉熵不看资料全默对

← 返回算法与AI总览