模型性能不匹配问题(以及如何解决)

模型测试结果不如训练结果时该怎么办。

评估机器学习模型的过程是,在训练数据上拟合和评估模型,然后验证模型在保留的测试数据集上是否具有良好的性能。

通常,你在训练数据集上评估模型时会获得非常有前景的性能,而在测试集上评估模型时性能会很差。

在本文中,你将发现遇到这个常见问题时需要考虑的技术和问题。

阅读本文后,你将了解:

  • 模型性能不匹配问题,这可能在评估机器学习算法时发生。
  • 过拟合、代表性不足的数据样本和随机算法的成因。
  • 如何加强你的测试框架以从一开始就避免该问题。

本文是基于读者提问的;谢谢!请继续提问!

让我们开始吧。

The Model Performance Mismatch Problem (and what to do about it)

模型性能不匹配问题(以及如何解决)
照片来源:Arapaoa Moffat,部分权利保留。

概述

本文分为 4 部分;它们是:

  1. 模型评估
  2. 模型性能不匹配
  3. 可能的原因及补救措施
  4. 更鲁棒的测试框架

模型评估

当你为预测建模问题开发模型时,你需要一个测试框架。

测试框架定义了如何使用领域数据样本来评估和比较你的预测建模问题的候选模型。

测试框架的结构有很多种,没有一种适合所有项目。

一种流行的方法是,使用一部分数据来拟合和调整模型,另一部分数据则为调整后的模型在样本外数据上的性能提供客观估计。

数据样本被分成训练集和测试集。模型使用诸如k折交叉验证之类的重采样方法在训练数据集上进行评估,而训练集本身可能进一步划分为用于调整模型超参数的验证数据集。

测试集被保留起来,用于评估和比较调整后的模型。

更多关于训练集、验证集和测试集的信息,请参阅文章

模型性能不匹配

通过使用训练数据集,重采样方法将为你提供模型在未见过的数据上的性能估计。

测试数据集提供了第二个数据点,理想情况下是对模型预期性能的客观了解,证实了估计的模型性能。

如果在训练数据集上的模型性能估计与模型在测试集上的性能不匹配怎么办?

分数通常不会匹配。我们确实预期会有一些差异,因为鉴于超参数调整,训练数据集的一些轻微过拟合是不可避免的,这会使训练分数看起来很乐观。

但如果差异大得令人担忧呢?

  • 你应该信任哪个分数?
  • 你仍然可以使用测试数据集来比较模型吗?
  • 模型调整过程是否无效?

这是应用机器学习中一个充满挑战且非常普遍的情况。

我们可以称此问题为“模型性能不匹配”问题。

注意:“模型性能差异很大”的观点取决于你选择的性能指标、数据集和模型。我们无法客观地谈论普遍的差异,只能谈论你需要自己解释的相对差异。

可能的原因及补救措施

模型性能不匹配问题有许多可能的原因。

最终,你的目标是拥有一个你确信能够帮助你做出关于选择哪个模型和模型配置作为最终模型的良好决策的测试框架。

在本节中,我们将探讨一些可能的原因、诊断方法和用于调查该问题的方法。

让我们看看三个主要领域:模型过拟合、数据样本质量以及学习算法的随机性。

1. 模型过拟合

也许最常见的原因是你过拟合了训练数据。

你找到了一个模型、一组模型超参数、一个数据视图,或者这些元素的组合,碰巧在训练数据集上提供了良好的性能估计。

k折交叉验证在一定程度上会有帮助。使用单独数据集调整模型也会有帮助。尽管如此,你仍然有可能继续努力,在训练数据集上过拟合。

如果是这种情况,测试性能可能更能代表所选模型和配置的真实性能。

诊断是否过拟合训练数据集的一个简单(但不简单)的方法是获取另一个模型性能数据点。评估所选模型在另一组数据上的表现。例如,可以尝试以下一些想法:

  • 尝试对测试数据集上的模型进行k折交叉验证评估。
  • 尝试在训练数据集上拟合模型,并在测试集和新的数据样本上进行评估。

