问题介绍

我们大致可以将训练出的参数分为三类:欠拟合、正常、过拟合。

以方程次数为例,对于一个简单的单特征值问题,我们可能拟出如下模型:

机器学习入门——算法性能评估以及诊断法
而方程次数过低容易导致欠拟合,方程次数过高可能导致过拟合:

机器学习入门——算法性能评估以及诊断法

方程次数选择

首先来讲一个比较简单的方法,我们把数据集分成训练集(70%)和测试集(30%),用每一种方程训练集得出对应的最优参数θ\theta

然后每个方程用对应的参数θ\theta去测试集上跑,得出在测试集上的误差Jtest(θ)J_{test}(\theta),然后选择一个较小的作为最后的结果(方程次数和对应参数)。

然而这样并不公平,因为方程的次数dd也是一个参数,而这个dd相当于在测试集中拟合而出,可能不具备可推广性。

做法:

所以我们将数据分成三部分:训练集(60%)、交叉验证集(20%)、测试集(20%)。

再验证集中拟合出参数dd(选择Jcv(θ)J_{cv}(\theta)最小的那个),再到测试集中跑出实际的测试误差Jtest(θ)J_{test}(\theta)

偏差与方差的判断

我们画出dd与训练集误差和验证集误差的关系:
机器学习入门——算法性能评估以及诊断法

可以得出结论:

  • 高偏差(欠拟合):Jtest(θ)J_{test}(\theta)Jcv(θ)J_{cv}(\theta)都很大,且较为接近
  • 高方差(过拟合):Jtest(θ)J_{test}(\theta)远小于Jcv(θ)J_{cv}(\theta)

λ\lambda的选择

正则化中的惩罚力度λ\lambda的地位类似上述的dd

λ过大时不能拟合,过小时又不能正则化导致过拟合。
机器学习入门——算法性能评估以及诊断法
我们可以用选择dd的方式让自动选择λ:
机器学习入门——算法性能评估以及诊断法
我们画出λ\lambda与训练集误差和验证集误差的关系:
机器学习入门——算法性能评估以及诊断法
得出相同的结论:

  • 高偏差(欠拟合):Jtest(θ)J_{test}(\theta)Jcv(θ)J_{cv}(\theta)都很大,且较为接近
  • 高方差(过拟合):Jtest(θ)J_{test}(\theta)远小于Jcv(θ)J_{cv}(\theta)

学习曲线

我们画出Jtest(θ)Jcv(θ)J_{test}(\theta)、J_{cv}(\theta)与测试样本数量的关系图:

  • 正常情况下,两个在一定数据后都较小,且随着数据量的增加趋向于相同
    机器学习入门——算法性能评估以及诊断法

  • 高偏差时,两个都很高,且趋于相同,趋于水平(增加数据量无效):
    机器学习入门——算法性能评估以及诊断法

  • 高方差时,Jtest(θ)J_{test}(\theta)较小,而Jcv(θ)J_{cv}(\theta)较大。随着数据量的增加,过拟合的现象会有所改善,所以两条线会慢慢接近(需要增加数据量)
    机器学习入门——算法性能评估以及诊断法

解决方法

在确定是高方差(过拟合)时,我们可以尝试:

  • 增加数据量
  • 减少特征
  • 增加λ\lambda

高偏差(欠拟合)时,我们可以尝试:

  • 增加特征
  • 增加多项式
  • 减少λ\lambda

神经网络

小型神经网络容易欠拟合,大型的容易过拟合

相关文章:

  • 2021-12-25
  • 2021-12-08
  • 2021-11-26
猜你喜欢
  • 2022-01-18
  • 2021-07-29
  • 2022-01-23
  • 2021-12-19
  • 2021-11-12
  • 2022-01-03
  • 2022-12-23
相关资源
相似解决方案