监督学习的第一决策不是选模型,而是定义学习目标——「预测什么」的选择决定了模型与交易目标之间的距离。本篇按三种目标展开,每种都含金融特有的改造。
回归:预测收益,但要「改造收益」
直接回归原始收益的问题:极端值主导损失函数(一次 +300% 的妖股拉动整个模型)、量纲不可比(不同波动水平的股票收益不可加比较)。两个标准改造:
- 波动率标准化目标:
label = future_return / realized_vol——预测「风险调整后的相对强弱」,极端值的伤害被稀释,模型学到的是「谁相对更强」而非「谁的 β 大」。这是行业最常用的目标形态; - 中性化目标:先剥离行业与市值(对收益做中性化回归取残差做标签),让模型专注特质预测(中性化的原因见因子构建 )。
损失函数的选择:MSE 对极端值敏感 → Huber 损失(抗极端值)或分位数回归(预测收益分布的条件分位数而非均值——高分位与低分位之差给出「条件区间」,直接服务仓位与止损设计)。评估口径与训练损失解耦:训练用 Huber,评估用 Rank IC / 分组单调(与交易的接口一致,见因子检验 )——训练损失低 ≠ 交易有用,评估口径必须对齐交易。
分类:胜率的幻觉
「明天涨还是跌」的二分类看似直观,实则有三重陷阱:
- 胜率 ≠ 期望:胜率 53% 的分类器,若平均赚 1% 亏 2%(盈亏比 0.5),期望为负——分类目标丢掉了幅度信息。修补:预测概率后乘以典型盈亏比折算期望,或直接改用回归/排序;
- 不平衡问题:涨跌基本 50:50 尚好,但「大涨 > 3%」类标签正例稀少——处理要用类别权重/采样,且评估用 AUC/PR 而非准确率(准确率在不平衡下是幻觉指标);
- 阈值效应:概率 0.505 算「涨」吗?——分类把连续信念压成离散决策,阈值的选择引入新的过拟合维度。更好的用法:保留概率作为连续信号(它就是又一个因子),决策交给组合层(见ML 定位 的分层)。
分类的合理用场:状态分类(regime 是高风险/低风险)与事件分类(财报超预期概率)——这些场景的输出天然是概率且有明确的决策接口(状态切换、事件筛选),不是直接交易信号。
Learning to Rank:与选股天然对齐的目标
横截面选股的本质是排序——「Top 50 vs Bottom 50」的差异才是利润来源,预测绝对收益毫无必要。Learning to Rank(LTR)直接以排序质量为目标:
- pairwise 方法(RankNet/ LambdaRank):优化「正确对 > 错误对」的序关系——「A 应排在 B 前面」的约束比「A 涨 3.2%、B 跌 1.1%」的数值约束更贴近交易需求,且对收益极端值免疫(只关心相对次序);
- listwise 方法(ListMLE):优化整列排序的似然——更接近「每天给全市场排出一个序」的真实任务;
- 工程形态:LightGBM/XGBoost 的
rank:ndcg/ LambdaRank 目标,按日期分组(group)训练——每个交易日是一个排序任务,模型学习的是截面内的相对结构。
LTR 的两个金融改造:①分组内标签用「分位数离散化」(收益转 1–5 星评级再排序)比连续收益更稳(抗极端值);②评估用 NDCG@K(Top-K 排序质量,K = 你的持仓数)而非全列指标——只考核你会交易的那一段。
三种目标的工程对照
| 维度 | 回归(标准化收益) | 分类(方向) | LTR(排序) |
|---|---|---|---|
| 信息保留 | 幅度+方向 | 仅方向(损幅度) | 仅相对次序(最抗噪) |
| 与交易的接口 | 连续因子 | 概率(需再加工) | 直接对接 Top-N 选股 |
| 极端值处理 | 需 Huber/截尾 | 需标签分箱 | 天然免疫 |
| 典型评估 | Rank IC、分组单调 | AUC、校准曲线 | NDCG@K、Top组-Bottom组差 |
| 适用场景 | 通用信号合成 | 事件/状态判断 | 横截面选股主力 |
一个综合实践的常见架构:主模型 LTR(选股排序)+ 辅助回归模型(波动率预测,服务 sizing)+ 分类模型(regime 状态,服务开关)——三个模型各管一段,接口清晰(分层的哲学见ML 定位 )。
训练纪律(三种目标通用)
- purged K-Fold:时序标签重叠期的清除与 embargo(这是金融 CV 与普通 CV 的分水岭,见机器学习策略 );
- 样本权重:老样本衰减加权(指数半衰 2–3 年)——让模型偏向近期规律(分布漂移的对策,见ML 定位 );
- 调参的记账:贝叶斯优化的每次试验都计数,绩效按尝试次数做 deflated 校正(多重检验,见统计推断 与AutoML )。
关联阅读:树模型与深度模型的选型机器学习策略 ;特征的地基特征工程 ;评估纪律Walk-Forward 。