Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 即使有培训/验证/测试数据,决策树也会过度拟合_Validation_Testing - Fatal编程技术网

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

Validation 即使有培训/验证/测试数据,决策树也会过度拟合,validation,testing,Validation,Testing,我的问题如下。我有6个数据集(收集自不同的日子),我想为它们构建一个决策树分类器。我需要找到最佳树深度参数,以避免过度拟合,并对新数据进行良好预测 我的第一次尝试是将每个数据集按50%/25%/25%分割成培训/验证/测试,并将它们合并成三个大文件。我制作了一张精度与树深度的关系图,使用大训练集进行训练,并根据大验证集计算精度。然而,我注意到验证集的准确性随着树深度的增加而不断增加,而且从未下降过 在树深20的情况下,准确率达到99%左右。甚至测试集的准确率也在99%左右。根据我对数据的了解,我

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

我的第一次尝试是将每个数据集按50%/25%/25%分割成培训/验证/测试,并将它们合并成三个大文件。我制作了一张精度与树深度的关系图,使用大训练集进行训练,并根据大验证集计算精度。然而,我注意到验证集的准确性随着树深度的增加而不断增加,而且从未下降过

在树深20的情况下,准确率达到99%左右。甚至测试集的准确率也在99%左右。根据我对数据的了解,我认为这是过度拟合。我通过删除其中一个数据集确认了这一点,只留下5个数据集。我使用与上述相同的程序对剩余的5个数据集进行了培训,分为培训/验证/测试和20个深度的培训。这次我用我遗漏的数据集对它进行了测试,结果很差,准确率低50%

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


所以我的问题(最后!)是我所做的是否是一个合理的方法?我还应该注意哪些有趣的数据?我的数据集似乎有一个我在任何地方都提到过的‘gotcha’。

结果表明问题相当微妙。长话短说,不要对数据进行上采样(对于不平衡的数据集)并进行交叉验证


说来话长。我有一个不平衡的数据集,其中负样本比正样本多7-10倍。我的选择是通过复制增加阳性样本或减少阴性样本。我去了,。这意味着在交叉验证期间,每个折叠都有很高的机会拾取所有原始阳性样本,从而过度拟合阳性样本。我现在对阴性样本进行下采样,进行几次交叉验证,并对数据进行洗牌。现在好像有用了

结果是问题相当微妙。长话短说,不要对数据进行上采样(对于不平衡的数据集)并进行交叉验证


说来话长。我有一个不平衡的数据集,其中负样本比正样本多7-10倍。我的选择是通过复制增加阳性样本或减少阴性样本。我去了,。这意味着在交叉验证期间,每个折叠都有很高的机会拾取所有原始阳性样本,从而过度拟合阳性样本。我现在对阴性样本进行下采样,进行几次交叉验证,并对数据进行洗牌。现在好像有用了

最好设置每个叶的最小样本数,而不是最大树高。最好设置每个叶的最小样本数,而不是最大树高。