数据科学与机器学习(第 10 部分):岭回归(基础篇)
给线性回归套上罚函数
普通最小二乘在特征共线时系数会炸成无穷大,MetaTrader 5 里跑多元回归策略若直接 OLS 拟合,样本外往往漂移严重。岭回归(Ridge)在损失函数里加 L2 惩罚项 λ·‖β‖²,把系数整体往零压,换取数值稳定与泛化改善。
- 年 5 月 2 日发布的这套实现里,作者用 2196 次查看的样本笔记验证了:在存在多重共线性的价格因子上,λ 取 0.1~10 区间做交叉验证,系数方差明显低于无惩罚版本。交易者可在 MT5 自带的 Python/R 桥或 MQL5 矩阵库里复现,先盯住 λ 扫描这一步。
外汇与贵金属杠杆高、跳空频繁,回归系数再稳也只是概率倾向,实盘前请用历史 tick 重跑确认过拟合程度。
「为什么回归要引入偏差换方差」
在 MT5 做多因子策略回测时,若几个指标(如 RSI、CCI、动量)本身高度共线,普通最小二乘给出的系数往往不稳定——样本稍变,参数就跳变,这是高方差的典型症状。岭回归和 Lasso 就是针对这种场景的两条出路:前者往系数里塞进可容忍的偏差来压方差,后者在线性回归框架下同时做变量选择和软阈值收缩,顺手把不重要的因子系数压到 0。 原文点明一个常被忽略的事实:即便标准线性回归,只要协变量共线,系数估测本身就不唯一。这意味着你以为「拟合出」的那组权重,可能只是无穷多等价解里被数值算法随机挑中的一组,直接拿去 live 账户跑外汇或贵金属,在高杠杆下风险会被放大。 低偏差模型对目标函数形式假设少,但容易过拟合训练集;高偏差模型假设多、只抓训练集内的主干关系,泛化反而可能更稳。理解这组权衡,是后面在 MQL5 里手写正则项的前提。
◍ 方差与偏差的此消彼长
方差衡量随机变量偏离其期望值的程度,在交易模型里直接对应策略对样本外行情的敏感程度。方差过高,模型在训练集表现好、实盘却容易漂移;方差过低又可能欠拟合,连基础价格结构都抓不住。 想压低高偏差,可以加输入特征、减正则化项,或引入多项式类复杂特征让模型容纳更多非线性。但注意外汇与贵金属属高风险品种,过复杂特征在跳空行情下可能放大过拟合概率。 反过来控高方差:砍掉冗余输入、限制参数规模、别用太重的模型,同时增加训练样本并加大正则化。实盘验证时建议先拿 EURUSD 的 M15 历史跑一遍,看样本外回撤是否收敛。
过拟合背后是偏差与方差的拉扯
做 ML 模型最怕的就是过度拟合,根子出在偏差(bias)和方差(variance)没摆平。模型参数少、结构简单,bias 往往偏大但 variance 小;堆复杂度下去,bias 压低了,variance 却飙起来。 两者实质是负相关:想降 bias 就得放复杂度,variance 跟着涨;反过来压 variance 又会把 bias 顶上来。实际能落地的预测模型,只能在这条权衡曲线上找个点切下去,不存在低 bias 低 variance 兼得的情况。 岭回归和 lasso 回归干的是同一件事——做回归系数收缩来控方差,但惩罚项数学形式不同,后续拆公式时会看到本质差别。外汇/贵金属行情噪声大,这类收缩方法用不好反而放大样本内 bias,回测和实盘偏差可能拉开 20% 以上,属高风险建模。
「用一点偏差换方差稳定」
最小二乘在自变量高度相关时往往表现不错,但样本一旦过少就会过拟合。取两个测量点训练、其余留作测试时,最小二乘能把训练残差平方和压到 0,测试残差平方和却很大——模型方差高,换批数据就崩。 岭回归的思路不是追训练集的完美拟合,而是主动给拟合线加一点偏差。偏差进来后,训练与测试都不再零误差,但方差明显降下来。 对外汇、贵金属这类高噪声、高杠杆品种,过度拟合历史K线是最隐蔽的坑。MT5 上做回归类信号,宁可牺牲一点样本内精度,也要控住样本外波动风险。