在机器学习中,过拟合是一个常见问题,具体表现为模型在测试数据上泛化不佳。那什么时候会出现过拟合?模型性能的高方差是过度拟合问题的一个指标。模型的训练时间或其架构复杂性可能会导致模型过拟合。结果就是模型就会学习数据集中的噪声或无用信息。
本文介绍过度拟合与欠拟合的区别、如何检测过拟合以及避免过拟合的技巧来帮助认识过拟合。
过拟合与欠拟合的区别
当数据存在高偏差时会发生欠拟合,结果会导致模型无法在训练数据中正常工作。
欠拟合发生在:
- 使用包含噪音或异常值的不干净训练数据
- 模型具有高偏差。
- 场景比较复杂,但模型过于简单。
当模型具有高方差时会发生过拟合,即模型在训练数据上表现良好但在评估集中表现不准确。
过拟合发生在:
- 用于训练的数据未被清理并且包含垃圾数据,导致模型捕获了训练数据中的噪声。
- 模型具有高方差。
- 训练数据量不够,模型在有限的训练数据上训练了几个epoch。
- 该模型的架构有几个堆叠在一起的神经层。深度神经网络很复杂,需要大量时间进行训练,并且经常导致训练集过度拟合。
如何检测过拟合
过度拟合模型的主要指标之一是它无法泛化数据集。因此检测模型过拟合最简单方法是分割数据集。
其中,K折交叉验证是最常用的检测过度拟合的技术之一。K折交叉验证将数据点分成k个大小相等的子集,称为"折"。一个拆分子集作为测试集,其余的折叠将训练模型。该模型在有限样本上进行训练,以估计模型在未使用的数据预测时的总体表现。每一折作为验证集。在所有迭代之后,我们对分数进行平均以评估整体模型的性能。
避免过拟合的10种技巧
1.使用更多数据进行训练
随着训练数据的增加,要提取的关键特征变得突出。该模型可以识别输入属性和输出变量之间的关系。这种方法的前提是输入模型的数据是干净的,否则,会加剧过拟合问题。
2.数据增强
使用更多数据进行训练的另一种方法是数据增强,每次模型处理样本数据时,数据增强都会使样本数据看起来不同。
3.向输入数据添加噪声
另一个与数据增强类似的选项是向输入和输出数据添加噪声。向输入添加噪声可使模型稳定,而不会影响数据质量和隐私,同时向输出添加噪声可使数据更加多样化。噪声添加应在一定范围内进行,以免使数据不正确或差异太大。
4.特征选择
每个模型都有几个参数或特征,具体取决于层数、神经元数量等。该模型可以检测许多冗余特征或可由其他特征确定的特征,从而导致不必要的复杂性。我们很清楚,模型越复杂,模型过拟合的可能性就越大。
5.交叉验证
完整的数据集被分成几部分,在标准的K折交叉验证中,我们需要将数据分成k折。然后,我们在k-1折叠上迭代训练算法,同时使用剩余的折作为测试集。这种方法允许我们调整神经网络或机器学习模型的超参数对其进行测试。
6.简化数据
模型复杂性是导致过度拟合的主要原因之一。数据简化方法用于降低模型的复杂性使其足够简单而不会过度拟合。其中过程包括修剪决策树、减少神经网络中的参数数量等。
7.正则化
如果模型过于复杂也发生过度拟合,因此可以减少特征数量。如果不确定要从模型中删除哪些特征,那么像L1这样的正则化方法会很有帮助。正则化对具有较大系数的输入参数应用惩罚,随后限制模型的方差。
8.合奏学习
它是一种机器学习技术,可以结合多个基本模型来生成一个最佳预测模型。常见的集成方法包括bagging和boosting,它们可以防止过度拟合,因为集成模型是由多个模型聚合而成的。
9.提前停止
该方法是在记忆数据中出现噪声或随机波动之前暂停模型的训练。模型可能会过早停止训练,从而导致欠拟合。因此最好是达到模型训练的最佳时间。
10.添加丢失层
概率性丢弃网络中的节点是防止过度拟合的一种简单而有效的方法。在正则化中,随机忽略或丢弃一些层输出以降低模型的复杂性。