我认为使用train_test_split对大数据集进行采样,然后对采样使用cross_validation可能是错误的。同意?

时间:2019-06-12 08:50:25

标签: python scikit-learn cross-validation sampling train-test-split

几个月以来,我一直在努力解决DAT102x:根据政府数据预测抵押批准的情况。

我的目标是了解分类问题的各个方面,而不是排名第一。

但是,我发现一些不清楚的东西:

我从基于样本的交叉验证模型(准确度= 0.69)中获得的性能几乎与使用该模型在整个数据集上获得的性能(准确度= 0.69)相同。

但是当我使用比赛数据集提交数据时,我得到的是“美丽” 0.5。

  • 听起来像是个过拟合的问题

但是我认为简历会发现过度拟合的问题...

我唯一的逻辑解释是CV失败,因为它基于我使用“ train_test_split”函数创建的样本。

换句话说:因为我使用了这种抽样方式,所以我的样本变成了FRATTAL:无论我创建的子样本是什么,它始终是种群的非常精确的再现。

所以:简历“失败”以检测过度拟合。

好的。我希望我能够解释发生了什么。

(顺便说一句,如果您想知道为什么我不检查它是否运行满负荷:我使用的是HP核心处理器2.8 Mhz 8 RAM ...这将永远需要...。)

这是我的代码的步骤:

0)准备数据集(NaN等)并将所有内容转换为分类(数字->合并)

1)使用train_test_split从500K数据集中采样12.000条记录 2)使用OHE分类编码(选择) 3)通过PCA减少功能 4)执行CV以识别最佳Log_reg超参数“ C”值 5)使用train_test_split拆分样本:从12000个中保存2000个记录 6)建立基于Xtrain,y_train的Log_reg模型(准确性:0.69) 7)将整个数据集拟合到log_reg模型中(精度:0.69) 8)将整个比赛数据集拟合到log_reg模型中 9)取得了0.5的极高准确性。...


我仅有的另一种解释是,我从竞争数据集中选择了一些功能,这些功能被我遗漏的那些功能“覆盖”了。 (你知道:竞争者在那里让我们汗流sweat背...)

在这里,我还有一个“硬件问题”来动摇数字。

如果有人对此有任何了解,我很高兴学习。

非常感谢

  • 我也尝试过Random Forest,但遇到了同样的问题。在这种情况下,我知道OHE并不是sklearn RF模型所钟爱的东西:它危害模型并使用“许多”类别粉碎有价值的功能

愿意根据要求分享。

我期望这两个之一:

或:在整个数据集中表现不佳的模型

或:在比赛数据集上具有可比性(0.66?)的模型。

0 个答案:

没有答案