如果你过拟合了,你有选择。

  • 也许你可以放弃当前的训练数据集,收集一个新的训练数据集。
  • 也许你可以以一种更柔和的方式重新划分你的样本为训练/测试集,以获得一个新的训练数据集。

我认为你迄今为止获得的结果值得怀疑,应该重新考虑。特别是那些你可能花费了太多时间进行调整的结果。

过拟合可能是分数不匹配的根本原因,尽管它可能不是首先要解决的领域。

2. 数据样本不具代表性

你的训练集或测试集可能是领域数据的不具代表性的样本。

这意味着样本量太小,或者样本中的示例未能有效地“覆盖”更广泛领域中观察到的案例。

如果你看到模型性能结果的波动很大,这很容易被发现。例如:

  • 交叉验证分数方差大。
  • 测试数据集上类似模型类型的方差大。

此外,你还会看到训练集和测试集分数之间的差异。

另一个好的二次测试是检查训练集和测试集(以及理想情况下交叉验证折叠)上每个变量的汇总统计信息。你正在寻找样本均值和标准差的较大方差。

补救措施通常是获取领域中更大、更具代表性的数据样本。或者,在准备数据样本和分割时使用更具区分度的方法。可以考虑分层k折交叉验证,但应用于输入变量,以在保持实值变量的总体均值和标准差以及分类变量的分布方面取得成功。

通常,当我发现项目出现过拟合时,这是因为测试框架不够稳健,而不是因为在测试数据集上进行爬坡。

3. 随机算法

你可能因为算法的随机性而看到模型分数上的差异。

许多机器学习算法包含随机分量。例如,神经网络中的随机初始权重、数据的随机排序以及随机梯度下降中的梯度更新,等等。

这意味着,每次在相同数据上运行相同的算法时,都会使用不同的随机数序列,从而产生具有不同性能的不同模型。

你可以在文章中了解更多关于这方面的内容

这个问题可以通过交叉验证模型性能分数的方差来观察,这与数据样本不具代表性非常相似。

这里不同之处在于,可以通过重复模型评估过程(例如交叉验证)来消除这种方差,以控制模型训练中的随机性。

这通常称为多次重复k折交叉验证,当资源允许时,用于神经网络和随机优化算法。

我在这里有更多关于评估模型的这种方法

更鲁棒的测试框架

通过设计一个稳健的测试框架,并收集证据证明你的测试框架确实是稳健的,可以及早解决许多这些问题。

这可能包括在你开始真正评估模型之前运行实验。诸如

  • 训练/测试分割的敏感性分析。
  • 交叉验证k值的敏感性分析。
  • 给定模型行为的敏感性分析。
  • 重复次数的敏感性分析。

关于最后一点,请参阅文章

你正在寻找

  • 交叉验证中测试之间的评估分数具有低方差和一致的平均值。
  • 训练集和测试集模型分数之间的人口均值相关。

如果需要,请使用标准误差和显著性检验等统计工具。

使用一种现代且未经调整的模型,该模型通常表现良好,例如随机森林。

  • 如果你发现训练集和测试集之间的性能分数存在差异,并且这种差异是一致的,那可能是可以接受的。你知道会发生什么。
  • 如果你在一个给定的测试中测量到平均性能分数的方差,你就会有可以用来解释结果的误差条。

我甚至可以这么说,没有一个稳健的测试框架,你获得的结果将是一团糟。你将无法有效地解释它们。使用一个脆弱的测试框架,在结果的呈现中将存在风险(或者如果是学术界,那就是欺诈)。在应用机器学习等数值领域,可重现性和稳健性是一个巨大的问题。

最后,避免过多使用测试数据集。一旦你有了强有力的证据表明你的框架是稳健的,在最终模型选择之前就不要触碰测试数据集。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

