机器学习基础(3)—— 泛化能力、过拟合与欠拟合

  • 参考:
    1. 西瓜书第二章
    2. 李航《统计学习方法(第二版)》第一章

文章目录

  • 1. 训练误差、测试误差与泛化性能
    • 1.1 训练误差与测试误差
    • 1.2 泛化能力
      • 1.2.1 泛化误差
      • 1.2.2 泛化误差上界
  • 2. 过拟合和欠拟合
    • 2.1 基础概念
    • 2.2 加深理解
    • 2.3 模型选择问题
  • 3. 小结

1. 训练误差、测试误差与泛化性能

1.1 训练误差与测试误差

  • 统计学习的目的是使学到的模型不仅在训练集上有良好的表现,更要能对未知数据给出良好的预测,要从训练样本中尽可能找出适用于所有潜在样本的 "普遍规律"
  • 对于学得的基于损失函数的模型 Y = f ^ ( X ) Y=\hat{f}(X) Y=f^(X),当损失函数给定时
    1. 训练误差是模型关于训练数据集的平均损失(就是经验风险,反映了模型在训练集上的预测性能。训练样本容量为 N N N 时,训练误差为
      R e m p ( f ^ ) = 1 N ∑ i = 1 N L ( y i , f ^ ( x i ) ) R_{emp}(\hat{f}) = \frac{1}{N}\sum_{i=1}^N L(y_i,\hat{f}(x_i)) Remp(f^)=N1i=1NL(yi,f^(xi))
    2. 测试误差是模型关于训练数据集的平均损失,反映了模型的泛化性能。测试样本容量为 N ′ N' N 时,测试误差为
      R t e s t ( f ^ ) = 1 N ′ ∑ i = 1 N ′ L ( y i , f ^ ( x i ) ) R_{test}(\hat{f}) = \frac{1}{N'}\sum_{i=1}^{N'} L(y_i,\hat{f}(x_i)) Rtest(f^)=N1i=1NL(yi,f^(xi))
  • 对于学习器来说,它能参考的只有训练样本,实际能做到只是让训练误差最小。我们可以轻松地获得一个在训练集上经验误差很小甚至为 0 的学习器,但这种学习器的泛化性能可能很差
    1. 训练误差的大小,可以用来判断给定的问题是不是一个容易学习的问题,但本质上并不重要
    2. 测试误差反映了模型对于未知测试数据的预测能力,是体现泛化性能的重要指标

1.2 泛化能力

  • 泛化能力generalization ability:学习方法的泛化能力指由此方法学到的模型对未知数据的预测能力,是学习方法本质上的重要性质
  • 现实应用中常用测试误差来评价泛化能力,但这种评价是依赖于测试集的,因为测试数据集大小有限,很有可能由此得到的评价结果不可靠。统计学习理论试图从理论上对学习方法的泛化能力进行分析

1.2.1 泛化误差

  • 泛化误差generalization error:设学得的模型是 f ^ \hat{f} f^,用这个模型对未见数据预测的误差即为泛化误差
    R e x p ( f ^ ) = E P ( L ( Y , f ^ ( X ) ) ) = ∫ X × Y L ( y , f ^ ( x ) ) P ( x , y ) d x d y \begin{aligned} R_{exp}(\hat{f}) &= \mathbb{E}_P(L(Y,\hat{f}(X))) \\ &=\int_{\mathcal{X\times Y}}L(y,\hat{f}(x))P(x,y)dxdy \end{aligned} Rexp(f^)=EP(L(Y,f^(X)))=X×YL(y,f^(x))P(x,y)dxdy
  • 泛化误差本质上就是学得模型的期望风险,反映了模型的泛化能力。如果方法 A 比方法 B 的泛化误差小,那么我们就认为方法 A 更有效
  • 我们之前分析过,机器学习的目标就是最小化期望风险(即上述泛化误差),注意到其中联合分布 P ( X , Y ) P(X,Y) P(X,Y) 未知,所以我们使用数据集上的经验分布估计它,也就是使用经验风险估计期望风险,通过最小化经验风险(即上述训练误差)来学习,详见 机器学习基础(2)—— 统计学习方法三要素 第 2.1 节

1.2.2 泛化误差上界

  • 学习方法泛化能力的分析往往是通过研究泛化误差的概率上界来进行的,简称为 泛化误差上界generalization error bound。具体来说,就是通过比较两算法的泛化误差上界来比较它们的优劣
  • 泛化误差上界通常具有以下性质
    1. 样本容量增加时,泛化误差上界 → 0 \to 0 0
    2. 是关于假设空间容量 (capacity) 的函数,假设空间越\大,模型越难学,泛化误差上界越大
  • 举例来说,对于二分类问题,当假设空间是有限个函数的集合 F = { f 1 , f 2 , . . . , f d } \mathcal{F}=\{f_1,f_2,...,f_d\} F={f1,f2,...,fd} 时,对任意一个函数 f ∈ F f\in\mathcal{F} fF,至少以概率 1 − δ 1-\delta 1δ 0 < δ < 1 0<\delta<1 0<δ<1 ,以下不等式成立
    R ( f ) ≤ R ^ ( f ) + ε ( d , N , δ )   其 中   ε ( d , N , δ ) = 1 2 N ( log ⁡ d + log ⁡ 1 δ ) R(f)\leq \hat{R}(f) +\varepsilon(d,N,\delta) \\ \space\\ 其中\space \varepsilon(d,N,\delta) = \sqrt{\frac{1}{2N}(\log d+\log \frac{1}{\delta})} R(f)R^(f)+ε(d,N,δ)  ε(d,N,δ)=2N1(logd+logδ1) 证明见李航《统计学习方法(第二版)》1.6

2. 过拟合和欠拟合

2.1 基础概念

  • 过拟合overfitting
    1. 定义:学习器把训练样本 “学得太好” ,以至于把训练样本自身的一些特点当作了潜在样本都具有的一般特性。
    2. 危害:导致泛化性能下降。
    3. 成因:学习性能太强,以至于把训练样本中包含的不太一般的特性或数据噪音都学到了(学习性能是否 “过于强大” 是由学习算法和数据内涵共同决定的),学得模型复杂度太高
    4. 解决过拟合是不可避免的。可以这样理解:机器学习问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成的。若可以彻底避免过拟合,则通过经验误差最小化即可求得最优解,这就构造化地证明了P=NP各类学习算法中,都采取了一些针性措施来缓解其影响,比如正则化、早停等,关键是要找到复杂度合适的模型
  • 欠拟合underfitting
    1. 定义:学习器对训练样本的一般特性尚未学好
    2. 危害:无论训练集还是新样本,性能都不是最佳
    3. 成因:学习能力低下,或是在模型尚未收敛时就停止学习,尚未学得训练样本的主要特征,学得模型复杂度太低
    4. 解决:增强学习能力,比如在决策树中增加分支、在神经网络中增加训练轮数等,关键是要找到复杂度合适的模型
  • 直观示例
    机器学习基础(3)—— 泛化能力、过拟合与欠拟合_第1张图片

2.2 加深理解

  • 模型的参数个数越多,我们说它的复杂度越高,能够拟合的目标函数也就越复杂。理想情况下,我们希望从假设空间中选出的最优模型的参数个数和真实模型参数个数相同(复杂度相同),且参数向量和真实模型参数向量相近

    1. 模型复杂度超过真实复杂度时,学到的输入空间到输出空间的映射比真实映射更复杂,函数曲线更加弯曲
    2. 模型复杂度低于真实复杂度时,学到的输入空间到输出空间的映射比真实映射更简单,函数曲线更加平直
  • 例如我们做一个多项式回归任务,假设数据是由 M M M 次多项式生成,样本 x x x 的真实标记为
    y = f M ( x , w ) = w 0 + w 1 x + w 2 x 2 + . . . + + w M x M = ∑ j = 0 M w j x j y = f_M(x,w) = w_0+w_1x+w_2x^2+...++w_Mx^M = \sum_{j=0}^Mw_jx^j y=fM(x,w)=w0+w1x+w2x2+...++wMxM=j=0Mwjxj 其中 w 1 , w 2 , . . . . , w M w_1,w_2,....,w_M w1,w2,....,wM 是模型参数。通常采取以下步骤解决此问题

    1. 确定模型复杂度,即确定多项式次数 M M M
    2. 在给定的复杂度下,按照经验风险最小化策略求解参数(即多项式系数),具体来说,最小化以下损失函数
      L ( w ) = 1 2 ∑ i = 1 N ( f ( x i , w ) − y i ) 2 = 1 2 ∑ i = 1 N ( ∑ j = 0 M w j x j − y i ) 2 \begin{aligned} L(w) &= \frac{1}{2}\sum_{i=1}^N(f(x_i,w)-y_i)^2\\ &= \frac{1}{2}\sum_{i=1}^N(\sum_{j=0}^Mw_jx^j-y_i)^2 \end{aligned} L(w)=21i=1N(f(xi,w)yi)2=21i=1N(j=0Mwjxjyi)2 其中 1 2 \frac{1}{2} 21 是为了求梯度时消去常数部分,简化计算。此优化问题可以使用最小二乘法求得解析解,也可以用梯度下降法求出数值解,不再详细说明

    假定给出 10 个数据点,使用 0~9 次多项式函数进行拟合,数据点、真实分布(正弦曲线)以及 M = 0 , 1 , 3 , 9 M=0,1,3,9 M=0,1,3,9 时的拟合曲线如下所示
    机器学习基础(3)—— 泛化能力、过拟合与欠拟合_第2张图片

    1. 信息论告诉我们:数据 = 信息 + 噪音,训练数据是真实分布信息(正弦曲线)的体现,受噪声影响,训练数据点分散在真实曲线周围
    2. M = 0 M=0 M=0 M = 1 M=1 M=1 时,模型过于简单,拟合效果很差,属于欠拟合
    3. M = 9 M=9 M=9 时,模型过于复杂,虽然学到的多项式曲线穿过了所有数据点,训练误差为 0,但是曲线整体和真实曲线差别很大,测试集上性能会很差,属于过拟合。这里可以理解为复杂模型表示能力太强,以至于把训练数据上的噪音也学到了
    4. M = 3 M=3 M=3 时,多项式曲线对训练数据拟合得足够好,模型也比较简单,是较好的选择
  • 从上例可见,随着多项式次数(模型复杂度)的增加,训练误差会不断减少到趋于 0;测试误差先减小而后增大
    机器学习基础(3)—— 泛化能力、过拟合与欠拟合_第3张图片

2.3 模型选择问题

  • 现实任务中,往往有多种学习方法可供选择,对于同一个方法,使用不同的参数配置,也可以产生不同的模型。选择哪个模型(算法)、使用哪种参数配置,就是机器学习中的模型选择 model selection问题

    实践中常说的 “调参”,就是在做模型选择中确定参数配置这件事,更具体地说,是确定超参数

  • 模型选择的关键是设计一个对比各个方法所得模型及其模型参数的规范流程,并利用它从假设空间中选出泛化能力最强的模型,其核心是做以下两件事
    1. 确定模型类型(决策树、线性回归、神经网络…)·
    2. 确定模型参数,包括模型参数超参数
  • 在之前的文章已说明过,统计学习三要素中的 “策略”(经验风险最小化、结构风险最小化)是选择最优模型时依据的准则,“模型选择” 其实就是统计学习要素 “策略” 的推广,包括以下两类方法
    1. 基于测试误差的方法: 模型类型、超参数未确定时,必须引入测试集和验证集,从最小化测试误差 的角度做模型选择,通过网格搜索等方法确定模型的类型和超参数。这可以理解为 找出复杂度适当的模型,使其测试误差最小化,从而间接地保证其具有最佳泛化性能
    2. 基于 “策略” 的方法: 模型类型、超参数已确定时,除了上述方法外,还可以单纯利用训练集,从最小化训练误差/经验风险 的角度做模型选择,确定模型参数
  • 关于模型选择的问题下篇文章再详细说明

3. 小结

  1. 训练模型的本质是最小化训练误差,即最小化经验风险
  2. 训练模型的目的是最小化泛化误差,即最小化期望风险
  3. 真实的泛化误差无法评估,我们使用测试误差估计泛化误差
  4. 由于测试集大小有限,测试误差不能很好地衡量和对比学习方法的泛化能力,更准确的方法是计算泛化误差上界
  5. 随着模型复杂度从低到高,虽然训练误差不断减小,但测试误差会先减少后增大,其U型曲线左右分别对应欠拟合过拟合
  6. 通过 模型选择方法 选出复杂度适当的模型,使其测试误差最小化,从而间接地保证具有最佳泛化性能

你可能感兴趣的:(机器学习,机器学习,过拟合,欠拟合,训练误差,测试误差)