标签有的五天有的十天,验证集边界怎样逐条清除重叠
验证边界应检查每条标签的实际信息起止区间,只要训练标签与任一测试信息区间相交,就从本折训练候选里清除。固定隔开五条记录,无法替代不等长标签的逐条检查。下面先把“重叠”变成一个可复算布尔条件,再讨论清除清单是否适合真正的预测流程。
十二条区间究竟表示什么
本例为构造样本,日期用连续实验交易日编号,不对应真实交易所日历。每条记录的start是标签计算使用的第一个信息日,end是最后一个信息日,二者均包含;不是把信号生成日含糊地当作标签开始日。九条训练候选在测试信息开始前启动,编号十至十二为固定测试记录。测试标签分别用到第二十至二十五日、第二十二至三十日、第二十四至二十六日。我们只核查这一组信息重叠,没有训练任何收益预测模型。
每条训练标签可能因止盈、止损、事件到期等原因具有不同结束时点。本例只输入已经冻结的区间,不利用最后收益好坏决定删留。若标签终点是事后由路径决定的,区间清除可以用于离线评估,但在线模型仍只能用训练当时已成熟的标签。结束时点已知和标签可得不是同一句话,后者还要加入数据发布与处理延迟。
下表三列交集分别对应测试十、十一、十二。数字一表示闭区间相交;测试本身的行保留在表里方便核对边界,但不进入训练保留清单。固定gap对照按标签起点决定,删去start大于等于十五的训练候选,明确不是库函数按行计数的实现。
| 记录 | 标签首日 | 标签末日 | 与测试10/11/12相交 | 身份 | 逐条清除 | 固定起点gap5清除 |
|---|---|---|---|---|---|---|
| 1 | 1 | 6 | [0, 0, 0] | train_candidate | 否 | 否 |
| 2 | 4 | 14 | [0, 0, 0] | train_candidate | 否 | 否 |
| 3 | 8 | 21 | [1, 0, 0] | train_candidate | 是 | 否 |
| 4 | 10 | 11 | [0, 0, 0] | train_candidate | 否 | 否 |
| 5 | 12 | 15 | [0, 0, 0] | train_candidate | 否 | 否 |
| 6 | 14 | 24 | [1, 1, 1] | train_candidate | 是 | 否 |
| 7 | 16 | 17 | [0, 0, 0] | train_candidate | 否 | 是 |
| 8 | 18 | 19 | [0, 0, 0] | train_candidate | 否 | 是 |
| 9 | 19 | 22 | [1, 1, 0] | train_candidate | 是 | 是 |
| 10 | 20 | 25 | [1, 1, 1] | test | 否 | 否 |
| 11 | 22 | 30 | [1, 1, 1] | test | 否 | 否 |
| 12 | 24 | 26 | [1, 1, 1] | test | 否 | 否 |
相交判定怎样逐项执行
对训练区间[a,b]与测试区间[c,d],条件是max(a,c)小于等于min(b,d)。例如第三条[8,21]碰到测试十[20,25],因为交集是第二十至二十一日;它不碰到后两个测试区间。第六条[14,24]则同时碰到三个测试区间,不能因为起点早于十五就放行。第八条[18,19]在二十日前已经结束,与三个测试都不相交,即使它离测试起点很近,也没有本例定义的信息共用。
执行时先建立测试区间数组,再为每个训练候选算三次条件,最后对这一行取“任意一个成立”。不能对所有区间的平均长度取整后统一减五,也不能只比较训练结束日与测试起点之差而忽略开始日。若测试集合包含不连续的事件,取最早起点到最晚终点的整个包络虽然更保守,却可能多删夹在空白中的训练记录;要保存逐个测试区间,才能解释误删来自哪一种近似。
本例逐条清除三、六、九,留下的一、二、四、五、七、八共六条。测试十至十二始终固定,不因训练样本不够而向后移动。清除日志应同时保存相交对象与原因,而不是只留下一个最终行号数组,否则后续更换标签定义时无法区分真正重叠和旧配置遗留。
固定五日为什么既漏删又误删
固定起点法删七、八、九,只有第九条与逐条结果一致。第三条和第六条起点较早,却拖着较长的标签尾部进入测试信息范围,被漏掉;第七条和第八条的标签已经结束,却因起点靠近边界被误删。固定规则碰巧也删除三条,因此“删除数量相同”不能证明名单相同。应该比较记录身份集合,并分别输出漏删集合与误删集合。
如果条件改成所有训练标签都在起点后固定五个交易日结束,固定起点隔离才有机会等价于逐条规则,但仍需统一闭合端点、信号时点和额外可得延迟。例如结束日恰等于二十,按本例闭区间就是相交,若另一份表改成左闭右开,必须同时重写输入定义与比较运算,不能只把小于等于换成小于让结果变漂亮。区间右端缺失时,应标记未成熟或拒绝生成训练折;把缺失当作起点会制造最危险的短标签假象。
purge通过之后还要核查哪些字段
第一,核对标签使用的原始行情时间,而非文件落盘时间。盘后修订的价格、复权口径和停牌期间的标签终止规则,都可能改变信息区间。第二,核对特征是否只用了预测时点之前的数据;本表完全没有检查特征窗口,训练标签不重叠不能为未来财报回填开脱。第三,确认没有把测试之后的样本送回训练;区间不相交也不代表站在过去能拿到未来。本文九条候选均在测试前启动,仅演示清除条件,不授权双向训练。
第四,先计算完每折成熟且不相交的候选,再决定训练是否达到最低规模。清除后样本太少,应如实记作该折无法估计,不能悄悄缩短预测期或降低隔离宽度。第五,把停牌和缺失日期映射到统一交易时钟;自然日差与交易日差不是同一单位。区间法需要真实时点,它不会自行补齐缺失的数据血缘。
清除标签交集也不等于embargo。若设计允许用测试之后的数据训练,额外的后置隔离需要根据特征记忆和时间依赖另设政策;本例没有这种训练结构,不能把三条清除清单叫作完整purge加embargo协议。它能证实的是给定闭区间下名单正确,不能证实市场样本相互独立或模型未来有效。
资料支持与可复核边界
TimeSeriesSplit官方参数文档的gap定义支持“库参数按样本计数”这项区分,并未自动实现本文变长标签算法。预处理泄漏说明支持预测时点之外信息不能进入模型构建的原则;相交矩阵和固定起点反例是本页独立构造计算。复核者只需从十二对端点重算三十六个布尔值,再取前九行的并集,无须接受任何框架的黑箱返回值。
交集名单如何进入后续训练
把保留清单真正交给拟合函数之前,还应检查清除记录没有通过缓存的标准化器、特征筛选器或早停日志重新进入训练。标签行被删而预处理仍沿用删除前拟合结果,信息可能继续留在参数中。每折应保存候选集、清除集和实际拟合集三份身份集合,并核对实际拟合集等于成熟条件与不相交条件共同筛出的结果。这个集合核对不涉及模型好坏,却能发现“日志删了、训练没删”的工程错误。
继续核对研究流程时,可回到时序交叉验证母题;遇到相邻任务,再分别查看涨跌预测概率Brier校准、面板数据gap按日期切分。本文的滚动验证工具链接仅作基础流程说明,新增审计和统计计算由本页独立表格与模型交付。
道积君编辑组,AI辅助编写与核算。本文为构造教学实验,来源说明方法,数字由明示输入计算,不代表真实策略、收益预测或统计审定。
复算资料
本篇编号DJ4-056。下载Python复算脚本(文本)与构造输入输出JSON,按编号核对本篇。脚本改存为.py后可用Python标准库运行,数据不是实际用户记录。