深度学习-模型评估与选择

发布于:2025-08-03 ⋅ 阅读:(12) ⋅ 点赞:(0)

1. 模型选择

1.1. 模型评估基础

  • 训练误差:模型在训练数据上的误差。

    • 问题:过度追求低训练误差 → 过拟合(模型记忆噪声,泛化能力差)。

  • 测试误差:模型在新数据上的误差,也称为泛化误差

    • 目标:最小化测试误差 → 确保模型泛化能力。

  • 测试误差可分解为三部分:偏差是「学错了」,方差是「学太细」,噪声是「没办法」。

    • 偏差 (Bias):模型预测与真实值的系统性差距。

      • 本质:模型忽略了多少真实规律

      • 高偏差 → 欠拟合(模型过于简单,忽略数据规律)。

    • 方差 (Variance):模型对训练数据扰动的敏感性。

      • 本质:模型学习了多少噪声

      • 高方差 → 过拟合(模型复杂,过度拟合噪声)。

    • 不可约误差 (Irreducible Error):数据固有噪声σ。

      • 关键:与模型无关,是现实世界的固有不确定性。

模型状态

表现

误差来源

欠拟合

训练误差和测试误差均高

高偏差,低方差

过拟合

训练误差低,测试误差高

低偏差,高方差

理想模型

训练/测试误差均低

偏差和方差平衡

场景

靶纸示意图

模型表现

低偏差 + 低方差

🎯 箭簇紧贴靶心

理想模型(泛化能力强)

高偏差 + 低方差

🎯 箭簇远离靶心但集中

欠拟合(模型太简单)

低偏差 + 高方差

🎯 箭簇围绕靶心但分散

过拟合(模型太复杂)

高偏差 + 高方差

🎯 箭簇既偏又散

最差情况(如用线性模型拟合复杂数据且样本不足)

📌 关键理解:

  • 降低偏差 → 让模型更复杂(如增加神经网络层数、使用更高阶特征)

  • 降低方差 → 简化模型或正则化(如L2正则、Dropout、增加训练数据)

例子:

假设用不同深度的决策树做实验:

  1. 树深度=1:训练误差 0.5,测试误差 0.52 → 高偏差(树太简单)

  2. 树深度=10:训练误差 0.01,测试误差 0.35 → 高方差(树太复杂)

  3. 树深度=3:训练误差 0.2,测试误差 0.22 → 平衡状态

1.2. 训练集_验证集_测试集

类似高考,平时的学习是训练数据集,周考是验证数据集,高考是测试数据集。

  1. 训练集 (Training Set):用于训练模型结果。

    1. 用于训练模型参数(如梯度下降更新权重)

    2. 占比:通常 60-80%

  2. 验证集 (Validation Set):用于评估模型好坏的数据集。【不要和训练数据混在一起】

    1. 用于模型选择:调整超参数(如正则化强度、树深度)

    2. 评估模型性能,避免使用测试集做决策

    3. 占比:通常 10-20%

  3. 测试集 (Test Set):只使用一次的数据集。

    1. 用于最终评估模型泛化能力(仅使用一次!)

    2. 必须与训练/验证集无重叠

    3. 占比:通常 10-20%

1.3. K折交叉验证

但是日常中,没有那么多数据可以用。

因此,使用 K折交叉验证 进行训练和验证。

Cross validation:交叉验证用于防止模型过于复杂而引起的过拟合

方法:

可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为 训练集。 而其它的子集则被称为 验证集 。

步骤:

  1. 将训练集随机划分为 K 个等大小子集(K=5 或 10)

  2. 进行 K 轮迭代:

    1. 第 i 轮:用 第 i 个子集作为验证集,其余 K-1 个子集作为训练集;

    2. 计算该轮的验证误差$$E_i$$

  3. 最终验证误差:E_{\text{CV}} = \frac{1}{K} \sum_{i=1}^{K} E_i

2. 过拟合和欠拟合

在机器学习中,过拟合和欠拟合是两个常见的关键概念,它们直接影响着模型的性能和泛化能力。

过拟合是指模型在训练数据上表现得非常好,但在新的、未见过的数据(即测试数据)上表现不佳的现象。这就好比一个学生为了应对考试,把教科书上的例题和习题都背得滚瓜烂熟,甚至包括题目中的每一个细节和特殊情况,以至于他能在这些题目上得满分。但是一旦遇到新的、不在教科书中的题目时,他就会不知所措,无法正确解答。

  • 过拟合的原因通常是因为模型过于复杂,参数过多,导致模型为了迎合训练数据中的每一个细节,包括噪声和随机波动,而丢失了数据背后的真实规律。
  • 例如,在一个决策树模型中,如果树的深度过大,分支过多,就容易出现过拟合。

欠拟合则与过拟合相反,它是指模型在训练数据和测试数据上都表现不佳的情况。这就像一个学生在学习过程中没有掌握好基本的概念和方法,对简单的题目都无法正确解答,更不用说复杂的题目了。

  • 欠拟合通常是因为模型过于简单,缺乏足够的表达能力来捕捉数据中的规律。
  • 比如,用一个线性模型来拟合一个具有复杂非线性关系的数据集,模型就很难准确地描述数据的分布和变化趋势。

在实际的机器学习任务中,我们需要在过拟合和欠拟合之间找到一个平衡点,通过合理地选择模型的复杂度、调整参数、使用正则化等方法,使模型既能较好地拟合训练数据,又能在未知数据上具有良好的泛化性能。