防止过度拟合的8种简单技术
防止过度拟合的8种简单技术
目录
1.保留数据
2.交叉验证
3.数据扩充
4.特征选择
5.L1 / L2正则化
6.删除层数/每层单位数
7.Dropout
8.早停
1.保留(数据)
除了将我们的所有数据用于训练之外,我们还可以将数据集简单地分为两组:训练和测试。 培训的一般分配比例为80%,测试为20%。 我们训练模型,直到它不仅在训练集上而且在测试集上都表现良好。 这表明良好的泛化能力,因为测试集表示未用于训练的看不见的数据。 但是,即使拆分后,此方法也需要足够大的数据集进行训练。
2.交叉验证(数据)
我们可以将数据集分为k组(k倍交叉验证)。 我们将其中一个组作为测试集(请参阅保留说明),其他作为训练集,然后重复此过程,直到每个单独的组都用作测试集(例如,重复k个)。 与保留不同,交叉验证允许最终将所有数据用于训练,但是与保留相比,计算量更大。
3.数据扩充(数据)
较大的数据集将减少过度拟合。 如果我们无法收集更多数据并且受当前数据集中的数据约束,则可以应用数据扩充来人为地增加数据集的大小。 例如,如果我们正在训练图像分类任务,则可以对图像数据集执行各种图像转换(例如,翻转,旋转,重新缩放,平移)。
4.特征选择(数据)
如果我们的训练样本数量有限,每个样本都具有大量功能,则我们应该只选择最重要的特征进行训练,这样我们的模型就无需学习那么多的特征,而最终不需要过度拟合。 我们可以简单地测试不同的功能,为这些功能训练单独的模型,评估泛化能力,或者使用各种广泛使用的功能选择方法之一。
5. L1 / L2正则化(学习算法)
正则化是一种限制我们的网络学习过于复杂的模型的技术,该模型可能因此过度拟合。 在L1或L2正则化中,我们可以在代价函数上添加一个惩罚项,以将估计的系数推向零(并且不采用更多的极端值)。 L2正则化允许权重衰减到零,但不能衰减到零,而L1正则化允许权重衰减到零。
6.删除层/每层的单位数(模型)
如L1或L2正则化所述,过度复杂的模型更有可能过度拟合。 因此,我们可以通过删除图层并减小模型的大小来直接降低模型的复杂性。 我们可以通过减少完全连接层中神经元的数量来进一步降低复杂性。 我们应该拥有一个复杂性足以在任务的过度拟合和过度拟合之间取得平衡的模型。
7.Dropout(模型)
通过对我们的图层应用丢弃(这是一种形式化的形式),我们可以以一定的概率忽略网络单元的子集。 使用辍学,我们可以减少单元之间的相互依赖学习,这可能导致过度拟合。 但是,由于Dropout,我们需要更多的时期来使模型收敛。
8.提前停止(模型)
我们可以先为任意数量的时期训练模型,然后绘制验证损失图(例如,使用保留)。一旦验证损失开始降低(例如,停止减少但开始增加),我们将停止训练并保存当前模型。我们可以通过监视损耗图或设置提前停止触发来实现。保存的模型将是在不同训练时期值之间进行泛化的最佳模型。
您已经到达本文的结尾! 希望您现在有了一个工具箱来对抗过拟合⚔️。
谢谢您完成本教程,希望您喜欢它。 随时关注更多即将发布的教程。 如果您对更多与ML相关的主题感兴趣,请参阅Tim的一些有趣文章。 🙂
(本文翻译自Chuan-en Lin / 林傳恩的文章《8 Simple Techniques to Prevent Overfitting》,参考:https://towardsdatascience.com/8-simple-techniques-to-prevent-overfitting-4d443da2ef7d)
https://m.toutiaocdn.com/i6836059220345881101/?app=news_article×tamp=1591743353&use_new_style=1&req_id=20200610065552010014064074227AFDAC&group_id=6836059220345881101&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share
转载请注明:徐自远的乱七八糟小站 » 防止过度拟合的8种简单技术