训练集和测试集是否必须与预测集不同?

时间:2019-12-06 09:16:37

标签: python machine-learning classification data-modeling predict

我对ML比较陌生。我知道一般规则,即我们仅应在测试集中测试经过训练的分类器。

但是现在出现了一个问题: 当我已经准备好经过训练和测试的分类器时,可以将其应用于作为训练和测试集基础的同一数据集吗? < / strong>还是我必须将其应用于不同于训练+测试集的新预测集?

如果我预测一个时间序列的标签列怎么办,我是否必须转移所有特征的全部(不仅是时间序列标签列的过去列,还包括所有其他正常列)功能)将训练和测试集恢复到数据与预测集之间没有“知识”拦截的时间点?

然后,我将训练和测试分类器,以对过去n个月内已转移的特征进行评分,并根据未移动和最新的标签列进行评分,然后根据最近的未移动特征进行预测。移位和未移位的要素具有相同的列数,我通过将移位后的要素的列名称分配给未移位的要素来对齐移位和未移位的要素。

2 个答案:

答案 0 :(得分:1)

我认为您正在混淆一些概念,因此我将尝试对监督学习进行一般性解释。

  • 训练集是您的算法所基于的。您将其拆分为X(功能)和Y(目标变量)。
  • 测试集是用于评分模型的集合,它必须包含训练集中没有的数据。这意味着测试集也具有X和Y(表示您知道目标的值)。发生的情况是,您基于X预测f(Y),并将其与Y进行比较,然后查看预测的效果如何
  • 预测集就是新数据!这意味着通常您没有目标,因为监督学习的全部目的都是预测目标。您将只有X(特征),并且可以预测f(X)(您对目标Y的估计)并将其用于您需要的任何事情。

因此,最后,测试集只是一个预测集,您可以将目标与之进行比较。

对于时间序列,它有点复杂,因为特征(X)通常是对目标变量(Y)的过去数据的转换。例如,如果您要预测今天的SP500价格,则可能要使用过去30天的平均值作为功能。这意味着对于每一天,您都需要在过去的几天中重新计算此功能。
不过总的来说,如果您是ML的新手,我建议您从NON时间序列数据开始,因为在功能工程和数据管理方面,时间序列难度更大,而且容易出错。

答案 1 :(得分:0)

半年后在这里回答自己。第一个答案是我对“时间序列”一词有轻微的误解,这是由于一个不清楚的问题引起的(已编辑)。

上面的问题当我已经准备好经过训练和测试的分类器时,可以将其应用于作为训练和测试集基础的同一数据集吗?,答案很简单:没有。

是否必须转移所有功能 上面的问题,答案很简单:是。

简而言之,如果我预测了一个月的班级列:除了我转换为要素的上一个班月以外,我还必须将所有非班级列也移回过去,因此必须在该月之前知道所有数据因为班级是可以预测的。