引言

在机器学习中,过拟合(Overfitting)是指模型在训练数据上学习得太好,以至于它捕捉到了数据中的噪声和随机波动,而不是潜在的真实关系,这导致模型在新的、未见过的数据上表现不佳;欠拟合(Underfitting)是指模型在训练数据上未能捕捉到足够的信息或模式,导致模型在训练集和测试集上都表现不佳

一、过拟合

1.1 过拟合的定义

过拟合发生在模型对训练数据集的细节学习得太好,以至于它对训练数据集的特定特征变得过于敏感,而无法泛化到更广泛的数据集上

1.2 过拟合的表现

1.2.1 在训练集上表现非常好

模型的准确率或损失函数值非常低

1.2.2 在测试集或验证集上表现差

模型的准确率下降,损失函数值上升,说明模型泛化能力差

1.3 过拟合的原因

1.3.1 模型复杂度过高

模型有太多的参数或层次,可以完美地记住训练数据

1.3.2 数据量不足

相对于模型的复杂度,训练数据不够多,导致模型学习到了数据的随机性

1.3.3 噪声数据

训练数据中包含大量噪声或异常值,模型试图去拟合这些不具代表性的数据点

1.3.4 特征过多

特征数量远大于样本数量,导致模型可以轻易地找到数据中的模式,但这些模式可能并不具有泛化性

1.4 过拟合的解决方案

1.4.1 简化模型

减少模型的参数数量或层数,选择更简单的模型

1.4.2 增加数据

收集更多的训练数据,以帮助模型学习更普遍的模式

1.4.3 数据增强

通过旋转、缩放、裁剪等方式增加训练样本的多样性

1.4.4 正则化

向损失函数添加惩罚项,以限制模型复杂度,如L1(Lasso)和L2(Ridge)正则化

1.4.5 交叉验证

使用交叉验证来评估模型的泛化能力,并调整模型参数

1.4.6 早停法(Early Stopping)

在验证集上的性能不再提升时停止训练,以防止模型过度训练

1.4.7 丢弃法(Dropout)

在训练过程中随机丢弃网络中的一部分神经元,以减少模型对特定训练样本的依赖

1.5 防止过拟合的策略

1.5.1 理解数据

深入理解数据的特点和分布,避免模型学习到不重要的模式

1.5.2 特征选择

选择与目标变量相关性强、信息量大的特征

1.5.3 模型选择

根据问题的复杂度和数据的特点选择合适的模型。
过拟合是机器学习中的一个重要问题,因为它直接关系到模型在实际应用中的性能。通过上述方法,可以在一定程度上避免或减轻过拟合现象

二、欠拟合

2.1 欠拟合的定义

欠拟合发生在模型过于简单,无法捕捉到数据中的关键特征和关系时。这通常意味着模型的表达能力不足,无法很好地匹配数据的真实分布

2.2 欠拟合的表现

2.2.1 在训练集上表现不佳

模型的准确率低,损失函数值高

2.2.2 在测试集或验证集上表现同样不佳

模型的准确率与训练集相似,没有明显的提升或下降

2.3 欠拟合的原因

2.3.1 模型复杂度过低

模型可能太简单,无法捕捉数据中的复杂关系

2.3.2 特征数量不足

模型没有足够的特征来捕捉数据中的模式

2.3.3 特征质量差

所选特征可能不足以描述数据的内在结构

2.3.4 训练时间不足

模型可能没有足够的时间来学习数据中的模式

2.3.5 数据预处理不足

数据可能没有经过适当的清洗、标准化或转换

2.4 欠拟合的解决方案

2.4.1 增加模型复杂度

选择更复杂的模型或增加模型的参数数量

2.4.1 增加特征数量

引入更多的特征,以提供更多信息给模型学习

2.4.1 特征工程

通过特征提取、特征组合等方法改善特征的质量

2.4.1 减少正则化

如果模型使用了正则化,减少正则化强度,以便模型可以更好地拟合数据

2.4.1 增加训练时间

确保模型有足够的时间来学习数据中的模式

2.4.1 改进数据预处理

确保数据清洗、标准化和转换得当,以便模型能够更好地学习

2.5 防止欠拟合的策略

2.5.1 模型选择

选择适合问题复杂度的模型

2.5.2 特征选择

选择能够代表数据特征和信息的关键特征

2.5.3 交叉验证

使用交叉验证来评估模型的性能,并调整模型复杂度

2.5.4模型评估

使用适当的评估指标来监控模型在训练集和验证集上的表现

欠拟合与过拟合相对,都是机器学习中需要避免的问题。理想的情况是找到一个平衡点,即模型的复杂度既能很好地拟合训练数据,又能很好地泛化到新的数据上

三、高偏差(High Bias)和高方差(High Variance)的区别

在机器学习中,高偏差(High Bias)和高方差(High Variance)是模型性能不足的两种不同表现,它们通常与模型的复杂度和训练数据的表现有关

3.1 误差来源

高偏差的误差主要来自于模型的错误假设和简化,而高方差的误差主要来自于模型对训练数据的过度拟合

3.1 模型表现

高偏差的模型在训练集和测试集上表现都不好,而高方差的模型在训练集上表现好,但在测试集上表现差

3.1 应对策略

高偏差通常需要增加模型的复杂度,而高方差通常需要降低模型的复杂度

在实际应用中,通常需要找到偏差和方差的平衡点,即既不过于简单也不过于复杂的模型,以达到最佳的泛化能力。这通常通过交叉验证、模型选择和超参数调整等方法来实现

四、过拟合

4.1 目标

  • 了解过拟合可能出现的情况
  • 掌握一些解决方案

4.2 导入第三方库

%matplotlib widget
import matplotlib.pyplot as plt
from ipywidgets import Output
from plt_overfit import overfit_example, output
plt.style.use('./deeplearning.mplstyle')

4.3 过拟合

过拟合可能出现的情况。运行下面的代码以生成一个图表,可以通过它来探索过拟合

plt.close("all")
display(output)
ofit = overfit_example(False)

输出结果:
在这里插入图片描述

在上面的图表中,可以:

  • 在回归和分类示例之间切换
    分类示例:

在这里插入图片描述
回归示例:
在这里插入图片描述

  • 添加数据
  • 选择模型的度数
  • 将模型拟合到数据
    输出结果:
    在这里插入图片描述

这里有一些你应该尝试的事情:

  • 用度数 = 1 拟合数据;注意 ‘欠拟合’
    输出结果:
    在这里插入图片描述

  • 用度数 = 6 拟合数据;注意 ‘过拟合’
    输出结果:
    在这里插入图片描述

  • 调整度数以获得 ‘最佳拟合’(调整度数为2
    输出结果:
    在这里插入图片描述

  • 添加数据:
    – 极端示例可能会增加过拟合(假设它们是异常值)
    输出结果:
    在这里插入图片描述

– 普通示例可以减少过拟合
输出结果:
在这里插入图片描述

关于实施的说明:

  • ‘理想’ 曲线代表生成模型,噪声被添加到生成模型中以获得数据集
  • ‘拟合’ 不使用纯粹的梯度下降来提高速度。这些方法可以用于较小的数据集。

4.4 总结

  • 对过拟合的原因和解决方案有一些直观的理解

五、欠拟合、适度、过拟合的图表表示

在这里插入图片描述

如图所示,最左边是欠拟合的情况,右边是过拟合的情况,中间是比较好的模型

GitHub 加速计划 / ar / Aria
1
3
下载
下载可以很简单
最近提交(Master分支:4 个月前 )
b0d3c6dd - 6 个月前
8fd9634d - 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