📊 过拟合 · 数学本质

偏差-方差 · 复杂度 · VC维
⚖️ 偏差-方差权衡 Bias–Variance Tradeoff

泛化误差可分解为 偏差² + 方差 + 噪声。过拟合本质是低偏差、高方差;欠拟合则是高偏差、低方差。

📉 偏差 (Bias)

  • 模型预测期望与真实值的差异
  • 高偏差 → 欠拟合 (模型太简单)
  • 例:线性回归拟合非线性数据

📈 方差 (Variance)

  • 模型对训练集微小波动的敏感度
  • 高方差 → 过拟合 (模型太复杂)
  • 例:深度决策树记忆噪声
模型复杂度 → 误差 → 偏差² 方差 总误差 最优 过拟合

✨ 过拟合区域:方差主导,总误差随复杂度增加而上升。

🧩 模型复杂度 & 泛化误差

训练误差 随复杂度单调下降,泛化误差 呈 U 型曲线。

复杂度训练误差泛化误差典型模型
低高高 (欠拟合)线性回归
中适中最低 ✅正则化Ridge
高极低 (≈0)高 (过拟合)深度树 / 神经网络

📌 控制复杂度的武器

  • 正则化 (L1/L2) — 惩罚大权重
  • 交叉验证 — 选择最佳复杂度
  • 早停法 — 迭代次数控制
  • 降维 / 特征选择
  • 集成方法 (Bagging, Dropout)
🔍 量化过拟合信号: 训练集 Sharpe 极高 ( > 3.0 ) 但样本外为负;策略参数微小变化导致绩效剧烈波动。
🧠 VC维理论 Vapnik–Chervonenkis Dimension

VC维衡量模型打散数据点的能力,是模型复杂度的理论度量。VC维越高,模型越容易过拟合。

  • 定义:模型能完全分类任意 N 个点的最大数目。
  • 线性分类器 (2D) → VC维 = 3
  • 神经网络 → VC维 ≈ O(参数数量)
  • 泛化界:
    R(f) ≤ R_emp(f) + O(√(VC_dim / m))

📐 打散 (Shatter) 示例

2D 线性分类器可打散 3 个点(任意标签组合),但无法打散 4 个点(如异或模式)。

✅ 3点 ❌ 4点
低 VC 维 简单模型 高偏差,低方差 适中 VC 维 最优泛化 偏差≈方差 高 VC 维 复杂模型 低偏差,高方差 ⚠️ 过拟合风险 VC维 ↑ → 模型复杂度 ↑ → 过拟合倾向 ↑

💡 量化策略中,VC维过高意味着策略对历史数据“记忆”过强,样本外失效。

🧪 模拟代码 偏差-方差分解 (Python)
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error

# 模拟数据: y = sin(x) + 噪声
np.random.seed(42)
X = np.linspace(0, 10, 100).reshape(-1,1)
y = np.sin(X.ravel()) + 0.2 * np.random.randn(100)

# 不同复杂度 (alpha 控制)
alphas = [100, 10, 1, 0.1, 0.01, 0.001]
bias2_list, var_list = [], []
for alpha in alphas:
    model = Ridge(alpha=alpha)
    # 多次采样估计偏差方差 (简化)
    preds = []
    for _ in range(50):
        idx = np.random.choice(100, 80, replace=False)
        X_sub, y_sub = X[idx], y[idx]
        model.fit(X_sub, y_sub)
        preds.append(model.predict(X))
    preds = np.array(preds)
    bias2 = (np.mean(preds, axis=0) - np.sin(X.ravel()))**2
    var = np.var(preds, axis=0)
    bias2_list.append(np.mean(bias2))
    var_list.append(np.mean(var))

print("复杂度(alpha) :", alphas)
print("偏差²         :", np.round(bias2_list, 4))
print("方差          :", np.round(var_list, 4))

👆 增大 alpha (强正则化) → 偏差↑ 方差↓;减小 alpha → 偏差↓ 方差↑。

📋 过拟合防范速查
维度指标 / 方法过拟合警示
偏差-方差交叉验证误差训练误差极低,验证误差高
模型复杂度参数数量 / 自由度参数 >> 样本量
VC维打散能力VC维 > 样本量/10
正则化L1/L2 系数权重绝对值极大
回测样本外 Sharpe样本内 > 2.0,样本外 < 0.5