0

几个月以来,我一直在尝试解决 DAT102x: Predicting Mortgage Approvals From Government Data。

我的目标是了解分类问题的各个部分,而不是排名靠前。

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

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

但是当我使用竞赛数据集提交数据时,我得到一个“漂亮”的 0.5。

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

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

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

换句话说:因为我使用了这种抽样方式,我的样本变成了一种分形:无论我创建什么子样本,它始终是对总体的非常精确的复制。

所以:CV“未能”检测到过度拟合。

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

(顺便说一句,如果您想知道为什么我不检查它是否运行完整的人口:我使用的是 HP core duo 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 拆分样本:持有 2000 12000 条记录 6) 基于 Xtrain,y_train 构建 Log_reg 模型(准确度:0.69) 7) 将整个数据集拟合到 log_reg 模型中(准确度:0.69) 8) 将整个竞赛数据集拟合到 log_reg 模型中 9) 获得出色的 0.5 精度结果....


我唯一的其他解释是,我在竞争数据集中选择了一堆被我遗漏的特征“覆盖”的特征。(你知道:竞争者在那里让我们汗流浃背......)

在这里我也有一个“硬件问题”来改变数字。

如果有人对此有任何疑问,我很乐意学习。

多谢

  • 我也尝试过使用随机森林,但我遇到了同样的问题。在这种情况下,我知道 OHE 不是 sklearn RF 模型喜欢的东西:它会危害模型并破坏具有“许多”类别的有价值的特征

如果需要,很乐意分享。

我希望这两个之一:

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

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

4

0 回答 0