本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:Kaggle获奖者自述比赛求生指南:我们如何“穿越(7)

时间:2017-08-11 21:04来源:118论坛 作者:本港台直播 点击:
具体做法也比较简单,我们可以将一个样本的八个方向都进行预测,获得八个预测概率,接着可以将八个概率直接平均,也可以使用预测的类标签投票来获

具体做法也比较简单,我们可以将一个样本的八个方向都进行预测,获得八个预测概率,接着可以将八个概率直接平均,也可以使用预测的类标签投票来获得最后结果。通过几轮测试,我们采取的是平均的方案,因为效果更好。

3.12 测试数据集的F2 Score阈值搜索

我们测试集的F2阈值是在out-of-fold的验证预测结果上搜索选取的。对于验证集我们也对每个样本预测八个方向的结果,然后把它们拼接成一个32万样本的验证集。

我们观察到,在这个集合上搜索得到的阈值,比把八个方向预测结果平均得到4万样本的验证集上搜索得到的阈值有更好的泛化性能。

整体上我们观察到的现象就是,搜索阈值时使用的样本数越大,这个阈值的泛化性能很可能也就越好,对于小样本来说,这个阈值很容易过拟合。想象只有一个样本的时候,我们很容易可以找个一组阈值让F2 Score为1.0。

有另一种调整阈值的方式是使得让在out-of-fold验证集上预测出来各个类的个数和它们的标签中个数一样。我们没有尝试这种做法,因为我们预测出来的各个类占比和标签中的占比本来就十分接近。

3.13 结果的存储、记录和分析

到这里,我大致已经介绍完我们训练一个单模型流程,在开始介绍Ensemble(模型集成)前,我还是要介绍和强调一下结果的存储、记录和分析的重要性。

结果的存储、记录和分析是新手很容易忽略的一个环节,一开始如果没注意好,到后面模型多起来的时候就容易手忙脚乱。

以下是我们这次比赛记录的数值:

模型超参:预训练模型类型,模型改动,输入图片大小,数据增强类型,Batch Size,学习率,迭代次数等;

评价结果:K折交叉验证各个折的Loss,各个折的均值、方差,整个out-of-fold的Loss和F2-score,做完TTA的F2-score,Public Leaderboard的F2-score等。

我们希望,单模型本地out-of-fold的验证集上的F2-Score,能够较好地反映Public Leaderboarrd的F2-Score,这样我们无需耗费宝贵的提交机会就能对新方案的效果进行大致评估。

事实上这两个F2-Score确实足够相关,如下面的散点图所示,虽然存在一些抖动,但整体上还是呈现一种正相关的关系。不过这里out-of-fold是由五折各种的验证集拼接在一起,八方向预测结果平均搜索阈值得到的F2-Score,后期我们发现八方向预测结果拼接的搜索得到的验证F2-Score其实更加稳定,在Public Leaderboard的表现也更好。

码报:Kaggle获奖者自述比赛求生指南:我们如何“穿越

最后,我们发现验证和测试结果以及submission的格式的定义和文件名的管理也要注意,这一点我们队伍内一开始没有统一标准,比赛后期的合并结果和赛后的统计分析也花了一番功夫。

3.14 Ensemble:Average Bagging,Bagging Ensemble selection,Attention Stacking

我们这次比赛,使用了三种Ensemble, 关于Ensemble的基本套路可以参考《分分钟带你杀入Kaggle Top 1%》中模型集成(Ensemble)部分:

文章地址:

https://zhuanlan.zhihu.com/p/27424282

一开始模型比较少的时候,我们直接把不同模型的结果进行平均(Average Bagging)

到后面模型比较多的时候,我们开始使用Bagging Ensemble Selection。

最后我们使用了Stacking,我们这次用来做的Stacking算法除了Logistic Regression、Ridge Regression,我们还试着自己设计了一种我们自己称之为Attention Stacking的算法。

在做Ensemble阶段,对于每个样本我们有一个(模型数 x 17)大小的概率矩阵,我们的目标是获得一个长度17的概率向量。

对于三种Ensemble,我们对它们的建模分别为:

Average Bagging:所有模型有相同的权重,将概率矩阵沿模型数维度进行平均。

Bagging Ensemble Selection:每个模型有不同的权重,在Selection的过程中,有的模型可能被选到多次,有的模型也可能一次也没被选到,按照被选中次数为权重,概率矩阵沿模型维度进行加权平均。

Stacking:每个模型的每个类都有自己的权重,比如某个模型擅长对气象类进行区分,却对正常类性能很差,那显然这个模型在气象类和正常类的权重应该不一样。我们需要对每个类别单独学习一组函数或一组权重

Logistic Regression、Ridge Regression是对输入模型进行非线性的组合,为了探索其他可能性,我们也试着设计对输入模型进行线性组合的模型。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容