即使使用培训/验证/测试数据,决策树也会过度拟合

时间:2012-02-17 17:44:01

标签: validation testing

我的问题如下。我有6个数据集(从不同日期收集),我想为其构建决策树分类器。我需要找到最优的树深度参数,以避免过度拟合,并对新数据有良好的预测。

我的第一次尝试是将每个数据集分成50%/ 25%/ 25%进入训练/验证/测试,并将它们合并为三个大文件。我生成了一个准确性与树深度的图表,使用大型训练集训练并从大验证集计算精度。但是,我注意到验证集的准确性随着树深度的增加而不断增加而且从未下降过!

在树深20处,精度达到99%左右。即使测试集的准确度也在99%左右。根据我对数据的了解,我认为它必须过度拟合。我通过删除其中一个数据集来确认这一点,只剩下5个。我使用与上面相同的程序训练剩余的5个数据集,分成训练/验证/测试并在20的深度训练它。这次我测试了它我遗漏的数据集产生了非常差的结果,精度在50%以内。

事实证明,由于数据集的时间序列性质,我的数据集有很多“重复”数据。至于采样25-50%的任何数据集可能相当于采样100%,因此过拟合。我决定尝试不同的策略,随机改组6个数据集并通过3/3将它们分成训练/验证,重复20次并平均结果以找到最佳树深度。我还在等待结果,应该在几天内完成......

所以我的问题(终于!)是我做的是一个声音方法吗?我应该注意哪些其他类型的搞笑数据?看起来我的数据集中有一个我在任何地方都提到过的“陷阱”。

1 个答案:

答案 0 :(得分:1)

原来问题非常微妙。简而言之,不要对数据进行采样(对于不平衡的数据集)并进行交叉验证!

长篇故事。我有一个不平衡的数据集,其中我有比正数更多的负样本约7-10倍。我的选择是要么通过重复采样正面,要么采样负面采样。我带着抽样去了。这意味着在交叉验证期间,每个折叠具有非常高的机会来挑选所有原始阳性样品并因此过度拟合阳性样品。我现在正在对负样本进行抽样,进行几次交叉验证并对数据进行混洗。似乎现在工作。