返回列表

🌋 18th Place Solution + processed dataset

414. INGV - Volcanic Eruption Prediction | predict-volcanic-eruptions-ingv-oe

开始: 2020-10-12 结束: 2021-01-06 地球科学 数据算法赛
🌋 第18名解决方案 + 处理后的数据集

🌋 第18名解决方案 + 处理后的数据集

作者:Ekhtiar Syed | 比赛排名:第18名

大家好,我是 Kaggle 社区的一员。

我想分享我在这次比赛中所做的工作,希望能得到大家的反馈,看看我有哪些地方可以做得更好。我也想为数据科学的新手们做点贡献,所以我整理了我的比赛代码和数据集,添加了一些文档,并将其公开。

我希望这对火山活动研究社区以及整个机器学习研究社区都能有所帮助。

关于数据处理...

首先,我使用 tsfresh 对原始数据集进行了大量特征的处理。Tsfresh 是一个非常棒的包,可以自动生成时间序列数据的特征。你可以在这里找到处理后的特征数据集。

由于某些特征的计算量非常大,我需要对每个片段的 60000 个数据点进行下采样,或者分批处理。我选择了将每个片段分成多个批次。具体来说,我将每个片段的数据点分成了 6 部分(每部分 10,000 个数据点)。

目前,我们的数据集有 2854 个特征。起初,我使用 ts-fresh 库处理了训练数据集的所有可能特征。这生成了近 8000 个特征。然后,我移除了高相关性的列和准常数特征。这将我们的特征数量减少到了 2854 个。我还应用了递归特征消除法,选出了前 501 个特征(500 这个数字看起来太“完美”了)。这些列已在此笔记本中进行了硬编码。

关于建模

为了进行预测,我使用了 LightGBM (LGBM) 框架中的 LGBMRegressor。我采用了两步走的方法:

  1. 首先,我对整个数据集使用单一的 LGBM 模型。该模型用于在测试集上进行初步预测。
  2. 然后,针对不同的喷发时间范围创建了多个 LGBM 模型。由于这些模型专注于特定范围,它们可以更加专业化。

最后,对于测试数据集中的每个片段,我们有六个输出或预测结果。我们取这些输出的中位数作为我们的最终预测。

同比赛其他方案