返回列表

4th place solution: using PCA (least shakeuped solution)

569. Playground Series - Season 3, Episode 20 | playground-series-s3e20

开始: 2023-08-01 结束: 2023-08-21 双碳与可持续发展 数据算法赛
第四名解决方案:使用PCA(最稳定的解决方案)

第四名解决方案:使用PCA(最稳定的解决方案)

作者:Konstantin Dmitriev
发布日期:2023-08-22

感谢组织者举办这场有趣的比赛,也感谢所有参与者的讨论!我认为有很多宝贵的知识可以学习和改进!

管道流程

我在比赛开始时构建了一个管道来进行交叉验证和测试不同方法。该管道依次使用每一年可用数据(2019年、2020年和2021年)作为验证集,而其他年份则用于训练。最后,使用全部数据进行训练并预测2022年的排放量。

具体细节请参考源代码。

使用PCA

我的解决方案的核心是使用PCA。我决定使用6个主成分,这是我在ambrosm的讨论帖中提到的。每个主成分都由某个(抽象)算法独立处理,然后将结果通过PCA逆变换得到最终预测。

算法

我使用的每种算法都有一个基础估计器作为参数,用于进行预测。这种架构使得在不同算法之间切换并优化交叉验证分数成为可能。

✓ PCA1算法

这个算法非常简单:它只处理`emission`数据,并使用估计器进行预测。许多讨论中都提到所有其他列都是不必要的,这是对该想法的实现。

✓ PCA2算法

这个算法有所不同:它使用所有列。PCA被分别应用于每一列,即我们拥有`列数` * `PCA组件数`个输入特征。

✓ PCA_SARIMA算法

在PCA1算法架构中,我使用了6个独立的SARIMA模型代替简单估计器。

最佳算法(本地CV和私有排行榜)是PCA2算法。

估计器

我使用了Ridge/Lasso回归、随机森林、XGBoost、CatBoost等。树基估计器之间差异不大,但它们比线性回归效果更好。因此我选择了XGBRegressor(n_estimators = 300, max_depth = 4, learning_rate = 0.01, subsample = 0.5)。

后处理

我受到ambrosm的帖子和其它讨论的启发,这些讨论建议将结果乘以一个常数。因此,我使用不同的乘数进行预测:1.00、0.95、1.05、1.07和1.08。

然而,不知何故,我选择了这五个提交中最差的一个作为最终预测!

如果完全不使用乘数,这将是第一名!

同比赛其他方案