过拟合是模型在训练集表现好但测试集效果骤降,因记住噪声而非规律;可通过早停、正则化、简化结构、特征工程、数据增强等提升泛化能力。
过拟合是机器学习中最常见的问题之一:模型在训练集上表现极好,但在测试集或新数据上效果骤降。根本原因在于模型记住了训练数据的噪声和细节,而非学到可泛化的规律。提升泛化能力,关键不是让模型“更聪明”,而是让它“更克制”。
训练过程中持续监控验证集误差,当它开始上升而训练误差仍在下降时,说明模型已开始过拟合。此时立即停止训练,能有效保留泛化能力。
sklearn.model_selection.train_test_split 划分训练集与验证集(如 8:2)EarlyStopping(monitor='val_loss', patience=10)
正则化通过在损失函数中加入惩罚项,限制模型复杂度。L1 和 L2 是最常用方式,前者倾向产生稀疏权重(可用于特征选择),后者让权重整体偏小、更平滑。
sklearn.linear_model.Lasso(L1)或 Ridge(L2)torch.nn.Dropout(p=0.3) 或 Keras 的 Dropout(0.3)
lambda(L2)、alpha(L1)参数模型越复杂,越容易拟合噪声。先从简单模型起步,逐步增加容量,只在验证性能确实提升时才升级。
max_depth、min_samples_split 等超参数模型见过的模式越多,越不容易死记硬背。对小数据集,数据增强是低成本提升泛化能力的有效手段。
转、裁剪、色彩抖动(torchvision.transforms 或 ImageDataGenerator)泛化能力不是靠调参堆出来的,而是靠对数据的理解、对模型边界的尊重,以及持续验证的习惯。不复杂但容易忽略。