过度拟合是一个概念,当模型与训练数据集完全匹配时。虽然这听起来像是一个很好的拟合,但事实恰恰相反。在过度拟合中,模型在未见过的数据中的表现要差得多。当一个模型完全适合训练数据集,但在新的测试数据集上表现不佳时,可以认为是 "过度拟合"。另一方面,当一个模型被训练的时间不足以确定训练数据中的有意义的模式时,就会发生欠拟合。过度拟合和欠拟合都不能适用于大部分新鲜和未见过的数据集。
来源。IBM云
现在,一个最佳的模型可能听起来接近于不可能实现;它有一个公式。虽然欠拟合的模型显示出较少的方差和较多的偏差,但过度拟合的模型显示出较高的方差,其中的偏差较少。不用说,将一个欠拟合的模型推向过拟合是很棘手的。然而,正是在一个战略点上,方差和偏差的结合产生了一个最佳的模型。
源于此。IBM云
检测
由于过拟合是一个常见的问题,所以检测它是至关重要的。要检测过度拟合的数据,前提条件是必须在测试数据上使用。这方面的第一步是将数据集分为两个独立的训练集和测试集。如果模型在训练集上的表现比测试集上的表现要好得多,那么它显然是过拟合了。
然后在不同的测试集上对模型的性能进行评估。这个测量是通过Scikit-learn的训练-测试分割方法完成的。在第一步,定义一个合成的分类数据集。接下来,应用分类功能将分类预测问题定义为两个,一边是行,一边是列。然后运行这个例子来创建数据集。
然后,数据集被分成训练子集和测试子集,其中70%用于训练,30%用于评估。接下来,选择一个ML模型进行超拟合。最后,将该模型的准确度分数与它在测试集上的表现进行比较,并作出说明。这个例子被允许运行几次,以便得到一个平均结果。
检测到过拟合后,现在模型需要摆脱它。有各种方法可以防止过度拟合。这些方法包括。
-
使用更多的数据进行训练。有时,通过用更多的数据训练模型,可以避免过度拟合。可以用更多的数据来喂养一个模型,这样算法可以更好地检测信号,不至于被过度拟合。然而,这并不是一个有保障的方法。简单地添加更多的数据,特别是当数据不干净的时候,可能弊大于利。
-
早期停止。当一个模型通过一轮又一轮的重复训练时,可以对模型的每一次重复进行评估。有一个与重复有关的收益递减模式。最初,一个模型的性能不断提高,直到达到一个高原后,过拟合开始增加。早期停止是指在这个点到来之前暂停进程。
,
源于此。精英数据科学
-
正则化或数据简化。有时,即使有大量的数据,当一个模型过于复杂时,它也会过度拟合一组数据。这可以通过删除参数的数量来解决,或者修剪,例如,决策树模型,或者在神经网络上使用dropout。
-
移除特征。这是关于那些有内置特征选择的算法。去除不相关的输入特征可以提高模型的通用性。
-
组合。合并是将多个独立模型的预测结果合并起来。最常用的合集技术是袋法和提升法。装袋是一种通过训练大量的弱学习者来减少模型的过拟合,这些学习者被设置成一个序列。这有助于序列中的每个学习者从前面的学习者的错误中学习。
Boosting是将所有的弱学习者放在一个序列中,以便出现一个强学习者。bagging使用复杂的基础模型并平滑其预测,而boosting则是使用基本模型,然后增加其总体复杂性。
- 数据增强。与使用更多的数据来训练模型相比,数据增强是一个更便宜的选择。这种方法不是试图获取更多的数据,而是简单地试图使数据集显得更加多样化,而不是让模型无法学习数据集。这样一来,每次模型重复一个数据集时,它就会出现不同的情况。
另一种类似于数据增强的方法是向输出数据添加噪声。在输入数据中加入适量的噪声可以稳定它,而在输出数据中加入噪声可以使数据集更加多样化。这很棘手,因为大量的噪声也会干扰数据集。
- 交叉验证。在这种技术中,最初的训练数据集被分割成几个小型的训练测试分割。然后用这些分块来调整模型的超参数。在最终确定模型之前,这使得测试集没有被看到。