2、过拟合的常见原因:数据量不足、特征维度过高、模型复杂度过大、参数过度优化

聊完了过拟合是什么,咱们得直面一个更现实的问题:它到底是怎么来的?

我见过不少刚入行的朋友,策略回测曲线漂亮得像教科书一样,一上实盘就崩。为什么?说白了,就是踩了过拟合的坑,而且往往不止一个坑。

根据我个人的经验,过拟合的根源可以归结为四大类。咱们一个一个拆开看。

2.1 数据量不足:样本太少,规律靠猜

这是最基础,也是最容易被忽视的问题。

你想想看,如果你只见过10只股票的历史走势,就总结出一套“涨停规律”,你敢信吗?

核心逻辑: 统计学里有个大数定律。样本量越小,偶然性越大。模型很容易把“噪音”当成“信号”来学习。

一个简单的判断标准:

特征数量 / 样本数量 < 0.1,相对安全。
特征数量 / 样本数量 > 0.5,高度危险。

我在项目中遇到过最典型的案例:有人用过去3个月(约60个交易日)的数据,训练了一个包含20个因子的模型。结果呢?回测年化收益80%,实盘一个月亏了15%。

为什么?60个样本,20个特征,模型几乎可以把每个样本的涨跌都“背下来”。但它背的是随机波动,不是市场规律。

数据量 特征数 风险等级 我的建议
1000+ 样本 10 可以放心使用
200 样本 20 需要交叉验证
50 样本 15 基本不可靠

避坑指南: 我曾经犯过一个错误——用日线数据训练,却用周线频率调参。样本量瞬间缩水5倍,过拟合悄无声息就来了。记住:训练数据的采样频率,要和你的交易频率匹配。

2.2 特征维度过高:维度诅咒

特征太多,不一定就是好事。

你想想看,如果你有100个技术指标,每个指标都跟股价有点关系,但关系都不大。模型会怎么做?它会拼命从这些弱关系中“挖掘”规律。结果就是:它记住的是这些指标之间的随机组合,而不是真正的市场逻辑。

这就是所谓的“维度诅咒”。

我个人习惯:特征数量尽量控制在10个以内。 超过20个,我就会非常警惕。

为什么?因为高维空间里,数据会变得极其稀疏。两个样本之间的距离会变得非常大,模型很难找到稳定的决策边界。

警告: 不要为了追求“全面”而堆砌特征。每增加一个无关特征,过拟合的风险就增加一分。我见过有人把“天气数据”也加进股票模型里……嗯,结果可想而知。

怎么解决?特征选择降维 是两大法宝。

  • 特征选择: 用相关性分析、互信息、L1正则化等方法,挑出最有用的特征。
  • 降维: 用PCA(主成分分析)等方法,把高维特征压缩成低维。

但注意:降维后的特征可解释性会变差。我个人更倾向于先用特征选择,实在不行再降维。

2.3 模型复杂度过大:越复杂,越脆弱

这个道理其实很简单:模型越复杂,它的“自由度”就越高,就越容易去拟合训练数据中的每一个细节——包括噪音。

举个例子:

  • 线性回归:只有几个参数,想拟合出花来都难。
  • 深度神经网络:成千上万个参数,理论上可以记住整个训练集。

我刚开始做量化时,特别喜欢用LSTM。觉得“深度学习嘛,肯定比线性模型强”。结果呢?回测曲线漂亮得不像话,实盘直接打回原形。

后来我明白了:对于金融时间序列这种信噪比极低的数据,简单模型往往比复杂模型更可靠。

我的经验法则:

先用线性模型或简单的决策树做基线。
如果基线效果已经不错,就别急着上复杂模型。
如果非要上复杂模型,必须配合强正则化。

正则化是什么?说白了,就是给模型的复杂度“上枷锁”。

  • L1正则化(Lasso): 让不重要的特征权重变成0,自动做特征选择。
  • L2正则化(Ridge): 让所有权重都变小,防止某个特征过度主导。

我个人习惯:L1和L2一起用(Elastic Net),效果往往最好。

2.4 参数过度优化:为了完美而牺牲泛化

这是最隐蔽,也是最容易犯的错误。

你想想看,一个策略有10个参数,每个参数你都想调到“最优”。于是你反复回测,反复调整,直到回测曲线完美无瑕。

但问题来了:你调参的过程,本质上就是在“拟合”历史数据。 你调得越精细,模型就越“记住”了历史走势的特定模式。一旦市场风格切换,这些模式就失效了。

我曾经见过一个极端案例:有人把移动平均线的参数从20调到了21,就为了多赚0.1%的年化收益。结果呢?实盘时市场一波动,这个参数直接导致策略失效。

避坑指南: 我曾经为了追求回测夏普比率从2.0提升到2.1,花了整整一周调参。后来发现,这0.1的提升完全是随机波动造成的。从那以后,我给自己定了个规矩:参数调整带来的收益提升,如果小于5%,就不值得做。

怎么避免参数过度优化?

  • 交叉验证: 把数据分成多份,轮流做训练和验证。不要只依赖一次回测结果。
  • 滚动验证: 用过去的数据训练,用未来的数据验证。模拟真实交易环境。
  • 参数敏感性分析: 看看参数微调时,策略表现是否稳定。如果稍微一变就崩,说明过拟合了。

知识体系总览

下面这张图,是我自己总结的过拟合原因分析框架。你可以把它当作一个检查清单:

过拟合的四大常见原因 数据量不足 样本太少,模型学习噪音 特征维度过高 维度诅咒,数据稀疏 模型复杂度过大 自由度太高,过度拟合 参数过度优化 反复调参,记住历史模式 解决方案方向 增加数据量 | 特征选择/降维 | 简化模型+正则化 | 交叉验证+参数敏感性分析 核心原则:追求泛化能力,而非回测完美

这四个原因,往往不是单独出现的。它们会互相叠加,让过拟合变得更严重。比如:数据量不足 + 特征维度高,那就是灾难中的灾难。

嗯,说到这里,你应该对过拟合的“病因”有了清晰的认识。下一章,咱们聊聊怎么用具体的方法来诊断和量化过拟合的程度。


公众号:蓝海数据掘金营,微信 deep3321