547. Playground Series - Season 3, Episode 13 | playground-series-s3e13
大家好,虽然我在私人排行榜上排名并不算特别靠前,但我似乎是少数在私人排行榜(第31名)和公共排行榜(第15名)上使用同一份提交都取得了不错成绩的人。因此,我想分享一些我使用的技巧,希望能对一些人有所帮助。
排行榜上的顶尖提交可能并没有使用原始数据,这从他们名次的巨大跳跃可以看出。@zhukovoleksiy 使用原始数据在公共排行榜上取得了很好的成绩(第30名),同时也使用另一个不使用原始数据的模型在私人排行榜上获得了优异成绩(第5名)。
我的模型都使用了原始数据,但以下是我使用的一些避免结果偏倚的技巧:
仅将原始数据用于模型拟合和早停,而不用于模型选择。我认为这很常见。
根据原始数据的预后分配权重,以抵消分布差异,并人工重建合成数据的预后分布。具体而言,原始数据集中预后类别为 p 的观测值的权重应设置为:
w(p, orig) = (n_obs(p, artificial)/n_obs(p, original) ) * (959/707)
通过乘以一个权重因子,为合成观测值分配更高的权重,为原始数据分配更低的权重。我使用了一个超参数,并在网格搜索中进行了调优。没有这一步时,原始数据占总权重的 707/959,合成数据占 303/959。经过测试,将原始数据的超参数设为 95%,合成数据设为 5% 效果最佳。
在拟合 xgboost 模型时,将这些权重用作样本权重和评估集样本权重。你也可以使用其他模型,但 xgboost 对我的效果最好。
我稍后会尝试发布一份详细的 notebook。感谢阅读,希望这些内容对某些人有所帮助。下周再见!