算法性能评估以及诊断法

问题介绍

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

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

在这里插入图片描述
而方程次数过低容易导致欠拟合,方程次数过高可能导致过拟合:

在这里插入图片描述

方程次数选

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

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

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

做法:

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

再验证集中拟合出参数 d d (选择 J c v ( θ ) J_{cv}(\theta) 最小的那个),再到测试集中跑出实际的测试误差 J t e s t ( θ ) J_{test}(\theta)

偏差与方差的判断

我们画出 d d 与训练集误差和验证集误差的关系:
在这里插入图片描述

可以得出结论:

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

λ \lambda 的选择

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

λ过大时不能拟合,过小时又不能正则化导致过拟合。
在这里插入图片描述
我们可以用选择 d d 的方式让自动选择λ:
在这里插入图片描述
我们画出 λ \lambda 与训练集误差和验证集误差的关系:
在这里插入图片描述
得出相同的结论:

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

学习曲线

我们画出 J t e s t ( θ ) J c v ( θ ) J_{test}(\theta)、J_{cv}(\theta) 与测试样本数量的关系图:

  • 正常情况下,两个在一定数据后都较小,且随着数据量的增加趋向于相同
    在这里插入图片描述

  • 高偏差时,两个都很高,且趋于相同,趋于水平(增加数据量无效):
    在这里插入图片描述

  • 高方差时, J t e s t ( θ ) J_{test}(\theta) 较小,而 J c v ( θ ) J_{cv}(\theta) 较大。随着数据量的增加,过拟合的现象会有所改善,所以两条线会慢慢接近(需要增加数据量)
    在这里插入图片描述

解决方法

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

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

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

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

神经网络

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

发布了723 篇原创文章 · 获赞 314 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/jk_chen_acmer/article/details/103323117