Machine learning 我如何能够自愿地过度拟合文本分类模型
我想展示一个模型的例子,该模型过度拟合测试集,不能很好地概括未来的数据 我将新闻数据集分为3组:Machine learning 我如何能够自愿地过度拟合文本分类模型,machine-learning,classification,logistic-regression,Machine Learning,Classification,Logistic Regression,我想展示一个模型的例子,该模型过度拟合测试集,不能很好地概括未来的数据 我将新闻数据集分为3组: train set length: 11314 test set length: 5500 future set length: 2031 我正在使用一个文本数据集并构建一个countvectorier。 我正在创建一个网格搜索(无交叉验证),每个循环将测试向量器上的一些参数('min_-df','max_-df')和我的模型上的一些参数logisticReturnal('C','fit_-int
train set length: 11314
test set length: 5500
future set length: 2031
我正在使用一个文本数据集并构建一个countvectorier
。
我正在创建一个网格搜索(无交叉验证),每个循环将测试向量器上的一些参数('min_-df','max_-df')和我的模型上的一些参数logisticReturnal
('C','fit_-intercept','tol',…)。
我得到的最好结果是:
({'binary': False, 'max_df': 1.0, 'min_df': 1},
{'C': 0.1, 'fit_intercept': True, 'tol': 0.0001},
test set score: 0.64018181818181819,
training set score: 0.92902598550468451)
但是现在如果我在未来的测试集上运行它,我将得到与测试集类似的分数:
clf.score(X_future, y_future): 0.6509108813392418
我如何证明我过度拟合了测试集,因此无法很好地推广到未来的数据?您有一个在某些数据“训练集”上训练的模型 对这些数据执行分类任务,您的得分为92% 然后获取培训期间未看到的新数据,如“测试集”或“未来集” 对这些看不见的数据集中的任何一个执行分类任务,您的得分为65% 这正是过度拟合模型的定义:它具有非常高的方差,可见和不可见数据之间的性能差异很大 顺便说一下,考虑到您的具体情况,可能导致过度拟合的一些参数选择如下:
- 最小值df=0
- 逻辑回归的高C值(这意味着低正则化)
在您的18845个示例中,培训集中有11314个,验证集中有5500个,测试集中有2031个。谢谢,这一点非常清楚。我知道有可能构建一个模型,该模型将过度拟合测试集而不是训练集。你能想出一个策略来生成这样的模型吗?因为我使用测试集上的分数来调整参数,理论上可能会发生这种情况,但这很难做到。没有办法“过度拟合”测试集,因为过度拟合意味着一些负面的东西。理论模型符合测试集的92%,但只符合训练集的65%,这确实是一个非常好的模型(假设你的测试集是平衡的)。也不要使用测试集来调整参数。编辑:我认为你所说的“测试集”实际上可能是一个验证集,而你的“未来集”实际上就是测试集。是的,你是对的。给你们所有的信息,我想让这个视频我看到的意义。我试图模拟Kaggle用户在使用私有数据集时发生的情况。似乎他们在公共测试数据集上做得很好,但在私有测试数据集上做得不好,所以我猜他们使用公共测试数据集作为验证测试(而且他们过度拟合),并且没有很好地推广到未来的数据(私有测试数据集),谢谢Tryer,你是对的。我试图模拟一些Kaggle用户在这段视频中犯的错误,他们基本上过度拟合了公共测试数据集,无法在私有数据集上进行概括。我试着用一个简单的例子来模拟发生在他们身上的事情。如果我真的要解决这个问题,我将使用kfold对训练集进行交叉验证,创建许多不同的验证集,然后使用测试集来检查它的泛化性,但我试着做的是模拟一些人所犯的错误(正如你在我之前的评论中可以看到的)“ReleleOK,我明白。一个模型在验证集上做得很好,但是在测试集上很差的一种方式是,如果验证集与测试集没有很好的混合。作为一个例子,考虑一个具有3个类的任务。如果测试集被均匀地划分(每个类的33%个例子)。,但验证集划分得很差(比如80%的类别1、10%的类别2、10%的类别),那么这将导致同样的现象。我不确定如何为您的问题设计这样的情况,但可能故意使验证集不平衡可能会实现。是的,我明白了。现在我正在跳出框框思考,这些用户可能会将公共测试集混合到培训集中,并对整个过程进行培训。这样做您可以做到吗将在公共测试集上运行良好,因为它将过拟合。