4. Pointwise方法
在Learning to Rank的三类建模范式中,Pointwise是最直观、最容易落地的一类。它把排序问题“拆解”为对单个股票(或单个样本)的独立预测问题:模型只看一只股票自身的特征,输出一个分数,再按分数从高到低排序选股。理解Pointwise,是理解后续Pairwise、Listwise方法为何被提出的起点。
一、核心原理:把排序还原为逐样本预测
Pointwise的核心假设是:如果每只股票的“好坏”都能被准确打分,那么按分数排序自然就得到好的组合。它不直接建模股票之间的相对关系,而是把训练数据组织成“特征 → 标签”的监督学习样本,用回归或分类的方式学习一个打分函数 f(x)。
根据标签形态不同,Pointwise主要有两种思路:
- 回归思路:标签是连续的未来收益(或超额收益、风险调整收益)。模型拟合收益数值,预测值即打分。常用损失为均方误差MSE、Huber损失。
- 分类思路:标签是离散的涨跌方向或分档(如涨/跌、前30%/中间/后30%)。模型输出概率或类别,用概率作为打分。常用损失为交叉熵、Focal损失。
两种思路的共同点是:训练时样本相互独立,排序信息只在预测后通过排序体现,而不进入损失函数。这正是Pointwise与Pairwise/Listwise最本质的区别。
二、方法流程:从标签构造到组合生成
在选股场景中,Pointwise的完整流程通常包含以下步骤:
- 确定预测目标:选择未来N日收益、超额收益、是否跑赢基准等作为标签。
- 构造样本:每个“股票-日期”组合作为一个样本,特征包括估值、动量、质量、情绪等因子。
- 选择损失函数:回归用MSE/Huber,分类用交叉熵/Focal。
- 训练模型:常用LightGBM、XGBoost、神经网络等。
- 预测打分:对当前股票池逐只打分。
- 排序选股:按分数排序,取Top-K构建组合,定期调仓。
下面是一个用LightGBM做回归式Pointwise选股的简化配置示例:
# Pointwise回归选股:LightGBM配置示例
params = {
"objective": "regression", # 回归目标
"metric": "mse", # 均方误差
"learning_rate": 0.05,
"num_leaves": 63,
"feature_fraction": 0.8,
"bagging_fraction": 0.8,
"bagging_freq": 5,
"min_data_in_leaf": 200,
"lambda_l2": 1.0
}
# 标签:未来20日超额收益
# 特征:估值、动量、质量、波动率等因子
# 训练后按预测分数排序,取Top 50等权持有
三、损失函数对比与适用场景
不同损失函数对Pointwise选股效果影响显著,下表给出常见选择的对比:
| 损失函数 | 标签类型 | 优点 | 局限 | 选股适用性 |
|---|---|---|---|---|
| MSE | 连续收益 | 简单、可导、收敛稳定 | 对极端收益敏感,易被噪声主导 | 适合收益分布较平稳的宽基选股 |
| Huber | 连续收益 | 对异常值更鲁棒 | 需调阈值,训练稍慢 | 适合收益厚尾、含涨停跌停的A股 |
| 交叉熵 | 涨跌/分档 | 输出概率,便于阈值控制 | 分档边界人为设定,信息有损 | 适合方向性择时或二分类选股 |
| Focal | 类别不平衡 | 聚焦难分样本 | 参数敏感,易过拟合 | 适合极端行情下少数强势股识别 |
四、适用性与局限:为什么Pointwise不是终点
适用性方面,Pointwise在以下场景表现良好:
- 股票池较大、因子维度高,需要快速建立基线模型;
- 预测目标本身接近绝对收益,而非相对排序;
- 需要输出可解释的分数用于风控和仓位管理。
局限方面,Pointwise存在三个关键问题:
- 目标错位:训练优化的是单样本预测精度,而选股真正关心的是组合内相对排序。预测误差小不等于排序正确。
- 忽略截面信息:同一日不同股票之间的相对强弱关系没有被建模,模型可能对整体市场风格变化不敏感。
- 标签噪声敏感:单只股票的未来收益受个股事件影响大,噪声高,逐样本回归容易过拟合。
一个典型的复盘场景是:某模型在训练集上MSE仅0.002,但分组回测中Top组与Bottom组收益差几乎为零。排查后发现,模型预测值集中在均值附近,排序区分度不足。这正是Pointwise“重预测、轻排序”的典型表现,也是后续Pairwise和Listwise方法要解决的核心问题。
理解Pointwise的边界,才能明白:它不是不好,而是它优化的目标与选股真正需要的排序目标之间存在一道鸿沟。这道鸿沟,正是Learning to Rank后续方法演进的动力。