571. Playground Series - Season 3, Episode 21 | playground-series-s3e21
我的解决方案相当简单——选择若干特征,去除部分异常值,并将 XGB 模型蒸馏到竞赛所给的随机森林模型中。
在特征选择方面,我仅选择了 O2_1、O2_2、BOD5_5 列来训练 XGBoost 和随机森林模型,并且仅为 XGBoost 模型添加了 o2_mean 特征,该特征是所有 O2 列(包括 O2_3、O2_4 等被剔除的列)的整体平均值。
在剔除异常值时,我移除了所有训练数据中 BSOD5_5 大于 40 且 NH4_5 大于 60 的数据点(尽管 NH4_5 已被剔除);此外,仅对 XGBoost 模型,我将 O2_1 和 O2_2 中小于 4 的值标记为 NaN。
在模型蒸馏中,我首先使用 XGBoost 模型的训练数据对其进行训练,然后将其在训练集上的预测结果作为随机森林模型的训练目标,从而使随机森林能够尽可能复现 XGBoost 模型的性能(在交叉验证中,随机森林能够达到 XGBoost 模型 88%-90% 的效率)。此外,我们也可以将蒸馏视为一种目标归一化方法,换言之,即处理目标变量中的异常值。
仅此而已。我也曾尝试使用 IsolationForest 来去除异常值,但效果不佳。祝您在未来的比赛中取得好成绩!