我已经训练了一个 XGboost 模型来预测Kaggle Titanic ML 比赛的生存。
与所有 Kaggle 比赛一样,有一个包含目标变量的数据集train和一个test不包含目标变量的数据集,Kaggle 使用它来计算决定你的排行榜排名的最终准确度得分。
我的问题:
我已经构建了一个相当简单的集成分类器(基于 XGboost)并通过train数据的标准训练测试拆分对其进行评估。我从这个验证中得到的准确度约为 80%,这很好,但按照公共排行榜标准(不包括 100% 的作弊者)来说并不令人惊讶。
我查看的这个标准模型的结果和所有 KPI 对我来说并不表示严重的过度拟合等。
然而,当我提交我对test集合的预测时,我的公开分数约为 35%,这甚至低于随机机会模型。太糟糕了,我什至通过简单地反转模型中的所有预测来提高我的分数。
为什么我的模型在test.
我知道 Kaggle 计算他们的分数与我在本地计算的分数有些不同,另外数据集之间可能存在一些差异。大多数参加比赛的人都注意到他们的本地考试成绩和公开成绩之间至少存在一些差异。
然而,我的差异确实很大,并且确实扭转了预测提高了我的分数。这对我来说没有意义,因为反转我的本地验证的预测会导致垃圾预测,所以这不是一个普遍反转预测的简单问题。
所以你能帮我理解这两个问题是如何同时发生的吗?
- 局部准确率和公开分数之间的巨大差异
- 倒车实际上会带来更好的公众分数。
这是我的代码笔记本(请忽略错误,它们只是因为代码仅在本地不适用于 kaggle 内核):