533. Playground Series - Season 3, Episode 5 | playground-series-s3e5
大家好!再次感谢所有的参赛者以及 Kaggle 的组织者,感谢你们在 Playground 系列赛中带来了又一轮有趣的比赛。正如我们大家所预料的那样,当 Private LB(私有排行榜)揭晓时,排名又发生了一次大洗牌。这并不令人惊讶,因为:
1) 数据集中有 3 个 quality 类别非常罕见(下文我将称之为罕见案例)—— 3、4 和 8;
2) 我们使用的评估指标是二次加权 Kappa,该指标对评分偏差的惩罚随着偏差的增加而加重。
这两个条件意味着分类器性能的微小差异可能会对 Public LB(公共排行榜)分数产生巨大影响。正如 @ambrosm 在讨论帖 Is this competition a lottery? 中指出的那样,将单个质量评分向正确方向移动一步,会对二次加权 Kappa 指标产生巨大影响。当然,这也意味着相反的情况也是成立的——将其向反方向移动一步也会产生巨大的负面影响。这意味着,鉴于大部分数据都集中在评分尺度的中间,采取保守策略,大多数时候停留在评分尺度的中心附近,比冒险在尺度的极端两端做出更多预测要好。换句话说,虽然后者可能偶尔会正确预测出 3 或 8 的评分,但由于对那些本应靠近中心的项目的错误分类导致更频繁的偏差,其带来的负面影响远远超过了偶尔正确预测罕见案例的好处。稍后我会详细讨论这一点。
在本次比赛中,我总共构建了 1,466 个模型,包括第一层模型(如 CatBoost、XGBoost、LightGBM、各种神经网络配置)以及使用简单岭回归器和随机梯度下降的第二层堆叠模型。我的 EDA 发现回归模型比分类模型效果更好,而且使用由 @paddykb 最初在 notebook 中实现的简单优化舍入策略来确定类别阈值是至关重要的。我的 EDA 还揭示了基于相关性的简单特征工程效果最好。总的来说,我最好的模型是基于 25 个第一层模型(如具有不同超参数的 XGBoost、LightGBM 和 CatBoost)堆叠的岭回归模型。每个第一层模型都是使用竞赛数据和原始数据的混合构建的,并使用了最少的特征工程(下文详述)。该模型在我自己的本地指标和 Public LB 之间的差距最小,而且 Public LB 和我的本地指标都呈上升趋势(换句话说,没有证据表明我对 Public LB 或本地指标进行了过拟合)。
我在本次比赛中感兴趣的一些学习要素在我的数据探索和最终模型选择中起到了关键作用。对于这一轮 Playground 系列,我对我们使用的数据集的几个方面感兴趣,并集中研究了四个问题领域:
1) 混合原始数据 + 竞赛数据的有效性。
2) 工程特征的有用性。
3) 堆叠模型的效用。
4) 罕见案例错误分类的影响。
关于第一项——混合原始数据 + 竞赛数据,我使用对抗性验证作为是否应该混合它们的粗略指标(还有其他几个人也这样做了——@kdmitrie 很早就 发布了一个讨论帖)。我自己的对抗性验证探索表明,训练用于检测两个数据集之间差异的分类器的 AUC ROC 得分为 0.6321(去重后——感谢 @mattop 发现重复项)。这表明数据集之间存在可检测到的差异,但不像我们在之前的比赛中看到的那么大。正如其他人在他们的 notebook 中展示的那样,解释这些差异的最佳方法是使用混合数据集进行训练,但仅生成使用竞赛数据的交叉验证指标。在这种情况下,我发现混合数据集比单独使用竞赛数据具有更好的本地 CV 指标。
关于如何组合各种特征有很多建议(一个非常有趣的建议来自
同比赛其他方案