返回列表

14th rank solution (12th on public)

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

开始: 2020-10-12 结束: 2021-01-06 地球科学 数据算法赛
第14名解决方案(公共榜第12名)

第14名解决方案(公共榜第12名)

作者: Omar Bougacha
比赛排名: 第14名

首先,我要感谢 Kaggle 和 INGV(国家地球物理和火山学研究所)组织了这次比赛。这是一个很好的学习机会。我非常享受这次挑战。

我还要感谢所有分享本次比赛数据、见解或想法的人,特别是 @ajcostarino@amanooo@carpediemamigo

好吧,我介绍一下我在这次比赛中的方法,我最终获得了第14名(公共榜第12名)。不过,我认为大家可以从我的经验中学到一些东西。

我的努力主要集中在两个方面:

  • 数据和特征工程
  • 模型堆叠

在我的工作中,我只使用了2个模型:

  • XGBoost
  • K近邻(KNN)

我也尝试了其他模型,如 TensorFlow Keras 神经网络和弹性网络。然而,这些模型没有提供好的结果,所以我没有重点关注它们。我还在我的堆叠中包含了两个来自公共 Notebook 的模型:

a) 数据处理和特征工程

以下是我进行的数据特征工程:

  • 我直接从提供的文件中提取了经典统计数据、长短期平均比(LTA-STA)特征和短时傅里叶变换(STFT)特征。
  • 我从传感器信号的一些数据变换中提取了相同的特征,例如加窗 RMS 提取、累积和以及导数信号。
  • 为了克服缺失值,我使用了简单的零填充。
  • 我对传感器数据使用了 PCA 来创建新的信号以供使用。因此,我在2000个文件上训练了我的 PCA(数据集太大无法全部加载),而且由于训练集和测试集并非来自完全相同的分布,我使用了测试集中的一些文件。我知道这在物理上没有意义,但它显示了一些好的结果。
  • 我还将文件中的所有传感器数据汇总成一个单一的信号,并提取了相同的特征。
  • 我直接使用了来自公共 Notebook 的 TSFresh 和 STFT 数据。
  • 对于其中一些数据集,我进行了一些 EDA 和特征选择技术(主要基于特征重要性和可视化)。请注意,我没有简单地丢弃无用的特征,而是对它们使用了 PCA 并保留了5个成分,其中一些改善了结果。
  • 最后,这个技巧大大改善了结果,MAE 降低了约400,000。我按传感器对观测值进行了聚类。获得的聚类取决于所使用的数据集,有些完全无用,而另一些则允许检测到一些小的聚类,使我的 CV 和 LB 提高了约200,000。另外的200,000收益来自使用聚类的均值编码(通过提取最大值、最小值、均值、IQR)。为此,我进行了交叉验证以确保没有数据泄漏并对特征进行正则化。
数据处理流程图

b) 建模

获得的数据集用于最终提交的以下流程中。我也尝试了其他配置,但这是提交的那个。

建模流程图

正如我所提到的,黑色虚线箭头对应于我用来聚类观测值并包含均值编码的数据集。

c) 鲁棒性

在这次比赛中,每个 XGBoost 模型都在10折交叉验证上进行训练(如果包含聚类,在某些情况下使用5折分层抽样),并且它们的输出在7个随机种子上取平均值。对于 KNN 模型,

同比赛其他方案