机器学习的测试和验证(Machine Learning 研习之五)

这篇具有很好参考价值的文章主要介绍了机器学习的测试和验证(Machine Learning 研习之五)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于 Machine Learning 研习之三、四,可到秋码记录上浏览。

测试和验证

了解模型对新案例的推广效果的唯一方法是在新案例上进行实际尝试。 一种方法是将模型投入生产并监控其性能。 这很有效,但如果你的模型非常糟糕,你的用户会抱怨——这不是最好的主意。

更好的选择是将数据分为两组:训练集和测试集。顾名思义,您使用训练集训练模型,并使用测试集测试模型。 新案例的错误率称为泛化错误(或样本外错误),通过在测试集上评估模型,您可以获得此错误的估计值。 该值告诉您模型在以前从未见过的实例上的表现如何。

如果训练误差较低(即您的模型在训练集上很少犯错误)但泛化误差较高,则意味着您的模型过度拟合训练数据

通常使用 80% 的数据进行训练,保留 20% 的数据进行测试。 然而,这取决于数据集的大小:如果它包含 1000 万个实例,那么保留 1% 意味着您的测试集将包含 100,000 个实例,可能足以很好地估计泛化误差。

超参数调整和模型选择

评估模型非常简单:只需使用测试集即可。 但是假设您在两种类型的模型(例如线性模型和多项式模型)之间犹豫不决:您如何在它们之间做出决定? 一种选择是训练两者并比较它们使用测试集的泛化程度。

现在假设线性模型概括得更好,但您想要应用一些正则化以避免过度拟合。 问题是,如何选择正则化超参数的值? 一种选择是使用该超参数的 100 个不同值来训练 100 个不同的模型。 假设您找到了生成具有最低泛化误差(例如,只有 5% 误差)的模型的最佳超参数值。 您将此模型投入生产,但不幸的是它的性能没有达到预期,并产生 15% 的错误。 刚刚发生了什么?

问题在于您在测试集上多次测量了泛化误差,并且您调整了模型和超参数以生成针对该特定集的最佳模型。 这意味着该模型不太可能在新数据上表现良好。

此问题的常见解决方案称为保留验证(如下图):您只需保留部分训练集即可评估多个候选模型并选择最佳模型。 新保留的集合称为验证集(或开发集或开发集)。 更具体地说,您在简化的训练集(即完整训练集减去验证集)上训练具有各种超参数的多个模型,然后选择在验证集上表现最佳的模型。 在此保留验证过程之后,您可以在完整的训练集(包括验证集)上训练最佳模型,这将为您提供最终模型。 最后,您在测试集上评估最终模型,以获得泛化误差的估计。

机器学习的测试和验证(Machine Learning 研习之五),人工智能(AI),机器学习,人工智能,测试集,训练集,数据集,神经网络,CNN

这种解决方案通常效果相当好。但是,若验证集过小,则模型评估将不精确:您可能最终错误地选择了一个次优模型。相反,如果验证集太大,则剩余的训练集将比完整的训练集小得多。为什么这样不
好?那么,由于最终的模型将在完整的训练集上训练,所以比较在一个小得多的训练集上训练的候选模型是不理想的。这就像选择跑得最快的短跑选手参加马拉松比赛一样。解决这个问题的一个方法是执行重复的交叉验证,使用许多小的验证集。在对其余数据进行训练后,每个模型在每个验证集评估一次。通过对模型的所有评估进行平均化,您可以更准确地衡量模型的性能。然而,有一个缺点:训练时间乘以验证集的数量。

数据不匹配

在某些情况下,很容易获得大量数据进行训练,但这些数据可能无法完美代表生产中使用的数据。 例如,假设您想要创建一个移动应用程序来拍摄花朵照片并自动确定其种类。 您可以轻松地在网络上下载数百万张鲜花照片,但它们并不能完全代表在移动设备上使用该应用程序实际拍摄的照片。 也许您只有 1,000 张代表性照片(即实际使用该应用拍摄的照片)。

在这种情况下,需要记住的最重要的规则是,验证集和测试集都必须尽可能具有生产中预期使用的数据的代表性,因此它们应该完全由有代表性的图片组成:您可以对它们进行洗牌,将一半放在验证集中,另一半放在测试集中(确保在这两个集合中都没有重复或接近重复的数据)。在网络图片上对模型进行培训之后,如果您观察到模型在验证集上的性能令人失望,您将不知道这是因为您的模型超出了培训集,还是仅仅是由于网络图片和移动应用程序图片之间的不匹配。

