0

我有 3.25 年的基于时间的数据,我正在使用 scikit-learn 的 RandomForestClassifier 尝试对进来的实时数据进行分类。我的数据集大约有 75,000 行和 1,100 列,我的训练/测试拆分是前 3 年用于火车(66,000 行),过去 0.25 年(3 个月或 9,000 行)用于测试。

由于每次训练时都会存在可变性,因此我并不总是看到对测试数据进行分类的精确度……但有时我会看到。因此,我尝试做的是一遍又一遍地重新训练分类器,直到我确实看到对测试数据进行分类的精度很高,然后将该版本保存到磁盘中,以便在新数据进入时用于实时分类。

有人可能会说这会使模型过度拟合测试数据......这可能是真的,但我已经决定,由于训练中的随机性,在第一次迭代和第 100 次迭代中找到一个好的拟合没有区别,因为发生良好拟合的迭代完全是偶然发生的。因此,我决心继续重新训练,直到找到合适的人选。

我所看到的是,我可以找到一个适合在整个 3 个月的测试期间具有良好/稳定精度的拟合,但是当我使用该模型对第 4 个月的实时数据进行分类时,它不是稳定,精度差很多。

问题 1:一个模型怎么可能连续 3 个月具有出色/稳定的精度,但在第 4 个月却陷入困境?

问题 2:如何更改或增强我的设置或流程以实现实时数据的分类精度稳定性?

4

1 回答 1

2

如果你这样做,你需要另一个测试集

你正在做的是验证。确实存在对测试集过度拟合的很大风险。

将您的数据分成三部分:80% 的训练、10% 的验证、10% 的测试。

训练多个分类器,保留在验证集上表现最好的一个。使用测试集来验证您确实有一个工作分类器。如果验证集和测试集的性能差异很大,那是个坏消息(在所有分类器上测试!)

于 2016-06-03T20:53:56.160 回答