机器学习 —— 过拟合

📅 发布时间:2026/7/8 17:13:04 👁️ 浏览次数:
机器学习 —— 过拟合
摘要机器学习中的过拟合是指模型过度拟合训练数据中的噪声而非潜在规律导致在新数据上表现不佳。常见于复杂模型如深度神经网络其成因包括模型复杂度过高、训练数据不足或缺乏代表性、缺少正则化等。防止过拟合的技术包括交叉验证、早停法、正则化和丢弃法。示例代码展示了如何在Keras中实现早停法和L2正则化来防止过拟合通过监控验证损失和添加权重惩罚项有效提升模型的泛化能力。目录机器学习 —— 过拟合过拟合的成因防止过拟合的技术示例代码说明输出结果机器学习 —— 过拟合过拟合是指模型学习到训练数据中的噪声而非数据背后的潜在规律。这会导致模型在训练数据上表现优异但在新数据上表现糟糕。本质上模型对训练数据过度特化无法泛化到新场景。过拟合在使用复杂模型如深度神经网络时尤为常见。这类模型参数众多能与训练数据高度贴合但往往会牺牲泛化能力。过拟合的成因导致过拟合的因素主要有以下几点模型复杂度过高如前所述复杂模型比简单模型更易过拟合因其参数更多能更紧密地贴合训练数据。训练数据不足当训练数据量有限时模型难以学习到真正的潜在规律反而可能习得数据中的噪声。训练数据缺乏代表性若训练数据无法反映模型要解决的问题本质模型可能学到无关模式无法泛化到新数据。缺乏正则化正则化是通过在损失函数中添加惩罚项来防止过拟合的技术若缺少这一惩罚项模型更易发生过拟合。防止过拟合的技术机器学习中常用的防过拟合技术包括交叉验证Cross-validation通过将数据划分为多个子集轮流用每个子集作为验证集、其余子集作为训练集评估模型在未见过数据上的表现确保模型的泛化能力。早停法Early stopping在模型训练完全收敛前停止训练通过监控验证误差当误差不再改善时终止训练避免模型过度拟合。正则化Regularization在损失函数中添加惩罚项促使模型采用更小的权重避免拟合训练数据中的噪声。丢弃法Dropout适用于深度神经网络的技术训练时随机 “丢弃” 部分神经元迫使剩余神经元学习更稳健的特征从而防止过拟合。示例以下是使用 Keras 实现早停法与 L2 正则化的 Python 代码from keras.models import Sequential from keras.layers import Dense from keras.callbacks import EarlyStopping from keras import regularizers # 定义模型架构 model Sequential() # 第一层64个神经元ReLU激活函数添加L2正则化惩罚系数0.01 model.add(Dense(64, input_dimX_train.shape[1], activationrelu, kernel_regularizerregularizers.l2(0.01))) # 第二层32个神经元ReLU激活函数添加L2正则化惩罚系数0.01 model.add(Dense(32, activationrelu, kernel_regularizerregularizers.l2(0.01))) # 输出层1个神经元Sigmoid激活函数适用于二分类任务 model.add(Dense(1, activationsigmoid)) # 编译模型损失函数为二元交叉熵优化器为Adam评估指标为准确率 model.compile(lossbinary_crossentropy, optimizeradam, metrics[accuracy]) # 设置早停回调监控验证损失连续5个epoch无改善则停止训练 early_stopping EarlyStopping(monitorval_loss, patience5) # 训练模型使用训练集划分20%作为验证集最大训练100个epoch批次大小为64启用早停回调 history model.fit(X_train, y_train, validation_split0.2, epochs100, batch_size64, callbacks[early_stopping])代码说明代码中使用 Keras 的 Sequential 模型搭建网络架构前两层通过kernel_regularizer参数添加 L2 正则化借助EarlyStopping类设置早停回调监控验证损失若连续 5 个 epoch 无改善则终止训练。训练时划分 20% 数据作为验证集批次大小设为 64最大训练 100 个 epoch。输出结果运行代码后将得到类似以下的输出省略中间 epochplaintextTrain on 323 samples, validate on 81 samples Epoch 1/100 323/323 [] - 0s 792us/sample - loss: -8.9033 - accuracy: 0.0000e00 - val_loss: -15.1467 - val_accuracy: 0.0000e00 Epoch 2/100 323/323 [] - 0s 46us/sample - loss: -20.4505 - accuracy: 0.0000e00 - val_loss: -25.7619 - val_accuracy: 0.0000e00 Epoch 3/100 323/323 [] - 0s 43us/sample - loss: -31.9206 - accuracy: 0.0000e00 - val_loss: -36.8155 - val_accuracy: 0.0000e00 ...持续输出直至训练停止通过结合早停法与 L2 正则化可有效防止模型过拟合提升其泛化性能。