返回列表

8th Place Solution

378. University of Liverpool - Ion Switching | liverpool-ion-switching

开始: 2020-02-24 结束: 2020-05-25 药物研发 数据算法赛
第8名方案

第8名方案

作者:fakeplastictrees | 比赛排名:第8名

恭喜获胜者,特别是 Gilles、Kha Vo 和 Zidmie,他们在公共 LB 和私有非泄漏分数上付出了卓越的努力。尽管数据是模拟的,但试图拼凑问题的各个方面仍然很有趣。

初始方法

使用 Chris Deotte、Markus 和 Eunho 确定的正弦曲线,以普遍接受的方式从原始数据中移除了漂移。

对(去除漂移后的)信号与目标进行简单的回归产生了相当好的拟合,因此我采用了将此回归的残差(reg0)定义为噪声的想法,随后我可以尝试对其进行建模。

我还采用了 Chris Deotte 在其早期笔记本“One Feature Model”中定义的批次性质,将批次指定为五个单独的模型。我根据每个批次中打开的最大通道数将这些单独的模型表示为 m1s、m1f、m3、m5 和 m10,并将目标数据中看似二元的部分进一步细分为“慢”和“快”。

(reg0) signal = 1.2336 x target – 2.7337 + noise (m1s,m1f,m3,m5)
signal = 1.2336 x target – 2.7337x2 + noise (m10)

随着时间的推移对噪声进行目视检查,发现了两个噪声过大的区域,一个在 m3 中的大块区域,另一个在 m1s 中的较小区域。这些区域被排除在所有进一步分析之外。

尽管所有模型的信号与目标噪声回归的回归系数大致相同,但每个模型的残差标准差不同,这表明分别分析这五个模型可能会更容易。m10 的截距几乎是其他模型的两倍——见后文。

噪声建模

首先为每个模型创建了一组简单的特征,最初用于输入 lightgbm。这些是信号及其长达 14 个时间段的超前和滞后值。此外,我计算了每次观测的超前和滞后 10 个周期的滚动最小值和最大值,以及第一个 10 个周期之前或之后的 20 个周期超前和滞后的滚动最小值和最大值。

对于信号 Xt 的观测,这里的特征是 Xt-1…Xt-14, Xt+1…Xt+14, min(Xt-1..Xt-10), min(Xt-11..Xt-30), min(Xt+1..Xt+10), min(Xt+11..Xt+30), max(Xt-1..Xt-10), max(Xt-11..Xt-30), max(Xt+1..Xt+10), max(Xt+11..Xt+30)。

我首先使用这些特征在 lightgbm 模型中估计信号本身。这个估计的信号随后构成了另一组特征的基础,其方式与我最初计算的方式类似。最后,我添加了一些基于相对于每次观测的信号滚动最小值和最大值的特征,例如 min(Xt-1-Xt..Xt-10-Xt)。

然后这些特征被用于 lightgbm 以估计测试集和 oof(袋外)的噪声。然后可以使用原始回归(reg0)将这些噪声估计值还原回去,以估计目标并计算 F1 指标。请注意,我发现仅包含信号的 3 个观测超前和滞后(而不是 14 个)在这里产生了最好的结果。

信号的进一步清洗

噪声的频谱分析显示,在大约 50Hz 处有规律信号的明显污染,以及幅度较小的更高频率。试图消除这种情况让我发现,每个 10 秒的小批次在 50Hz 附近都有稍微不同的频率(和相位)。我在信号处理方面缺乏专业知识,导致我对每个小批量的最佳拟合进行了详尽搜索。在这里,我注意到了模型之间的一些差异。模型 m1s、m3 和 m5 在 10 秒小批次中都有容易发现的信号。模型 m1f 似乎有 1 秒的小批次。然而,模型 m10 具有更复杂的结构,每个 10 秒小批次有一个或两个峰值。稍后再详述。

对于训练数据,消除 50Hz 污染相当简单,但幸运的是,我之前 lgb 的噪声估计也显示了相同的污染(尽管 m5 和 m10 的幅度较小)。因此,我能够估计测试数据的污染并将其消除。

有了新清洗的信号,我能够重复所有之前的步骤。我获得了新的噪声估计(这在 cv 和公共 lb 上产生了更好的结果)。

进一步的频谱分析显示,信号的谐波仍然污染着 50Hz。最突出的是 (50x23)Hz、(50x25)Hz 和 (50x29)Hz。对于这些谐波中的每一个,我将其从信号中移除并重复到目前为止的所有步骤,每次都观察它是否改善了 cv。对于 m1s 和 m1f,仅消除原始的 50Hz 污染就是最好的结果。模型 m3 有 2 个周期,m10 有 4 个周期。m5 模型以这种方式持续了 7 个周期

同比赛其他方案