378. University of Liverpool - Ion Switching | liverpool-ion-switching
使用单个 1cnn wavenet 模型,配合批量归一化和少量的 dropout,数据集采用的是我公开的 wavenet notebook 中经过卡尔曼滤波清洗的数据。
重要的一点:
为了处理测试数据中的偏移,我增加了一些数据增强方法,即给信号加上一个常数。
另一种数据增强技术也提高了交叉验证(CV)分数,即加入少量的随机正态分布噪声,类似这样:
train_aug['signal'] + [np.random.normal(0, 0.01) for x in range(train_aug.shape[0])]。
我实际使用的是 train_aug['signal'] + np.random.normal(0, 0.01),希望这能处理这种偏移,结果确实奏效了(这纯粹是运气 :) )。
使用 KMeans 创建了 22 个聚类,然后我对这些聚类进行了独热编码,生成了 22 个额外特征。
此外,我还计算了每个聚类的一些聚合统计量,如峰度、偏度和标准差。
增加了信号与最近聚类质心之间的差值,还增加了它们之间的欧几里得距离。
使用了 -+ 3 的平移信号、-3 的滚动均值和标准差、-1 到 1 的滚动均值和标准差,以及 signal ** 2 和 signal ** 4。
以上就是特征工程部分的内容。
为了处理过拟合,我使用了一个学习率调度器,就像那个公开的 wavenet 代码一样,这样可以让模型提前停止训练(如果我使用 0.001 的恒定学习率,网络会严重过拟合,导致公共和私人排行榜分数为 0.942,而袋外 F1 分数却高达 0.94452)。
这是一次很有趣的比赛,如果你想组队参加另一个我们都感兴趣且技能和知识水平相当的竞赛,请私信我。
抱歉我的英语不是很好,它不是我的母语。