一个解决方案是将一些训练图片(来自网络)放在另一个集合中,AndrewNg称之为训练-开发集合(如下图)。在训练模型之后(在训练集上,而不是在train-dev集上),您可以在train-dev集上评估它。如果模
型表现不佳,那么它一定是过拟合了训练集,所以你应该尝试简化或正则化模型,获取更多的训练数据,并清理训练数据。但是,如果它在train-dev集中表现良好,那么您可以在dev集中评估模型。如果它的性能很差,那么问题一定是来自数据不匹配。你可以尝试通过预处理网页图片来解决这个问题,使它们看起来更像移动应用程序将要拍摄的图片,然后再训练模型。一旦您拥有了一个在train-dev集和dev集上都表现良好的模型,您可以在测试集上最后一次评估它,以了解它在生产中的表现可能有多好

机器学习的测试和验证(Machine Learning 研习之五),人工智能(AI),机器学习,人工智能,测试集,训练集,数据集,神经网络,CNN

图中所示。当真实数据稀缺时(右),您可以使用类似的丰富数据(左)进行训练,并在train-dev集中保留一部分数据以评估过拟合;然后使用真实数据评估数据不匹配(dev集)并评估最终模型的性能(测试集)。

                                    ##### 没有免费的午餐定理

模型是数据的简化表示。简化是为了抛弃那些不太可能推广到新实例的多余细节。当您选择一个特定类型的模型时,您隐含地对数据进行假设。例如,如果您选择一个线性模型,您就隐含地假设数据基本上是线性的,并且实例和直线之间的距离仅仅是噪声,可以安全地忽略它。

在1996年的一篇著名论文中,?David Wolpert证明,如果你对数据完全不做任何假设,那么就没有理由喜欢一个模型胜过任何其他模型。这就是所谓的“没有免费的午餐”(NFL)定理。对于一些数据集,最好的模型是线性模型,而对于其他数据集,它是一个神经网络。没有一个模型是先验保证更好地工作(因此定理的名称)。确定哪种模型最好的唯一方法是评估所有模型。由于这是不可能的,在践中你对数据做一些合理的假设,只评估几个合理的模型。例如,对于简单的任务,您可以评估各种级别的正则化线性模型,而对于复杂的问题,您可以评估各种神经网络。

练习

我们介绍了机器学习中的一些最重要的概念。 在接下来的研习中,我们将更深入地研究并编写更多代码,但在此之前,请确保您可以回答以下问题:文章来源地址https://www.toymoban.com/news/detail-679831.html

  • 1、.您如何定义机器学习?
  • 2、您能说出它最擅长的四种应用类型吗?
  • 3、什么是标记训练集?
  • 4、最常见的两种监督任务是什么?
  • 5、你能说出四种常见的无监督任务吗?
  • 6、你会使用什么类型的算法来让机器人在各种未知地形中行走?
  • 7、您将使用什么类型的算法将客户分为多个组?
  • 8、您会将垃圾邮件检测问题定义为监督学习问题还是无监督学习问题?
  • 9、什么是在线学习系统?
  • 10、什么是核外学习?
  • 11、 什么类型的算法依赖相似性度量来进行预测?
  • 12、模型参数和模型超参数有什么区别?
  • 13、基于模型的算法搜索什么? 他们为了成功最常用的策略是什么? 他们如何做出预测?
  • 14、您能说出机器学习的四个主要挑战吗?
  • 15、 如果您的模型在训练数据上表现良好,但对新实例的泛化效果很差,会发生什么情况? 您能说出三种可能的解决方案吗?
  • 16、什么是测试集,为什么要使用它?
  • 17、 验证集的目的是什么?
  • 18、什么是train-dev集,什么时候需要它,如何使用它?
  • 19、 如果使用测试集调整超参数会出现什么问题?

