You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

神经网络回归:训练MAE与交叉验证结果差异的原因咨询

训练MAE与交叉验证MAE差异巨大的原因及交叉验证解读要点

问题背景

我用Keras实现神经网络做回归任务,模型训练1000轮后,训练集最后一轮的Mean Absolute Error(MAE)为3.8,但用cross_validate函数进行交叉验证时,得到的MAE值远高于该数值。

简化版代码

from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import cross_validate
from keras.models import Sequential
from keras.layers import Dense

# ... (数据预处理步骤)

def build_regressor():
    # ... (模型架构定义)

regressor = KerasRegressor(build_fn=build_regressor, batch_size=10, epochs=1000)
scoring = ['neg_mean_absolute_error']
results = cross_validate(estimator=regressor, X=x_train_scaled, y=y_train, cv=5, scoring=scoring)

交叉验证结果

# 转换为正MAE后的结果
array([13.15011832,  9.84094066,  9.6454553 , 11.37415547, 13.12120939])

差异巨大的核心原因

  • 严重过拟合:1000轮训练很可能让模型过度拟合训练集的细节和噪声,训练MAE是模型在完全见过的数据上的最优表现,但交叉验证用的是模型从未接触过的验证折,过拟合的模型泛化能力极差,导致验证MAE飙升。
  • 数据预处理泄露:如果你的数据缩放(归一化/标准化)是在整个x_train_scaled上完成的,而不是在每个交叉验证折内单独做“训练折拟合缩放器→验证折用同一缩放器转换”,就会导致验证集的统计信息提前泄露给模型,训练时模型看到的“训练数据”包含了验证集的信息,交叉验证时的验证折才是真正的未见过数据,两者表现自然差距极大。
  • 无早停的过度训练:你固定训练1000轮,没有加入早停(EarlyStopping)回调。多数情况下模型在几百轮就已收敛,继续训练只会让模型在训练集上过度优化,进一步加剧过拟合,交叉验证时每个折的模型都经历了这种过度训练,验证MAE自然居高不下。
  • 训练MAE的局限性:训练集最后一轮的MAE是模型在全训练集上的表现,但训练过程是批次更新的,最后一轮的数值可能是模型对训练集的“完美适配”,但泛化能力早已在更早的轮次达到峰值后下降。

解读交叉验证结果的关键因素

  • 均值与波动幅度:你的交叉验证MAE均值约为11.4,同时结果在9.6到13.1之间波动,说明模型泛化能力不稳定,要么是数据划分存在偏差,要么是模型对数据分布变化过于敏感。
  • 折间结果一致性:不同折的MAE差异明显,需要检查数据划分是否合理——回归任务可以尝试按目标变量分桶做分层划分,避免某一折的样本分布与整体差异过大;另外也要排查是否存在异常样本干扰部分折的结果。
  • 指标正确性:确认你对neg_mean_absolute_error的转换是正确的(取负得到正MAE),同时确认MAE是否符合你的任务需求(比如是否更关注大误差的惩罚,此时MSE可能更合适)。
  • 训练随机性影响:神经网络的权重初始化、批次顺序都有随机性,每个交叉验证折的模型都是重新初始化训练的,结果波动可能部分来自于此。可以设置全局随机种子(比如numpy.random.seed()、tensorflow.random.set_seed())来固定随机性,减少结果波动。
  • 基准模型对比:把你的神经网络结果和简单基准模型(比如线性回归、决策树回归)的交叉验证MAE对比,如果基准模型表现更好,说明你的神经网络架构或训练策略存在问题,要么是过拟合,要么是模型复杂度不匹配任务。

内容的提问来源于stack exchange,提问作者Salah Amani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:07:22