一一中文网

手机浏览器扫描二维码访问

第87章 加入验证集(第1页)

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

林晨盯着屏幕上那行刺眼的亏损数据,已经整整复盘了三个小时。

6.1万——这是他优化模型后投入实盘的剩余资金。

一周时间,从7万到6.1万,12%的跌幅像一记闷棍敲在头上。

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

“代码可以骗人,但逻辑不会”

。

他低声重复着自己的口头禅,鼠标在历史K线图上缓缓移动。

问题就出在验证环节。

之前的模型在回测中表现完美,是因为他用了全部历史数据来训练,又用同样的数据来验证——这就像让学生既用课本复习,又用同一本课本考试,考满分不代表真会了。

一旦遇到没见过的题目(新的市场行情),立刻露馅。

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

。

林晨关掉交易软件,打开pycharm。

屏幕上是他过去一个月写的量化系统代码,三千多行,像他亲手搭建的积木城堡。

现在,他得拆掉一部分,重新设计地基。

“训练集、验证集、测试集…”

他念叨着这三个机器学习最基本的概念,在草稿纸上画图。

传统的做法是把数据随机分成三块:70%训练,15%验证,15%测试。

但金融数据有个致命特点——时间序列依赖。

今天的股价受昨天影响,不能像图片分类那样随机打乱顺序。

“得用时间序列分割”

。

林晨在搜索引擎里输入这几个字。

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

原理很简单——假设你有2010年到2023年的数据,先用2010-2015年训练,用2016年验证;然后用2010-2016年训练,用2017年验证…以此类推,像一扇窗户在时间轴上滚动。

这样既尊重了时间顺序,又能充分验证模型在不同时期的泛化能力。

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

林晨的代码原本是直接用train_test_split函数随机分割,现在要重写数据加载模块。

他泡了杯浓茶,开始敲代码。

deftime_series_cv_split(data,train_years=5,val_years=1):

时间序列滚动窗口分割

data:按时间排序的dataFrame

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

热门小说推荐
穆玄凌仙

穆玄凌仙

关于穆玄凌仙(单女主无系统天才流)一个普通青年,因梦中无字古书而寻找,被其带到霄天界中。因家中长辈而踏入修炼界,一路前行,追寻那无数修士都梦寐以求却又如同泡影的成仙之路。诱惑迷茫危机入侵无处不在,冲破重重阻碍,与宗门一路前行。...

分手后前女友又找上门

分手后前女友又找上门

TXT下载,最新章节,无错,番外...

乘风霁月

乘风霁月

TXT下载,最新章节,无错,番外...

每日热搜小说推荐