总结

在本文中,你发现了模型性能不匹配问题,即模型性能在训练集和测试集之间存在很大差异,以及诊断和解决该问题的方法。

具体来说,你学到了:

  • 模型性能不匹配问题,这可能在评估机器学习算法时发生。
  • 过拟合、代表性不足的数据样本和随机算法的成因。
  • 如何加强你的测试框架以从一开始就避免该问题。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

60 条关于《模型性能不匹配问题(以及如何解决)》的回复

  1. Raj 2018年4月20日 上午3:56 #

    再次感谢您的精彩博文!每次读您的博文我都能学到新东西。

    这里我有一个基本问题——在进行分层k折交叉验证之前,是否有方法可以检查训练数据的100%覆盖率?100%覆盖率是指训练样本/数据将包含模型需要考虑的所有可能的特征组合/数据/值,还是应该由领域专家确认?

    • Jason Brownlee 2018年4月20日 上午6:01 #

      通常我们不追求100%的覆盖率,而是追求具有统计代表性的样本。

      我们可以通过汇总统计来探索是否实现了这一点。

  2. Phuong Ho 2018年4月21日 上午9:41 #

    感谢您提供如此精彩的文章。我能问个问题吗?

    我正在使用plsr包(偏最小二乘法)和h2o包(深度机器学习)开发我的模型预测。从原始数据集开始,我将其80%用于模型训练(通过10折CV),并保留20%用于测试。我重复这个过程10次(即外层CV),每次数据都会在分割为训练集(80%)和测试集(20%)之前进行洗牌。我的观察是,plsr模型报告的Rcv(交叉验证R方)总是高于机器学习。然而,在外层循环中,当我使用交叉验证过程中获得的最佳模型来预测测试数据时,情况恰恰相反:在所有10次重复中,机器学习的R方都优于plsr。我能得出plsr的CV可能过拟合了数据的结论吗?

    谢谢,Phuong

    • Jason Brownlee 2018年4月22日 上午5:56 #

      我会改变一件事。

      丢弃交叉验证期间训练的所有模型,然后用所有训练数据训练一个模型,并用留存的测试集对其进行评估。

      • Anil kumar 2021年7月22日 晚上11:27 #

        我训练了一个模型,分数在训练集、测试集和验证集之间是一致的,但它在新数据集上的表现不符合预期。

        这种情况常见吗?
        训练集、测试集和验证集之间分数一致是否不是验证过程?
        这种情况可能是什么原因?

        此致
        Anil kumar

        • Jason Brownlee 2021年7月23日 上午6:00 #

          是的,非常常见。

          也许模型或数据预处理不合适。
          也许数据集太小,或者测试集太小。

  3. Sajan 2019年5月20日 晚上7:43 #

    嗨,Jason,

    我用大约15个特征构建了一个模型,并且在将许多分类特征转换为哑变量后,我的模型在训练前输入的特征数量约为680个。

    当我测试几个新数据点以从我的模型中预测费率时,它显示了一个错误:
    “模型特征数量必须与输入匹配。模型特征数为680,输入特征数为41。”

    在这种情况下我该怎么办?

    在我尝试使用独热编码处理我的变量之前,我得到了结果,但它们是荒谬的,因为它们按字母顺序处理变量并编号。

    你能给我一个解决办法吗?

    • Jason Brownlee 2019年5月21日 上午6:35 #

      推理时输入的模型必须经过与训练数据相同的预处理。

  4. Hani Berkovich 2019年6月12日 晚上9:41 #

    嗨,Jason,
    我开发了一个NLP分类模型,
    但我发现了一个问题
    首先,我在所有数据上运行训练过程,得到了模型和每个对象的概率;
    之后,我从基础数据中取出一个对象并对其执行模型;
    我期望得到相同的概率输出,但存在差异。
    请注意——
    每次运行我都会得到相同的结果;
    差异在于训练和使用模型之间。
    提前感谢🙂

  5. Hani Berkovich 2019年6月13日 下午4:35 #

    感谢您的回复。
    如果模型过拟合,是否会导致对相同数据产生不同的概率?

  6. Hani Berkovich 2019年6月18日 上午4:25 #

    再次感谢您,
    我想问的是,如果我的模型过拟合,一个症状就是我描述的情况,即我在构建模型时和使用模型时得到的数据概率不同。
    当我构建模型时,然后使用它?

    • Jason Brownlee 2019年6月18日 上午6:42 #

      抱歉,我没跟上,您能详细说明一下吗?

  7. Hani Berkovich 2019年6月18日 上午4:35 #

    请注意,数据是相同的,没有改变。

  8. Hani Berkovich 2019年6月23日 晚上10:00 #

    嗨,Jason,
    非常感谢您尝试提供帮助。
    我再向您解释一下我的问题。
    我开发了一个NLP ML算法,遇到了一个奇怪的情况。
    我用所有数据构建了模型。
    然后,我取了一个记录(数据没有改变)并用它运行模型,结果却不同。
    您对此情况有什么了解吗?
    您是否遇到过这种情况?
    谢谢你!!

    • Jason Brownlee 2019年6月24日 上午6:29 #

      你的意思是取一个记录并用它运行模型?

      重新训练模型?
      做出预测?

  9. Hani Berkovich 2019年6月24日 下午4:59 #

    做出预测,用来测试模型。
    谢谢你

  10. Amy 2019年8月5日 上午10:50 #

    嗨,Jason,

    如果您能提供一些关于样本外验证的见解,我将不胜感激。

    我构建了一个模型来预测未来会购买的用户,使用了历史数据。我的训练数据和测试数据的时间段是相同的,我想对未来时间进行预测。我在测试数据上获得了大约80%的准确率,但在实际应用中的表现非常差,大约只有50%。

    我的直觉是,训练、验证和测试数据应该具有不同的时间段才能获得良好的预测。

    • Jason Brownlee 2019年8月5日 下午2:02 #

      也许可以使用模型对可以获得真实值或可以获取真实值样本外数据进行预测。

      然后比较它们,看看模型在犯哪种类型的错误。

  11. ILIAS 2019年12月7日 上午8:36 #

    您好,感谢您的帖子,它们对理解机器学习非常有帮助。
    请问我有一个问题。

    我正在尝试比较不同的机器学习技术:ANN、KNN、随机森林。
    在我的研究中,我执行两个阶段:训练阶段和预测阶段。

    在训练阶段,我使用一个数据集,但在预测阶段我使用一个不同的数据集。这两个数据集在特征方面是相同的,但在实例方面是不同的。

    在训练阶段,我使用ANN、KNN、随机森林进行10折交叉验证,然后提取混淆矩阵来计算准确率、灵敏度和特异性,并保存模型。

    在预测阶段,我使用第二个数据集,但不是应用其中一种技术,而是将保存的模型应用于数据集,然后计算相同的性能度量。

    我发现预测阶段的结果高于训练阶段。

    例如:对于随机森林
    在训练阶段,我发现准确率为74.41%,灵敏度为72.26%,特异性为76.25%。
    在预测阶段,我发现准确率为99.30%,灵敏度为98.33%,特异性为100%。

    这正常吗?我无法解释这些结果,我的导师告诉我预测阶段应该低于训练阶段,我感到很困惑。

    非常感谢

    • Jason Brownlee 2019年12月8日 上午6:06 #

      是的,您应该预期结果会有一些差异。

      我建议使用重复k折交叉验证来估计模型在数据集上的性能,并且不要报告一个数字,而是报告平均值和标准差——例如,总结预期准确率分数的分布。

  12. Sumit Kumar 2020年2月19日 下午5:28 #

    嗨,Jason,

    我有一个目标变量不平衡(0 – 90%,1 – 10%)的场景。我使用ADASYN和SMOTE来平衡目标变量。我构建了一个模型,混淆矩阵的值如下:
    精确率 – 96%
    召回率 – 97%
    F1分数 – 97%
    准确率 – 97%

    当我将模型应用于实时数据时,召回率降至25%(下降72%)。

    这可能是什么原因?
    是否有其他方法可用于不平衡数据?
    是否有任何可能的解决方案可以让模型在实时数据上工作?

    • Jason Brownlee 2020年2月20日 上午6:07 #

      也许选择一个指标来关注,例如 F1 或 Fbeta。

      也许可以探索成本敏感型模型?

  13. SanjeevKumar TM 2020年2月28日 上午12:42 #

    你好,
    我训练了用于分类和回归的SVM、Tree、ensemble tree和ANN模型。其中ANN和SVM表现良好,但ANN比SVM稍好。这是什么原因?除了误差评估方法,我该如何证明ANN更好?ANN表现良好的具体原因是什么?

    • Jason Brownlee 2020年2月28日 上午6:14 #

      我们没有充分的理论来解释为什么一个算法在给定的数据集上比另一个算法表现得更好。

      我们所能做的最好的就是使用受控实验来收集统计证据。

      • SanjeevKumar TM 2020年2月28日 晚上10:11 #

        感谢您的回复,我已遵循说明。

        • Jason Brownlee 2020年2月29日 上午7:13 #

          干得好。

          • Sanjeev Kumar TM 2020年4月29日 上午5:15 #

            能否提供一些关于“你好,”的例子?

            用于收集统计证据的受控实验,以找到模型性能。因为我对这个不太理解。

            请您帮忙。

          • Jason Brownlee 2020年4月29日 上午6:34 #

            是的,这个博客上有数百个受控实验的例子,请使用搜索功能。

  14. Rudra 2020年2月28日 下午7:06 #

    Jason您好,我有一个问题。假设由于数据不足,我的训练/测试集不能很好地代表我未来的实施集。通过过采样/欠采样来调整训练/测试数据,使其看起来像实施集,这样做是否明智?

    例如,在我的实施集中,我知道我处理的是80%的狗和20%的猫,但我的训练数据不足(比如15%的狗,80%的猫和5%的鸟)?

    您能否提供任何关于处理这种情况的学术文章参考?

    • Jason Brownlee 2020年2月29日 上午7:11 #

      如果你对某些类别的例子很少,可以尝试从原始数据集的公平划分中对训练数据集进行过采样。

  15. David 2020年3月17日 上午2:24 #

    老师您好,我有一个问题。我怎么能确定我遵循的程序是正确的呢?遵循构建机器学习模型的步骤,我们首先分析数据,然后准备数据。
    在数据准备中,我们有多种选择。例如,如果数据有缺失值,我可以选择删除这些值或替换它们(以及其他技术)。我怎么能确定“正确”的技术是什么呢?我的意思是,我总是可以使用一个算法来获得初始精度,然后我可以比较我将对该精度进行的更改。然而,我能依靠那个精度吗?特征选择也是如此。我无法确定所有技术中哪种是最好的。

    选择模型然后进行超参数调整的问题也是一样。我怎么能确定我选择的模型是正确的呢?因为没有超参数调整,一个特定的模型可能更好,但在调整所有超参数后,另一个模型可能具有更好的准确性。例如,在SVM和KNN之间,没有调整时SVM的准确性更好,所以我选择它然后进行调整。然而,如果我尝试同时调整这两个模型,KNN可能会比SVM更好。

    总之,我的问题是,构建机器学习模型的所有步骤之间存在许多可能的组合。我知道测试所有这些组合(计算能力等)在实践中是不可能的,然而,依赖“短暂”的准确性是否正确?或者是否存在一个“正确”的程序来遵循?

    提前感谢,并且抱歉我的英语不是我的母语。

  16. Jose Q 2020年3月28日 下午12:10 #

    嗨,Jason,
    这篇帖子太棒了!我有一个模型性能不匹配的问题,这篇帖子帮助我理解了可以做什么。
    这对我很重要,因为这是我的第一个工作模型。
    我发现
    – 我过度拟合了基于决策树的训练模型,所以我想我需要修剪它。
    – 我需要更多数据,因为测试数据似乎与训练数据处于不同的分布。当我绘制训练和测试数据的二维主成分时,它们看起来像不同的、分离的数据点云。

    我希望很快能获得更多数据来确认这个问题。
    非常感谢

  17. Sanjeev Kumar TM 2020年4月29日 上午5:14 #

    你好,

    抱歉回复晚了。

    对于我之前的查询,我尝试找到用于收集统计证据的受控实验。
    但我很难找到关于如何进行受控实验以收集统计证据的建议。请提供您关于支持我问题的教程,以获得解决方案。

    请帮助我如何进行受控实验以收集统计证据来找到模型性能。

    • Jason Brownlee 2020年4月29日 上午6:34 #

      您的问题非常广泛,我不知道如何回答。

  18. Chess_One 2020年6月1日 下午10:53 #

    Jason您好,感谢这篇精彩的文章。

    请问我有一个问题。

    我训练了一个用于分类的light-gbm模型(150个观测值),我将80%用于模型训练和使用5折交叉验证进行超参数调优,并保留20%用于测试。

    我重复了这个过程(100次),我得到了不同的结果(每次我更改训练(超参数调优)和测试的划分)。我应该选择在测试数据上给出最佳分数(AUC)的模型,还是平均值?

    算法
    重复 {1,…100}
    X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2)
    ————————————————————————————–
    使用5折交叉验证对(X_train,y_train)进行参数调优
    —————————————————————————————
    使用80%(X_train,Y_train)的最佳超参数训练模型
    ——————————————————————————————–
    在20%(X_test,y_test)上进行评估。
    ——————————————————————————————-
    100个分数(Auc)[标准差:0.12]
    我应该取分数均值,还是那个具有高标准差的最佳值?

    • Jason Brownlee 2020年6月2日 上午6:16 #

      不行。

      你正在估计模型在使用新数据进行预测时的平均性能。

      你使用这个估计来选择使用哪种建模过程,然后你在所有可用的数据上进行拟合,并用它来开始进行预测。

  19. Chess_One 2020年6月2日 上午8:22 #

    感谢您的回答,总的来说我认为您理解了我所做的,但我不太确定我是否很好地理解了第二点。

    您能否建议我如何获得最终分数?实际上,对于不同的测试数据(未见过的数据),我得到了不同的结果。我应该只取一个混合值(不是100个),但如果是这样,哪个是正确的?

    非常感谢您的帮助。

    • Jason Brownlee 2020年6月2日 下午1:17 #

      很抱歉,我不明白你的问题。或许你可以换一种说法?

      • Chess_One 2020年6月2日 下午6:58 #

        确实,在机器学习中很难被理解:)

        只是为了理解您的观点,第二点“您使用估计来选择使用哪种建模过程,然后您在所有可用数据上进行拟合并使用它来开始进行预测。”您建议这样做吗?或者您能否重新表述一下?

        到目前为止,我做了一个不应该做的过程,这有点像双重交叉验证。但现在我想知道我应该怎么做。

        我的基本问题是:当我测试新的数据(从一开始就留出了20%)在所有CV和超参数选择(CV均值最大值)之后。那么,如果我重复测试100次,使用不同的超参数和相同的20%测试数据,我希望稳定最终结果。但是这样做是否正确?机器学习竞赛是如何做的?还是我应该只使用80%训练CV阶段选择的最佳超参数?

        另外,我实际上在想我是否应该分别回复一个临床问题和机器学习问题,因为我正在处理生存的临床数据。

  20. DandanLiu 2020年6月20日 下午11:48 #

    亲爱的 Jason,

    感谢这篇教程,它非常有帮助。我有一个关于不确定性的具体问题。

    我构建了一个LSTM模型来预测不同窗口长度的人类活动,并使用种子使我的结果可重现。现在的问题是,每次窗口长度为1.25秒时,性能都比其他窗口差。(我使用的窗口是从0.25到3.5,步长为0.25秒)。

    据我理解,这可能是由于权重的随机初始化,导致LSTM找不到一个好的最优点。但我不确定是否有其他原因?

    而且根据您的教程,在这种情况下,我应该设置不同的种子数并多次运行模型以获得平均结果吗?还有其他方法可以尝试吗?

    谢谢
    ldd

  21. Bright Chang 2020年7月26日 下午2:11 #

    Jason您好。非常有信息量的教程!我正在做一个推文分类项目。这里的任务是确定一条推文是否与交通有关。

    我收集了大量的推文。为了训练一个分类器,我首先使用关键词获取一些候选推文。然后我手动审查这些推文,检查它们是否与交通有关。我还构建了另一个与交通无关的数据集。最后,我得到了1000条与交通相关的推文和2000条与交通无关的推文。

    然后我使用CNN-LSTM模型,基于我刚刚创建的标记数据来训练一个分类器。实际上,该模型表现得相当好,在测试数据上达到了0.99的F1分数。关于模型在测试数据上表现的混淆矩阵是

    [[384 3]
    [ 2 223]]

    然而,当我使用训练好的分类器对所有我收集的推文进行预测时,表现却很糟糕。我手动检查了分类器标记为“traffic_related”的推文,发现大多数推文根本与交通无关。

    我想知道我哪里做错了。更多信息,请查看我发布的StackOverflow链接:https://stackoverflow.com/questions/63087654/well-trained-classifier-does-not-perform-well-in-same-source-of-dataset

    非常感谢您的时间!

    • Jason Brownlee 2020年7月27日 上午5:44 #

      谢谢!

      不错的问题。

      或许可以使用交叉验证来估计模型性能。
      或许可以探索不同的模型类型,以确认是否需要神经网络。
      或许可以检查更多数据,并确认训练数据是合理的。
      或许可以确认您的保留数据集足够具有代表性。

      告诉我进展如何。

  22. MS 2020年8月16日 上午12:52 #

    Jason,您能否提供任何关于更稳健的测试工具包程序的详细讨论链接?

  23. Michelle 2020年10月18日 上午10:27 #

    Jason您好,感谢这篇文章。
    我认为这个问题经常发生在时间序列数据上,这是因为时间序列数据不能被随机打乱,这导致了训练数据和测试数据的不匹配。训练好的LSTM模型在训练数据上表现完美,但在测试数据上表现很差,您对如何解决这个问题有什么想法吗?
    谢谢。

  24. Samir 2022年3月9日 下午11:17 #

    一如既往,感谢您这篇精彩的文章。
    请就我分段模型遇到的一个问题给您一些建议。我处理的是大尺寸的显微图像,所以我在块状(patch-wise)的基础上训练一个类似U-net的模型。我使用5次交叉验证来分割块。在训练模型时,我为训练集和验证集(块)取得了非常好的结果,但当我测试模型在测试数据集上的表现时(预测块并拼接结果形成整个图像),我得到了非常糟糕的结果,您能解释一下可能出了什么问题吗?

    我还有另一个问题,随着epoch的进行,分段预测逐渐变差而不是变好?

  25. Rishik Sai Santhosh 2024年9月15日 下午4:43 #

    Jason您好,我已经在我的图像分类数据集上微调了四个模型,所有模型的测试准确率都约为98%。现在,当我用与此相关的全新数据集评估我的模型性能时,模型的准确率约为76%,而且模型表现不佳的原因是其中两个类别的预测错误,其他两个类别的预测是正确的。可能的原因是什么?

Leave a Reply

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。