在整个机器学习任务的流程中,咱们须要在数据集上训练机器学习模型,找到一个比较“好”的假设。可是,有些假设在已知数据集上表现很好,在新数据上的性能却不好,错误率比较高,这也就是咱们常说的“过拟合”。那么,咱们如何解决这种类型的问题呢?算法
通常来讲,评价机器学习模型的性能,主要看模型在未知数据上的表现。所以,当咱们拿到一个数据集之后,不能立刻进行模型的训练,而是须要把数据集分割成两部分,其中一部分用于训练,而另外一部分则用来评估模型的好坏。其中用于训练的数据称为训练集,用来评估的数据称为测试集。这样,咱们就尽量准确地评价模型的性能。通常而言,训练集占整个数据集的70%,测试集占30%。机器学习
假设咱们有一堆不一样阶数的多项式线性回归模型,如何找到在数据集上表现最好的模型呢?咱们的方法是在训练集上训练这么一堆不一样阶数的多项式模型,而后在未知数据上评价它们的性能,最后选择一个“最好”的模型。这时,咱们须要把数据分红训练集,验证集,测试集三个部分。咱们在训练集上学习模型参数,在验证集上调整超参数,最后在测试集上评估模型的泛化性能。通常地,训练集、验证集和测试集的比例为60%/20%/20%;当数据量很是大时,能够按照80%/10%/10%的比例划分数据集。经过这种方法,咱们就能够选择出合适的模型。性能
下面的图片描述了方差和误差的关系。
假设红色的靶心区域是样本的真实值,蓝点为模型对样本的预测值。当蓝点从靶心逐渐向外移动时,预测效果逐渐变差。很容易看出有两副图中蓝点比较集中,另外两幅中比较分散,它们描述的是方差的两种状况。蓝点较集中意味着方差较小,较分散则意味着方差较大。再从蓝点与红色靶心区域的位置关系,靠近红色靶心的属于误差较小的状况, 远离靶心的属于误差较大的状况。
显然,模型的误差较高,说明此时模型并无从数据学习到什么东西,模型在训练集和数据集上的表现都不好,模型处于欠拟合状态。当模型的方差较高时,说明模型能够较好地拟合训练数据集,而在验证集和测试集上的性能较差,此时模型处于过拟合状态。咱们的目的就是找到一个模型,它在训练集和验证集上的偏差都比较低。
前面咱们提到,正则化技术能够用来解决模型的过拟合问题,其中惩罚系数$\lambda
$表示对模型参数的惩罚程度。那么,咱们如何选择一个合适的惩罚系数呢?一般,咱们有如下选择步骤:学习
使用选择的模型\(\Theta^*\)和惩罚系数\(\lambda^*\)在测试集上进行测试并观察其泛化性能测试
当模型的误差较大时,随着训练数据的增长,训练偏差与测试偏差会趋近。
而当模型的方差较大时,随着训练数据的增长,训练偏差与测试偏差之间会有较大的。
为了解决方差和误差较大的问题,课程最后给了几条建议:spa