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