您的位置:首 页 > 言情小说 > AI时代:码农的涅盘重生 > AI时代:码农的涅盘重生目录 > 第87章 加入验证集(第1页/共2页)
返回目录 | 加入书签 | 推荐本书 | 收藏本页

AI时代:码农的涅盘重生 第87章 加入验证集(第1页/共2页)


****3*6*0**小**说**阅**读**网**欢**迎**您****

请用户自行鉴定本站广告的真实性及其合法性,本站对于广告内容不承担任何责任。

    凌晨两点,城中村的出租屋里只有键盘敲击声和机箱风扇的低鸣。

    林晨盯着屏幕上那行刺眼的亏损数据,已经整整复盘了三个小时。6.1万——这是他优化模型后投入实盘的剩余资金。一周时间,从7万到6.1万,12%的跌幅像一记闷棍敲在头上。

    但奇怪的是,此刻他心里没有恐慌,反而异常冷静。

    “代码可以骗人,但逻辑不会”。他低声重复着自己的口头禅,鼠标在历史K线图上缓缓移动。

    问题就出在验证环节。

    之前的模型在回测中表现完美,是因为他用了全部历史数据来训练,又用同样的数据来验证——这就像让学生既用课本复习,又用同一本课本考试,考满分不代表真会了。一旦遇到没见过的题目(新的市场行情),立刻露馅。

    这就是机器学习里臭名昭着的“过拟合”。

    林晨关掉交易软件,打开PyCharm。屏幕上是他过去一个月写的量化系统代码,三千多行,像他亲手搭建的积木城堡。现在,他得拆掉一部分,重新设计地基。

    “训练集、验证集、测试集…”他念叨着这三个机器学习最基本的概念,在草稿纸上画图。

    传统的做法是把数据随机分成三块:70%训练,15%验证,15%测试。但金融数据有个致命特点——时间序列依赖。今天的股价受昨天影响,不能像图片分类那样随机打乱顺序。

    “得用时间序列分割”。林晨在搜索引擎里输入这几个字。

    凌晨三点,他找到了解决方案:滚动窗口交叉验证。

    原理很简单——假设你有2010年到2023年的数据,先用2010-2015年训练,用2016年验证;然后用2010-2016年训练,用2017年验证…以此类推,像一扇窗户在时间轴上滚动。这样既尊重了时间顺序,又能充分验证模型在不同时期的泛化能力。

    理论懂了,实现起来又是一堆坑。

    林晨的代码原本是直接用train_test_split函数随机分割,现在要重写数据加载模块。他泡了杯浓茶,开始敲代码。

    def time_series_cv_split(data, train_years=5, val_years=1):

    时间序列滚动窗口分割

    data: 按时间排序的DataFrame

    返回: [(train_idx, val_idx)] 列表

    splits = []

    start_idx = 0

    while start_idx + train_years + val_years <= len(data):

    train_end = start_idx + train_years

    val_end = train_end + val_years

    train_indices = list(range(start_idx, train_end))

    val_indices = list(range(train_end, val_end))

    splits.append((train_indices, val_indices))

    start_idx += 1 # 每次滚动一个时间单位

    return splits

    写完后,他跑了一遍测试。用A股沪深300指数2010年到2023年的日线数据,设置5年训练1年验证,程序生成了8组不同的训练-验证组合。

    “这样应该够了”。林晨揉了揉发酸的眼睛。

    但验证集只是第一步。真正的考验在样本外测试——用模型完全没见过的、最新的数据进行最终评估。

    林晨做了个决定:把2023年全年数据留出来,作为最终的测试集。用2010-2022年的数据做滚动交叉验证,选出在多个验证期表现最稳定的模型参数,最后再用2023年的数据看真实效果。

    这个流程,专业量化机构叫“Walk-Forward Analysis”(向前步进分析),是避免过拟合的黄金标准。

    凌晨四点,程序开始运行。

    屏幕上的进度条缓慢移动,每一次滚动窗口分割,模型都要重新训练一次。8组验证,意味着要训练8次模型。林晨那台三年前的游戏本风扇狂转,CPU温度飙升到85度。

    他起身走到窗边。城中村的凌晨很安静,远处偶尔有外卖骑手的电动车驶过。楼下那家潮汕粥铺已经亮起灯,准备早市的食材。

    半年前,他还在跨境电商公司加班到这个时候,为了一个促销活动页面。现在,他为一个验证流程的代码熬夜。

    身份变了,但那种沉浸在心流状态的感觉,没变。

    一个小
>>>点击查看《AI时代:码农的涅盘重生》最新章节