逻辑回归与交叉熵损失
一句话定义
逻辑回归用 sigmoid 把线性打分压成概率 p = σ(w^⊤ x + b),并最大化伯努利似然——等价于最小化交叉熵损失,是二分类的默认基线模型。
为什么重要
它以极低的成本提供了可解释、可校准、可上线(输出概率可接阈值策略)的分类能力;其交叉熵损失还是神经网络分类输出的标准损失,学会这里的推导就直接打通了深度学习。风控、医疗评分等需要「概率 + 系数可解释」的场景里它至今是主力。
前置知识
线性回归与最小二乘法 的线性模型与极大似然思想;损失函数:从 0-1 损失到代理损失 的代理损失概念。
核心概念
- sigmoid:σ(z) = 11 + e-z,把 ℝ 压到 (0, 1)。
- 对数几率(log-odds):log p1-p = w^⊤ x + b——模型是「线性地对数几率」,不是线性概率。
- 交叉熵损失:L = -[y log p + (1-y)log(1-p)]。
- 决策边界:p = 0.5 即 w^⊤ x + b = 0,是特征空间中的超平面,边界是线性的。
- 系数解释:ewj 是固定其他特征时该特征每增加 1 单位的几率比(odds ratio)。
直观类比
线性回归像用直尺量「输出数值」,逻辑回归像用直尺量「离边界的远近」再翻译成把握度:离边界越远,sigmoid 输出越接近 0/1,即模型越确信。它不回答「y 是多少」,回答「y 是 1 的把握有多大」。
原理与机制
从似然到交叉熵的推导:设 y ∈ {0, 1} 服从伯努利分布,p(y | x) = py(1-p)1-y,p = σ(w^⊤ x)。对数似然
最大化 ℓ 等价于最小化 -ℓ/n,即平均交叉熵。代入 sigmoid 性质 σ(-z) = 1 - σ(z),损失对打分的梯度有极简形式:
即「预测概率减去真实标签」——误差信号直接、处处光滑、损失关于 w 凸,因此逻辑回归有良好性质的全局优化。对比:若改用平方损失,梯度为 2(p-y) p(1-p) σ'(z),损失在 w 上非凸且远离边界时梯度消失,这正是 kp-003「分类不用平方损失」的证明现场。
公式与推导
正则化的完整目标(结构风险):
阈值 0.5 只是默认选择;代价不对称时应移动阈值(如漏检代价高则下调阈值提高召回),评估见 分类评估指标:混淆矩阵、Precision/Recall 与 ROC-AUC。
图示
p
1.0 ┤ ╭────────
│ ╭──╯
0.5 ┤·····━━━╯····· ← 决策边界 wᵀx+b = 0
│ ╭──╯
0.0 ┤───╯
└────────────────▶ z = wᵀx + b
σ(z) 把任意打分压成概率实例或案例
乳腺癌数据上的标准流程(划分 → 训练 → 评估 AUC):
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.metrics import roc_auc_score
X, y = load_breast_cancer(return_X_y=True)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, stratify=y, random_state=0)
clf = make_pipeline(StandardScaler(), LogisticRegression(C=1.0, max_iter=2000))
clf.fit(X_tr, y_tr)
print("AUC =", roc_auc_score(y_te, clf.predict_proba(X_te)[:, 1]))常见误区
- 把系数大小当特征重要性:特征未标准化时量纲不同不可比;强共线时系数符号都可能翻转。
- 认为逻辑回归「线性」就不能处理非线性:可对特征做多项式/分箱/交互扩展,仍是该框架(见 kp-027)。
- 忽略概率校准:类不平衡或强正则下输出的概率会系统性偏离真实频率,重要场景需校准(如
CalibratedClassifierCV)。
与其他知识点的关系
多分类线性模型与 softmax 回归 把 sigmoid 推广为 softmax 实现多分类;软间隔 SVM 与铰链损失 展示 hinge 损失与交叉熵作为不同代理的对比;分类评估指标:混淆矩阵、Precision/Recall 与 ROC-AUC 说明为什么评估时不能只看 0.5 阈值准确率。
自测题
- 为什么逻辑回归的损失关于 w 是凸的?
- 要点:交叉熵是 sigmoid 打分的凸函数(log-sum-exp 结构),线性打分的仿射复合保持凸性;平方损失复合 sigmoid 则不凸。
- 某特征系数 wj = 0.7,如何解读?
- 要点:该特征每 +1 单位,y=1 的几率变为原来的 e0.7 ≈ 2 倍(其他特征固定、已标准化的前提要说清)。
- 输出概率 0.6 意味着什么?什么情况下不可信?
- 要点:名义上 P(y=1 | x) = 0.6;训练分布偏移、强正则、类不平衡时未校准,需用校准曲线(reliability diagram)检查。
延伸阅读
Bishop《PRML》第 4 章;李航《统计学习方法》第 6 章(逻辑斯谛回归与最大熵)。