You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EUR/USD隔日收盘价预测Pipeline模型疑似数据泄露排查求助

数据泄露问题定位

核心泄露原因:列名处理逻辑错误导致要删除的当期特征未被删除

你的series_to_supervised方法中,列名去空格的逻辑存在索引错误:

# 原错误代码
for i in range(len(names)):
    names[i-1] = names[i-1].strip()

当i遍历从0到len(names)-1时,i-1的取值为-1到len(names)-2,永远不会处理索引为0的列,还会重复处理最后一列。如果当期的Price、Open等列的列名带首尾空格,RemoveCurrentFeatures组件将无法匹配到对应列名,导致t时刻的真实Price列被保留在输入特征X中,模型只需学习y = X['Price']就能得到近乎完美的效果,这是效果反常的核心原因。
修正方案:将去空格逻辑改为

for i in range(len(names)):
    names[i] = names[i].strip()

其他可导致泄露/效果虚高的问题

  • 目标值对齐错误:你需要预测的是隔日(t+1日)的收盘价,但当前series_to_supervised生成的是t时刻的Price作为输出,且你拆分的train_y、test_y也都是t时刻的Price,相当于任务难度被人为降低,甚至相当于用当日数据预测当日收盘价,不符合你的业务预期。
  • 测试集特征转换逻辑缺陷:你将SeriesToSupervised放在Pipeline中单独处理测试集时,测试集前n_in个样本的滞后特征需要用到训练集末尾的n_in条数据,当前逻辑下这些样本会因为shift产生的NaN被删除,且如果后续加入标准化、归一化等预处理步骤,会出现测试集信息泄露到预处理参数的问题。正确的时序预处理逻辑应该是先对全量数据做滞后特征生成,再按时间切分训练集和测试集,避免跨集信息泄露。
  • X与y的对齐风险:你提前从原始数据中拆分了train_y和test_y,而Pipeline中series_to_supervised生成的特征矩阵行数会因为dropna操作发生变化,存在X与y行错位的风险,进一步导致效果评估失真。

内容的提问来源于stack exchange,提问作者Hubert Rzeminski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 23:51:02