到了这里,关于机器学习的测试和验证(Machine Learning 研习之五)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 应用机器学习的建议 (Advice for Applying Machine Learning)

    应用机器学习的建议 (Advice for Applying Machine Learning)

    问题: 假如,在你得到你的学习参数以后,如果你要将你的假设函数放到一组 新的房屋样本上进行测试,假如说你发现在预测房价时产生了巨大的误差,现在你的问题是要想改进这个算法,接下来应该怎么办? 解决思路: 一种办法是使用更多的训练样本。具体来讲,也许你

    2024年01月25日
    浏览(12)
  • 机器学习在网络安全领域的应用 Demystifying Cybersecurity with Machine Learning

    作者:禅与计算机程序设计艺术 什么是机器学习(Machine Learning)?又是如何应用在网络安全领域呢?本文将详细阐述其定义、分类及历史沿革,同时介绍一些机器学习的基本概念和技术,帮助企业界更好地理解和掌握机器学习在网络安全领域的应用。通过相关案例实践,全

    2024年02月06日
    浏览(11)
  • 选择和训练模型(Machine Learning 研习之十一)

    选择和训练模型(Machine Learning 研习之十一)

    当您看到本文标题时,不禁感叹,总算是到了 训练模型 这一节了。 是啊,在之前的文章中,我们对数据进行了探索,以及对一个训练集和一个测试集进行了采样,也编写了一个 预处理 管道来自动清理,准备您的数据用于 机器学习 算法,然而现在,我们可以选择并训练模型

    2024年01月18日
    浏览(10)
  • Azure Machine Learning - 聊天机器人构建

    Azure Machine Learning - 聊天机器人构建

    本文介绍如何部署和运行适用于 Python 的企业聊天应用示例。 此示例使用 Python、Azure OpenAI 服务和 Azure AI 搜索中的检索扩充生成(RAG)实现聊天应用,以获取虚构公司员工福利的解答。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理

    2024年01月19日
    浏览(15)
  • [machine Learning]强化学习

    [machine Learning]强化学习

    强化学习和前面提到的几种预测模型都不一样,reinforcement learning更多时候使用在控制一些东西上,在算法的本质上很接近我们曾经学过的DFS求最短路径. 强化学习经常用在一些游戏ai的训练,以及一些比如火星登陆器,月球登陆器等等工程领域,强化学习的内容很简单,本质就是获取

    2024年02月09日
    浏览(11)
  • [Machine Learning] 领域适应和迁移学习

    在机器学习中,我们的目标是找到一个假设或模型,它可以很好地描述或预测数据。当我们基于训练集训练模型时,我们的目的是让模型能够捕获到数据中的主要模式。然而,为了确保模型不仅仅是对训练数据进行记忆,而是真正理解了数据的结构,我们需要在测试集上评估

    2024年02月08日
    浏览(11)
  • 【Machine Learning 系列】一文带你详解什么是强化学习(Reinforcement Learning)

    【Machine Learning 系列】一文带你详解什么是强化学习(Reinforcement Learning)

    机器学习主要分为三类:有监督学习、无监督学习和强化学习。在本文中,我们将介绍强化学习(Reinforcement Learning)的原理、常见算法和应用领域。 强化学习(Reinforcement Learning)是机器学习中一种重要的学习范式,其目标是通过与环境的交互来学习如何做出最优的决策。 强化

    2024年02月14日
    浏览(12)
  • [Machine Learning][Part 8]神经网络的学习训练过程

    [Machine Learning][Part 8]神经网络的学习训练过程

    目录 训练过程 一、建立模型: 二、建立损失函数 J(w,b): 三、寻找最小损失函数的(w,b)组合 为什么需要激活函数  激活函数种类 二分法逻辑回归模型 线性回归模型 回归模型 根据需求建立模型,从前面神经网络的结果可以知道,每一层都有若干个模型在运行,因此建立神经网

    2024年02月05日
    浏览(14)
  • (转载)极限学习机(extreme learning machine, ELM)的回归拟合及分类(matlab实现)

    (转载)极限学习机(extreme learning machine, ELM)的回归拟合及分类(matlab实现)

            单隐含层前馈神经网络(single-hidden layer feedforward neural network,SLFN)以其良好的学习能力在许多领域中得到了广泛的应用。然而,传统的学习算法(如BP算法等)固有的一些缺点,成为制约其发展的主要瓶颈。前馈神经网络大多采用梯度下降方法,该方法主要存在以下几个

    2024年02月13日
    浏览(14)
  • 机器学习数据集----训练集、测试集以及验证集

    机器学习数据集----训练集、测试集以及验证集

    1、训练集 用来构建模型,通过训练拟合一些参数 建立分类器 。 2、验证集 用于确定网络结构以及调整模型的超参数。 使用验证集的目的就是为了快速 调参 (如网络层数、网络节点数、迭代次数等等),从而获得当前最优模型。 验证集是在训练集中划分出的一部分。 验证

    2024年02月01日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包