《机器学习:算法视角(原书第2版)》 —2.2 知你所知:测试机器学习算法

举报
华章计算机 发表于 2019/12/21 12:49:46 2019/12/21
【摘要】 本节书摘来自华章计算机《机器学习:算法视角(原书第2版)》 一书中第2章,第2.2.1节,作者是[新西兰] 史蒂芬·马斯兰(Stephen Marsland),高 阳 商 琳 等译。

2.2 知你所知:测试机器学习算法

学习的目的是更好地预测输出,无论是类标记还是连续回归值。了解算法学习成功程度的唯一真正的方法是将预测与已知目标标记进行比较,这就是监督学习进行训练的方式。这表明你可以做的一件事就是查看算法在训练集上产生的错误。

但是,我们希望将算法推广到训练集中没有看到的示例,我们显然无法使用训练集来测试它。因此,我们需要一些不同的数据——测试集,以便对其进行测试。我们使用(输入,目标)对的测试集,将它们输送到网络中并将预测输出与目标进行比较,但不修改它们的权重或其他参数:我们用它们来决定算法学习的程度。唯一的问题是它减少了可用于训练的数据量,但这是我们必须忍受的。

2.2.1 过拟合

不幸的是,事情比这更复杂,因为我们可能还想知道算法在学习时的泛化情况:我们需要确保做了足够的训练,以及算法能很好地泛化。事实上,过度训练的危险性至少与训练不足一样高。大多数机器学习算法中可变度的数量是巨大的,对于神经网络,有很多权重,并且每个权重都可以变化。这无疑比我们学习的功能有更多的变化,所以需要小心:如果训练时间过长,那么我们将过拟合数据,这意味着我们同时学习了数据中的噪声和不准确性。因此,我们学到的模型会过于复杂,无法泛化。

image.png

 图2-5 过拟合的效果,不是找到生成函数(如左图所示),而是神经网络完美匹配输入,包括噪声(右图)。这降低了网络的泛化能力图2-5通过绘制学习过程中两个不同点的某些算法的预测(作为曲线)来说明这一点。在图的左侧,曲线很好地拟合了数据的整体趋势(已经推广到一般函数),但是训练误差仍然不会接近于零,因为这条曲线只是接近但不是恰好压在所有训练数据上。随着网络的不断学习,最终会产生一个更复杂的模型,它具有较低的训练误差(接近于零),这意味着它已经记住了训练样例,包括其中的任何噪声成分,因此它已经过拟合了训练数据。

我们希望在算法过拟合之前停止学习过程,这意味着需要知道它在每个时间步长的泛化程度。我们不能使用训练数据,因为它不会检测过拟合,同时,我们也不能使用测试数据,因为我们将其保存为最终测试。因此,我们需要第三组数据用于此目的,这称为验证集(validation set),因为我们目前正在使用它来验证学习。这称为统计中的交叉验证(cross-validation)。它是模型选择(model selection)的一部分:为模型选择正确的参数,以便尽可能地泛化。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。