分类损失与 Logistic 回归
Hook:二元跑赢信号
上海某私募的因子研究员把上一节的 5 因子载荷在沪深300 全样本上重新拟过一遍,现在 PM 把问题反过来问:「不要预测下月超额收益率,直接给我一个『这只票下月跑赢沪深300 的概率』。」目标变量从连续的 收缩成二值的 ,这条信号要直接驱动一个多空叠加层(long/short overlay)。你立刻意识到:用上一节的普通最小二乘(ordinary least squares, OLS)拟合 0/1 标签是错的——预测值会跑出 ,而且方差项的高斯噪声假设在伯努利样本上根本不成立。本节把同一个 ERM + 线性打分(linear score)的骨架接到一个 sigmoid 连接函数上,得到 logistic 回归,把这套机制按 softmax 推广到多类,并补完判别力与校准度这一对量化做模型评估时必须分开看的指标。
一、分类设置与 0-1 损失
把第一节的统计学习框架直接搬过来,只把响应变量改为离散:二分类 ,多类 。最自然的损失是 0-1 损失(0-1 loss):
第一节给出的贝叶斯最优预测器在 0-1 损失下特化为后验众数(posterior mode):
这是真值的最优分类规则;实际工作中我们用 ERM 在某个假设类 上近似它。
二、为什么需要替代损失
把 写成线性打分 的函数,只要 表示,就是 ——一个在 处跳变、其余处梯度为零的阶梯函数。在丰富的 上对它做 ERM,既非凸又不可微,一般而言是 NP 难的。替代损失(surrogate loss)的策略是用一个凸的上界把 包住,这样梯度法可用、凸优化保证全局最优。三个标准候选并列如下:
- Logistic / 交叉熵损失:,光滑、概率解释清晰,本节主推。
- 合页损失(hinge):,在 处出现拐点,SVM 的几何最大间隔由此而来——留到 2.6.2 模块详细推导。
- 指数损失(exponential):,梯度对错分样本异常敏感,是 AdaBoost 的损失函数,同样留到 2.6.2。
下面这个滑块让你拖动 ,直观感受 logistic 损失为何在 时线性放大、却在 时温和趋零——这正是替代损失「上界 + 凸」的几何画像:
Formula Explorer
log(1 + exp(-z))三、Logistic 回归:ERM 即伯努利极大似然
约定 ,定义条件概率为线性打分经过 sigmoid 链接:
匹配的样本损失即交叉熵(cross-entropy):
一段算理把它接到极大似然估计(maximum likelihood estimation, MLE)上:在伯努利噪声模型 下,样本对数似然为 ,与 相差一个负号。所以 logistic 回归 ERM 就是 Bernoulli MLE。再往上一层,这是 GLM 在二项族(binomial family)+ 正则连接 logit 下的特例——完整的指数族推导与 IRLS 算法在 2.2.2 广义线性模型一节里已经做完,本节只引用,不重做。注意:这一点正是 logistic 回归不能由 OLS 在 0/1 上的最小二乘拟合替代的根本原因——后者隐含的是正态分布噪声,模型设定就不对。
四、多类推广:Softmax 与交叉熵
把 sigmoid 换成 softmax,二分类直接长成 分类:
匹配的损失是多项式交叉熵 。 时 softmax 退化为 sigmoid,两类参数 之差对应二分类那一个 ——稍后的练习要求你算一遍。
五、L2-正则与 5 折 CV:对沪深300 信号的稳定化
上一节那个 5 因子载荷在 OLS 下飘得厉害(估值与质量两个因子相关系数 0.7+,设计矩阵 的条件数偏高),正则化思路完全照搬:
L2 项把每一个 Newton 步的海森(Hessian) 加上 ,直接复用上一节那一招——这与 sklearn 的 LogisticRegression(penalty='l2') 完全等价。换成 L1 即得稀疏 logistic,继承 lasso 的角点稀疏性。把样本协方差矩阵的不稳定方向压住后,在沪深300 全样本上跑 5 折 CV,得到下表:
| 折 1 CE | 折 2 CE | 折 3 CE | 折 4 CE | 折 5 CE | 平均 | 标准误 | |
|---|---|---|---|---|---|---|---|
| 0.001 | 0.672 | 0.681 | 0.659 | 0.690 | 0.668 | 0.674 | 0.011 |
| 0.01 | 0.658 | 0.661 | 0.652 | 0.667 | 0.655 | 0.659 | 0.006 |
| 0.1 | 0.641 | 0.647 | 0.638 | 0.652 | 0.644 | 0.644 | 0.005 |
| 1.0 | 0.655 | 0.659 | 0.651 | 0.662 | 0.654 | 0.656 | 0.004 |
| 10.0 | 0.689 | 0.691 | 0.685 | 0.694 | 0.687 | 0.689 | 0.003 |
给出最低的折间平均交叉熵,载荷在中证500 上做样本外验证时方向一致——这就是 PM 在因子复盘会上要看的「稳定性」证据。
六、判别力 vs 校准度
模型给出的 有两层独立的好坏:判别力(discrimination)问「分数排序是否把 的样本排在前面」,标准探针是 AUC;校准度(calibration)问「分数的数值是否等于真正的条件概率」,标准探针是可靠性图(reliability diagram)与 Brier 分数。两者可以分离:一个 AUC = 0.75 的模型可能把所有概率压在 0.4 附近(判别强、校准差),反之亦然。完整推导留到 2.6.5 量化金融中的机器学习,本节只点名指针。
七、练习
Exercise
给定四个二分类样本 (x, y) = ((1, 0), 0), ((0, 1), 0), ((1, 1), 1), ((2, 1), 1),起始系数 beta = (0, 0)。
- 对 logistic 回归在零初值处算一步 Newton 更新,写出梯度 g 与海森 H,再算 beta_new = -H^ g。
- 在 beta_new 下算交叉熵,与「把 0/1 标签当连续值跑 OLS」得到的残差平方和对比,并解释为什么后者数值上更小却模型设定错误。
- 证明 K = 2 时 softmax 退化为 sigmoid:取 beta_2 = 0,化简 P(Y = 1 | x) = exp(beta_1^T x) / (1 + exp(beta_1^T x)),与 sigma(beta_1^T x) 一致。
提示
提示
八、模块小结与下一站
回望本模块的五节:第一节立起统计学习框架(损失、风险、ERM),第二节用偏差-方差分解把容量与泛化的关系说成一道代数恒等式,第三节把整套机器装到线性回归这一最简单实例上、并把 OLS 与 MLE 在正态分布噪声假设下对齐,第四节用正则化(岭、Lasso)与交叉验证把容量与超参数的选择钉死,第五节把响应变量从连续推到离散、用 sigmoid 与 softmax 把同一套 ERM + 正则 + CV 机制接到分类上。共同的骨架是:线性打分 + 凸损失 + 正则惩罚 + 交叉验证选超参。
下一站是 2.6.2 树方法与核方法。线性打分这一约束在那一模块被两条路径解除:决策树用轴对齐切分构造非线性边界,核方法通过把 映射到再生核希尔伯特空间(RKHS)恢复线性可分。但损失、风险、CV 与正则化的语言不变——你在本模块学的每一段算理,到那里都会原样适用。