特征与标签:把选股问题翻译成机器学习的语言
我的掌握程度:
先掌握这个答案
翻译规则:特征(X)=因子矩阵——每行=(某日,某股),每列=一个因子值(阶段5的成果直接接入);标签(y)=要预测的目标,主流选择:①未来N日收益(回归);②未来收益的横截面分位数/涨跌方向(分类,更稳健);③风险调整收益(超额/波动)。标签三陷阱:N太短噪声大、N太长样本重叠严重(相邻标签共享未来,有效样本数骤减);不含超额的标签让模型学成「预测大盘」(择时任务混入选股任务);用对数还是简单收益要与损失函数匹配。样本有效性:5000股×10年=1200万行的表面繁荣,实际独立信息量小得多(横截面相关+时间重叠)。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
先赢过一个简单基线
固定数据与验证,比较等权、线性模型或朴素预测,再评估复杂模型的边际收益。记录重训练频率、预测延迟、漂移和费用;更高拟合分数不等于更高净收益。
本阶段实战方法 · 把验证流程当作模型的一部分
训练选股模型或使用另类数据时,先保证训练过程没有接触预测时不可得的信息。
- 定义每个样本的特征可得时间和标签覆盖区间,再按预测场景设计时间切分。
- 归一化、缺失填充、特征选择和调参只在训练集拟合;重叠标签要按实际区间purge。
- 用朴素基线和多段滚动样本外比较,报告成本、稳定性、漂移与全部实验次数。
使用边界
- 排行榜或验证集反复用于挑模型后也会过拟合;留一份最终测试集。
- 随机切分不是所有问题都禁止,但金融未来预测必须尊重时点和标签重叠,说明验证目标。
背景 · 从一个困惑说起
ML模型不认识「股票」也不认识「涨跌」——它只认识一张数值表:每行一个样本,一些列是输入(特征X),一列是输出(标签y)。让模型帮你选股的第一步,是把整个选股问题严谨地翻译成这张表。翻译的每个决定(标签怎么定、样本怎么取)都直接决定模型学到什么。
由此产生的问题
特征和标签的金融化定义是什么?标签设计的常见选择与陷阱?样本的「有效性」怎么评估?
核心概念
翻译规则:特征(X)=因子矩阵——每行=(某日,某股),每列=一个因子值(阶段5的成果直接接入);标签(y)=要预测的目标,主流选择:①未来N日收益(回归);②未来收益的横截面分位数/涨跌方向(分类,更稳健);③风险调整收益(超额/波动)。标签三陷阱:N太短噪声大、N太长样本重叠严重(相邻标签共享未来,有效样本数骤减);不含超额的标签让模型学成「预测大盘」(择时任务混入选股任务);用对数还是简单收益要与损失函数匹配。样本有效性:5000股×10年=1200万行的表面繁荣,实际独立信息量小得多(横截面相关+时间重叠)。
为什么需要它
①标签即任务定义:标签定为「未来5日收益」模型就学短线,「未来60日」学波段——研究意图必须先于代码;②重叠标签是金融ML特有的大坑:相邻N日标签共享未来信息,随机交叉验证的「高分」全是泄漏(时序CV专门治它,后续题目);③特征质量大于模型复杂度(Kaggle十年实证):花在特征工程上的一小时胜过调参一天。
实际应用场景
标准样本表结构:index=(date,code),columns=[factor1..factorN, label];构造代码:未来收益=prices.shift(-N)/prices-1——注意负号shift是「向未来取」,训练时必须与验证时间严格切分。
与之前知识的联系
阶段5的因子库成为特征列;阶段3的回归/分类概念在此落地;q-502的前视防御延伸到标签端(标签天然「在未来」)。下一题进入模型选择与验证设计。
⚠ 常见误解
- 标签用未来N日收益就够了:N的选择是「信号半衰期」与「样本有效性」的权衡,需要实验而非默认
- 样本越多越好:重叠+相关让有效样本远小于表面数;盲目堆数据不如改善特征与验证
- 标签可以直接用当日收益:那是「用今天预测今天」——最粗暴的前视(q-502的ML版)
🛠 本题实践任务
为你的立项书(q-701)补全标签设计:写出N取多少、用收益还是分位数、为什么。并用一张表画出你的样本结构(行=日期×代码,列=你的因子清单+标签)。
💡 提示(先自己想5分钟再看)
N的参考:短线因子5-10日、量价周频10-20日、基本面月频40-60日;理由要提到换手与样本重叠的权衡。
✅ 验收标准
完整的标签设计说明+样本结构表。这份文档是你ML项目的「需求说明书」。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(因子、监督学习概念、超额收益),再用案例、公式和代码帮助理解。此功能需要先启用服务。