1. 过拟合现象
定义:在机器学习中,当模型在训练集上表现良好,但在测试集(或新数据)上表现很差时,称为过拟合。这是由于模型过于复杂,学习了训练集中的噪声和细节,而非数据背后的真实规律而造成的。
2. 应对方法
2.1 增加训练集
核心思路:通过增加训练样本的数量,让模型学习更广泛的数据分布,从而减少过拟合的风险。
还有就是可以根据问题的特性,通过变换已有数据来生成新的训练样本。例如,在图像识别中,可以对图片进行翻转、裁剪、缩放等操作。但需注意,增强方式需符合数据特性,避免引入不合理的噪声。
2.2 限制模型复杂度
核心思路:通过减少模型的参数数量或采用更简单的模型结构,来限制模型的灵活性,防止其过度拟合训练数据。
- 具体方法:
- 减少参数:在深度学习中,减少神经网络的层数或每层神经元的数量。
- 共用参数:让模型中的某些参数共享相同值。
- 选择适合的模型架构:如使用卷积神经网络(CNN)替代全连接网络(fully-connected network),因为CNN通过卷积层等结构对模型灵活性进行了限制,更适合处理图像数据。
- 特征选择:减少输入数据的特征数量,只保留对预测目标有重要影响的特征。
2.3 使用正则化技术
- 早停(Early Stopping):在训练过程中监控验证集上的损失,当验证集损失开始上升时停止训练,防止模型在训练集上过拟合。
- 正则化(Regularization):在损失函数中加入正则化项,如L1或L2正则化,以惩罚模型参数的复杂度,从而引导模型学习更简单的表示。
- 丢弃法(Dropout):在训练过程中随机丢弃一部分神经元(及其连接),使模型每次训练时看到的网络结构不同,从而减少神经元之间的共适应关系,提高模型的泛化能力。
3. 平衡模型复杂度
- 过拟合与欠拟合:模型复杂度太低会导致欠拟合(模型偏差大),而模型复杂度太高则会导致过拟合。
- 选择中庸的模型:通过交叉验证等方法,选择一个既能在训练集上表现良好,又能在验证集上保持较好泛化能力的模型。
4. 交叉验证
- 定义:将训练集进一步划分为训练子集和验证子集,通过多次训练-验证过程,评估不同模型或参数设置的效果,并选择最佳模型。避免在测试集上直接调整模型,减少过拟合风险,提高模型在未知数据上的表现。
其常用方法由留一验证,k折交叉验证,分层交叉验证等。 - k折交叉验证图如下: