在机器学习中,当算法与其训练数据过于接近甚至完全吻合时,就会发生过拟合,这会导致模型无法根据训练数据以外的任何数据做出准确的预测或结论。
过拟合违背了机器学习模型的目的。通过将模型泛化至新数据,最终我们能够每天使用机器学习算法做出预测,并对数据进行分类。
在构建机器学习算法时,会利用样本数据集来训练模型。但是,当模型针对样本数据训练时间过长或模型过于复杂时,它会开始学习数据集中的“噪声”或无关信息。当模型记住了噪声并过于贴近训练集时,模型就会变得“过拟合”,无法很好地泛化到新数据中。如果模型无法很好地泛化到新数据,则它将无法执行其预期的分类或预测任务。
低错误率和高方差是过拟合的明显标志。为了防止出现这种行为,通常会将部分训练数据集留作“测试集”,用来检查是否存在过拟合。如果训练数据的错误率较低,而测试数据的错误率较高,则表明存在过拟合。
阅读并了解为什么 IBM 在《IDC MarketScape:2023 年全球 AI 治理平台》报告中被评为领导者。
立即注册,获取 AI 治理白皮书
如果过度训练模型或模型过于复杂导致出现过拟合,那么逻辑上的预防应对措施就是提前暂停训练过程(也称为"早停法"),或者通过消除不太相关的输入来降低模型的复杂性。但是,如果过早暂停或排除太多重要特征,就可能会走向另一个极端 – 模型欠拟合。当模型没有训练足够长的时间,或者输入变量不够显著,无法确定输入变量和输出变量之间的有意义关系时,就会发生欠拟合。
在这两种情况下,模型都无法在训练数据集中确定主导趋势。因此,对于看不见的数据,欠拟合的泛化效果也很差。然而,与过拟合不同,欠拟合的模型在预测时的偏差较高,方差较小。这说明了偏差方差权衡,在欠拟合的模型转变为过拟合状态时,就会发生这种情况。随着模型不断学习,其偏差会减小,但在过拟合状态下,其方差可能会增加。拟合模型时,目标是在欠拟合和过拟合之间找到“最佳点”,以便确定主导趋势,并将其广泛应用于新数据集。
要了解机器学习模型的准确性,必须测试模型的拟合度。K 折交叉验证是最常用的模型准确性评估技术之一。
在 K 折交叉验证中,数据被拆分为 k 个大小相等的子集,这些子集也称为“折叠”。其中一个“k 折”将充当测试集,也称为留出集或验证集,其余“折叠”则用于训练模型。不断重复这个过程,直到每个“折叠”都用作留出“折叠”。每次评估后,都会保留一个分数,在完成所有迭代后,会求这些分数的平均值,用于评估整个模型的性能。
虽然使用线性模型有助于我们避免过拟合,但许多现实问题是非线性的。除了了解如何检测过拟合之外,了解如何避免过拟合也很重要。以下是一些可以用来防止过拟合的技术:
上文介绍了过拟合的公认定义,但最近的研究(链接位于 IBM 外部)表明,复杂的模型(如深度学习模型和神经网络)尽管被训练为“完全拟合或插值”,但仍能以高精度运行。这一发现与该主题下的历史研究结果不一致,下面的“双下降”风险曲线作了进一步解释。您可以看到,当模型学习超过插值阈值时,模型的性能会提高。我们前面提到的避免过拟合的方法,例如早停法和正则化,实际上可以防止插值。