机器学习中的过度拟合术语

时间:2018-07-29 17:17:18

标签: python machine-learning scikit-learn

在第50页的书Introduction to Machine Learning with Python中,作者正在对数据集执行线性回归,并获得:

training set score: 0.67
test set score: 0.66

然后,他们指出他们“可能不合适,而不是过度拟合”。

但是,当使用TensorFlow的Basic Classification Tutorial时,他们正在使用带有神经网络的MNIST Fashion数据集,并获得:

training set score: 0.892
test set score: 0.876

然后他们声明以下内容

“事实证明,测试数据集的准确性略低于训练数据集的准确性。训练准确性和测试准确性之间的差距是过度拟合的一个例子。过度拟合是指机器学习模型在新数据上的表现比其训练数据上的表现差的情况。”

我认为TensorFlow网站上的报价是正确的,或者它们都是正确的,我并不完全理解过度拟合。

3 个答案:

答案 0 :(得分:2)

当训练和测试的准确性都较低时,就会出现欠拟合的情况。这表示您的模型存在系统性问题,即数据更适合多项式模型,但您使用的是线性模型。因此,培训和测试的〜66%准确性被认为是不合格的,因为它们都很低。通常,两组数据均较高的误差表示拟合不足。

当您在训练中具有较高的准确性但在测试中具有较低的准确性时,就会发生过度拟合。这表示您的模型过于适合您的训练数据,而不能很好地推广到其他数据。通常,训练时的错误率低而测试中的误差率高则表明过拟合。

答案 1 :(得分:1)

通常,建立模型的训练非常困难,该模型在训练和验证(或测试或保留,无论您要称呼什么)集上表现出相同的性能。因此,训练集和验证集之间的差距将始终存在(几乎)。您将经常看到基于差距的过度拟合的定义,但实际上它不适用,因为它不是定量的。这里更笼统的概念是您可能想在Google上搜索的“偏差方差折衷” 。相关的问题是差距有多大,性能如何以及验证集的性能在模型复杂度变化时的表现如何。

我发现来自维基百科的这个数字很有启发性:https://en.wikipedia.org/wiki/Overfitting#/media/File:Overfitting_svg.svg。 x轴是NN或GBM的训练迭代次数(epoch),但您也可以将其视为模型复杂性参数,例如多项式模型中包含的幂数。如您所见,训练样本和验证样本之间始终存在性能差距。但是,选择不过度拟合的模型的关键是在训练样本的表现(=偏倚)和验证样本的表现(训练与实际表现之间的差异)之间选择最佳权衡验证样本=方差)。

答案 2 :(得分:0)

过拟合和过拟合

您能做的最过度拟合的是训练集上的精度为def update_diary_entry(self,entry_id): query = "select * from entries where entry_id='{}'".format(entry_id) result = db.execute(query) entry = result.fetchone() data = request.get_json() date_created = entry[4] if date_created == datetime.date.today(): query = "update entries set title='{}',body='{}' where entry_id='{}'"\ .format(data['title'], data['body'], int(entry_id)) db.execute(query) return {'message': 'diary entry updated succesfully','date':date_created}, 406 else: return {'message': 'diary entry can only be updated on the day it was created'}, 406 。 这意味着您的模型学会了准确预测它之前所见过的输入。 如果您遇到这种情况,您的测试集可能会表现很差。

您可以通过以下方式检测过度拟合:

  • 训练集上的高精度
  • 培训和测试集之间的差距很大

您可以通过以下方式检测拟合不足:

  • 训练集的准确性较低(与测试集的表现无关)

示例:

1)

100%

此示例在训练集上得分较低。因此,拟合不足似乎是一个公平的假设。

2)

training set score: 0.67
test set score: 0.66

这取决于解释。训练集上的分数很高,测试集上也有差距。

如果两组中的示例都非常相似,那么我会说有些过拟合。但是,如果两组数据非常不同(例如,来自不同的来源),则结果可以认为是可以接受的。