5.2 逻辑回归、Log Loss 与阈值:概率模型和行动规则是两层
若目标是预测任务是否请求紧急资源,直接用线性回归可能给出小于 0 或大于 1 的值。逻辑回归把线性 predictor 映射为条件概率,再由决策层根据成本和容量选择阈值。
本课目标
- 从 Bernoulli likelihood 推导 binary cross-entropy;
- 用 log-odds 解释系数与线性边界;
- 处理 separation、类别失衡和数值稳定;
- 分开 discrimination、calibration 与 threshold utility。
1. 从 log-odds 建模
令
因此:
对特征
交互和非线性 basis 会让原始输入空间边界变复杂,但在 design features 上 log-odds 仍线性。
2. Bernoulli likelihood 与 log loss
对
负平均 log-likelihood:
它对自信但错误的概率惩罚很大,是 proper scoring rule。训练 accuracy 不可微且忽略置信程度,不适合作为标准 logistic objective。
直接算 log(sigmoid(z)) 可能 overflow/underflow。下面把二元交叉熵改写为稳定形式,使用 Python 3 + NumPy,可保存为 logloss_demo.py 后运行 python3 logloss_demo.py:
import numpy as np
z = np.array([-1000.0, 0.0, 1000.0])
y = np.array([0.0, 1.0, 1.0])
loss = np.maximum(z, 0) - y * z + np.log1p(np.exp(-np.abs(z)))
assert np.isfinite(loss).all()
print(np.round(loss, 6))预期结果为 [0. 0.693147 0. ]。极端但正确的 logits 损失接近零,中间的 0 对应概率 0.5。把最后一个标签改成 0,损失应变成约 1000;模型越自信,答错时账单越具体。
3. 逻辑回归不要求线性可分
数据不可线性分时,模型仍可找到最大 likelihood/正则化解,只是边界无法完美分类。真正的特殊问题是 perfect/quasi separation:某方向能把训练类别完全隔开时,无正则 MLE 系数可能趋向无穷,有限数值解不稳定。
可采用:
- L2/L1 正则;
- 收集边界附近样本;
- 合并稀疏类别;
- Firth correction 等专门估计(推断场景);
- 检查泄漏导致的“完美特征”。
训练 accuracy 100% 可能是 separation,也可能是泄漏。
4. 0.5 不是通用阈值
模型输出
若两种正确分类成本为零,误报成本为
需要数据估计或选择的阈值应在 validation 上确定,test 只评估冻结规则。基准率变化可能使旧概率失准、precision 改变;若概率已按新总体重新校准且上述成本不变,概率尺度上的成本阈值仍是同一个比值。
5. 类别失衡改变怎样评估
类别少并不自动要求 resampling。先用:
- log loss/Brier score 看概率;
- precision-recall 与 recall at capacity;
- confusion matrix 的分子分母;
- 与 prevalence/业务规则 baseline 比较。
class_weight="balanced" 改变训练 objective,使少数类 loss 权重更大;它不凭空增加信息,输出概率也可能需要在原目标分布重新 calibration。Oversampling 同样会改变训练先验。
6. Discrimination 与 calibration
- discrimination:正例通常是否排在负例前面;
- calibration:预测 0.2 的样本长期约有 20% 为正;
- decision utility:在具体阈值/行动下是否有价值。
AUC 高的模型可能概率过于自信;校准好的弱模型也可能排序不足。报告 reliability curve、Brier/log loss、分组/时间 calibration,并与基准率比较。
Calibration 方法(Platt/logistic、isotonic 等)应使用已训练 base model 在未参与其拟合的数据上的预测,或使用折外预测。校准器再用这些预测和标签拟合;最终评价还要留出独立数据,见 scikit-learn 的校准说明。
7. 多分类 Softmax
对互斥
logits 对共同常数不敏感,参数需要 reference 或约束避免不可识别。数值计算使用 log-sum-exp trick。
- multinomial/softmax 共同训练类别;
- one-vs-rest 训练 K 个二分类器,概率不天然和为 1;
- multilabel 问题不应使用互斥 softmax。
8. 缺失、未知类别与截距漂移
类别词表、填充值和 scaling 必须进入 pipeline。部署 prevalence 变化时,即使 likelihood ratio 关系稳定,intercept/calibration 也会改变。监控:
- score/logit 分布;
- prevalence 与 label delay;
- calibration-in-the-large(平均预测 vs 实际率);
- calibration slope;
- 群体/时间误差。
9. 系数解释边界
Odds ratio 常被误读成 risk ratio,尤其结果常见时差异明显。非线性 feature、interaction 和正则化使单系数更难独立解释。
预测模型中的条件关联不等于因果。用群体变量改善 calibration/公平性的决定,还涉及适用法律、政策和伤害权衡。
常见误区
- 逻辑回归要求数据线性可分:不可分仍可拟合;完全可分反而使无正则 MLE 发散。
- Sigmoid 输出天然校准:模型错设和 regularization 会失准。
- 类别不均衡就用 class weight:先从决策指标和目标分布判断。
- 阈值固定为 0.5:应由成本、容量和验证选择。
练习
- 将一个系数转为 odds ratio,并在不同基准概率下计算概率变化。
- 制造 perfect separation,观察无正则与 L2 解。
- 比较 class weighting 前后的 AUCPR 与 calibration。
- 在固定审核容量下选择阈值,再用独立 test 评估。
小结
逻辑回归把线性 predictor 解释为 log-odds,并用 Bernoulli likelihood 学概率。概率是否可信、阈值是否合适和行动是否有价值,需要分三层验证。
下一课回到求解过程:凸目标也可能因尺度和 conditioning 难以优化,正则项还会改变目标与系数语义。