如何通过scikit-learn RandomForestClassifier实现稳定性?

时间:2016-06-03 10:18:56

标签: machine-learning scikit-learn classification random-forest stability

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

由于每次训练时都存在差异,我并不总是看到对测试数据进行分类的精确度......但有时候我会这样做。所以我试过做的是反复训练分类器,直到我在分类测试数据时看到良好的精度,然后将该版本保存到磁盘以用于实时分类,因为新数据来了in。

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

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

问题1:模型如何能够连续3个月具有良好/稳定的精确度,但在第4个月会出现挣扎?

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

1 个答案:

答案 0 :(得分:2)

如果您采用这种方法,则需要另一个测试集

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

将您的数据分为三部分:80%的培训,10%的验证,10%的测试。

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