4. 交叉验证基础与反问题适配
交叉验证是评估模型泛化能力的基本手段,但在反问题中不能照搬机器学习教材里的默认做法。反问题的样本往往带有空间相关性、时间相关性和算子诱导的平滑性,若随机打乱样本做 k 折,验证集与训练集之间会存在"信息泄漏",导致验证误差被系统性低估。本节先讲清交叉验证的基本机制,再讨论三类适配反问题的划分策略,最后给出处理样本相关性的具体做法。
k 折交叉验证的基本机制
k 折交叉验证把数据集划分为 k 个互不相交的子集,轮流以其中一个作为验证集、其余 k−1 个作为训练集,共训练 k 次,最终以 k 次验证误差的均值作为泛化误差估计,并常报告标准差以反映稳定性。设第 i 折的验证误差为 e_i,则估计量为 Ê = (1/k) Σ e_i,方差近似为 s²/k。k 的取值是偏差—方差权衡:k 小(如 5)时每次训练集较小,估计偏保守但计算便宜;k 大(如 10)时训练集接近全量,估计偏差小但计算量上升。反问题中单次训练可能就要解一个大规模优化或 PDE 约束问题,因此 k 常取 5 或 10,并配合固定随机种子保证可复现。
关键在于"折"如何划分。标准做法是随机划分,其隐含假设是样本独立同分布。反问题恰恰经常违反这一假设:相邻网格点的观测高度相关,相邻时刻的测量存在自相关,同一实验条件下采集的多个样本共享系统误差。此时随机划分会让高度相关的样本同时出现在训练集和验证集,模型只需"记住"邻近点即可在验证集上表现良好,验证误差不再是无偏估计。
留一法与时间序列划分
留一法(LOO)是 k 折在 k 等于样本数时的极端情形:每次留出一个样本做验证,其余全部训练。它的优点是训练集最大、偏差最小,且对小样本反问题尤其有吸引力;缺点是需训练 n 次,计算代价高,且当样本相关时同样存在泄漏,验证误差方差也可能很大。实践中可用闭式解或近似公式降低 LOO 的计算成本,但在非线性反演中通常仍以 5~10 折替代。
时间序列数据必须按时间顺序划分,绝不能随机打乱。常用做法是前向链式划分:用 [t_1, t_m] 训练、[t_{m+1}, t_{m+h}] 验证,然后整体前移,形成多个"过去预测未来"的折。这样验证集始终在训练集之后,模拟真实部署场景。若数据存在明显自相关,还应在训练集与验证集之间留出隔离带(gap),长度至少覆盖自相关时间尺度,避免边界处的信息渗透。
空间分块交叉验证
空间数据(如地震波场、遥感反演、地下水污染源识别)的相关性随距离衰减。随机划分会让验证点紧邻训练点,造成空间泄漏。空间分块交叉验证的做法是:先把研究区划分为若干空间块(如规则网格块或按行政区、流域划分),再以"块"为单位分配到各折,保证同一块内的所有样本要么全在训练集、要么全在验证集。块的大小应大于相关长度,块间可留缓冲区。这样验证误差才能反映模型在未观测区域的外推能力。
反问题中样本相关性的处理
识别相关性是第一步。对时间序列可计算自相关函数,取自相关降到 1/e 或首次过零的滞后作为相关时间 τ;对空间数据可拟合变差函数,得到相关长度 ℓ。划分时令块尺寸或隔离带大于 τ、ℓ,即可显著削弱泄漏。其次是"分组"思想:把同一实验批次、同一测点、同一工况下采集的样本视为一组,整组分配到同一折,这等价于分组交叉验证(GroupKFold),能防止组内共享的系统误差在训练与验证间传递。
还需要注意反问题特有的"算子平滑"效应:正演算子往往压低高频、放大低频,使得不同输入产生的观测数据高度相似。此时即便样本在参数空间相距较远,观测空间仍可能接近。评估时应同时检查参数空间与观测空间的划分一致性,必要时在观测空间做聚类后再分层划分,保证各折的观测分布均衡。
一个可执行的评估流程示例
下面给出一个可直接套用的流程片段,以二维空间反演为例(参数为示例假设,非实测):
1. 估计相关长度:对观测场拟合变差函数,得 ℓ ≈ 8 个网格间距
2. 设定块尺寸:block = 3ℓ ≈ 24 网格,块间缓冲 1ℓ
3. 划分:将研究区切成 6×6 个块,按块随机分 5 折
4. 训练/验证:每折用 4/5 的块训练,1/5 的块验证
5. 记录:每折验证 RMSE、折间均值与标准差
6. 对照:另做一次随机 5 折,比较两者误差差异
7. 判定:若分块 RMSE 明显高于随机 RMSE,以分块结果作为泛化估计
结果判读上,若分块交叉验证的误差均值明显高于随机划分,说明原评估存在乐观偏差,应以分块结果为准;若折间标准差很大,说明样本异质性强或块划分不合理,应检查块尺寸是否小于相关长度、是否存在极端块。最终报告应写明划分方式、k 值、块尺寸与隔离带参数,使评估结论可复现、可比较。