在生成文档术语矩阵之前或之后,是否拆分为测试集和训练集



我正在处理简单的机器学习问题,并试图构建一个可以区分垃圾邮件和非垃圾邮件短信的分类器。我很困惑,是需要在拆分为测试和训练集之前生成文档术语矩阵,还是应该在拆分为测试和训练集之后生成文档术语列表?

我尝试了两种方法,发现当我在生成文档术语矩阵之前对数据进行拆分时,准确度略高。但对我来说,这毫无意义。准确度不应该一样吗?这些操作的顺序有什么不同吗?

从质量上讲,无论哪种方式,您都不需要。然而,正确的程序要求您将训练和测试数据完全分开。总体概念是测试数据而不是在训练中直接表示;这有助于减少过度贴合。测试数据(以及后来的验证数据(是训练模型在训练过程中从未遇到过的样本。

因此,测试数据应该而不是包含在预处理中——文档术语矩阵中。这打破了这种分离,因为模型在一个方面"看到"了训练期间的测试数据。

从数量上讲,您需要首先进行拆分,因为该矩阵将用于针对训练集来训练模型。当您将测试数据包含在矩阵中时,您获得的矩阵在表示训练数据时有点不准确:它不再正确地表示您实际训练的数据。这就是为什么你的模型不如遵循正确分离程序的模型好。

这是一个微妙的差异,最重要的是因为训练集和测试集被认为是相同可能输入群体的随机样本。随机差异会给你带来小惊喜。

最新更新