Kaggle初体验心得分享:PLAsTiCC天文分类比赛(附前五方案链接)

点击上方“蓝字”关注“AI开发者”

很高兴,我在本周早些时候完成了我的第一个Kaggle比赛。和富有经验的高手合作进行时间序列分析是非常酷的,而且我确确实实在时间序列处理上学到了很多东西。不仅如此,我还熟悉了天文方面的数据,了解了超新星以及人类研究这些天体所用到的方法(参加kaggle比赛会给你带来另一些影响,那就是你们可以非常具体地了解不同行业中的问题)。

注:你可以在这篇文章的最后找到数据字段,本文的词汇表以及该比赛优胜者的完整文章链接。

  基本说明

1.如果你认真对待比赛,这一定是会消耗时间和精力的。因此你应该规划好时间。

2.如果你能行,那就从一个工作编译环境开始吧。一个好的环境总是能够节省你的时间。

3.阅读公开的workspace时,需要知道两件事情:该领域的专业知识和经过验证的方法。该领域的专业知识是你所欠缺的,但同时这些知识会给你带来一些新的见解。经过验证的方法是非常有效的,你最好也使用起来。

4.始终应该在workspace notebook上使用版本控制。无论你在notebook上做出什么改变,都应该重新创建,这样会有助于工作流管理。

5.你要同时去验证两个以上的方法,这会令你分神,你可能很难跟得上。

6.当你完成了比赛,去阅读以下获胜者的workspace(jupyter)以及解决方案。同时记录下自己觉得能比他做的更好的地方以及自己学到的新的知识(就像下面我所做的)。

介绍

在介绍技术之前,先简短的介绍一下比赛。

PLAsTiCC 致力于模拟大型天气观测望远镜(LSST),观察前三年夜空中随时间变化的光源。 

LSST (如下图)是一台有着直径8.4m主镜的天文望远镜。被建在智利的阿塔卡马沙漠(Atacama Desert)的塞罗帕(CerroPachon)山上。

LSST 望远镜在智利塞罗帕的示意图

宽广的视野使得LSST成为一款革命性的产品。如果你喜欢摄影的话,LSST有6.5米的有效光圈和f1.23的焦比。

这就意味着LSST可以绘制整个南部的星图。每四个晚上就能分辨出比头发宽度手臂长臂还要小的细节。

这是20到40兆字节的数据速率,或者说每晚有一个和美国国会图书馆数据量一样大的数据。用一个更好的形容词来说就是,极大的。

这里是LSST的视野与整个月球和同级别望远镜的比较。

LSST的视野与同级别望远镜的比较。结论:LSST可以得到更多数据。

  数据集摘要

所提供的数据包括特定类型空间对象的光穿越时间曲线。特别是,这些光曲线代表每个物体通过6个滤光片或波长范围(称为“通带”)发射的亮度(光子通量)。

通量变化的具体方式(它变亮的时间长度、物体在不同通带中变亮的方式、变暗的时间等)是物体基本类型的一个很好的指标[…]要求Plasticc的参与者将数据分成15个类,其中14个在训练样本中。

在数据字段中,参与者还收到观测日期MJD、通量测量的计算误差、通量误差,并检测到如果LSST望远镜检测到该观测值,会记录哪些数据。 

竞赛组织者还提供了有用的元数据,参与者可以使用这些元数据来通过挑战。可以说,最重要的是hostgal-photoz/hostgal-photoz-err和hostgal-specz,它们分别给出估计的红移和测量误差(显然是目标)。在数据部分可以找到数据字段的完整列表和描述。

  技术与模型

现在我们可以理解比赛究竟是关于什么的了,那么让我们来总结下胜利者在比赛中使用了哪些技术。解决方法多种多样,所以我将只讨论那些最流行和最有趣的技术。我把他们分为 Generals ,可能适用于任何Kaggle 比赛的技术和细节,在这场比赛中有帮助的领域特定技术。

Generals

特征工程

特征工程对于 Kaggle 很重要,而且毫无疑问是这次比赛的关键。每一个顶级的解决方案都广泛的用到了特征工程。特征工程的方法多种多样但是你应该思考:

  • 通过以潜在有用的方式组合现有特征,并让模型决定如何使用它们来构建显式的新特征。本次比赛的一些相关特征是:光曲线宽度、最小和最大光通量、亮度、光通量调整(取决于flux_err 和hostgal_photoz )时间差 (得到两个时间之间的时间差,举个例子[观测到最大 mjd == 1]-[峰值流量 mjd ] )。

  • 使用神经网络来解决相似的问题,并且使用中间层作为模型的特征。在特定的比赛中,解决方案N8使用循环神经网络加关注来解决分类问题,并且使用隐藏层作为这个网络的特征。他们不仅在训练集上训练,而且在使用伪标签(查看词汇部分中的伪标签定义) 的测试集上训练。

  • 在最终的模型中将其他模型作为特征。这与叠加相同。

集成学习和模型类型

许多成功的解决方案集成模型以获得更好的结果。模型越多样化(预测之间的相关性越低)结果越好。在每个参与者提交了一个好的模型并且模型采用不同的方法(通过集成,所有人都可以从其他模型的预测中获益)之后,团队合并是非常常见的。这场比赛也不例外。事实上,获胜的模型是非常多样化的。获胜者只使用了一个LGBM(Light GBM),第二名使用了7个NNS和2个LGBMS的组合,第三名平均使用了CNN、LGBM和CatBoost“使用 Lotta 特征工程”。这里唯一缺少的模型是用于第五和第八解决方案的RNN。

叠加

在这场比赛中,另一种很多人都在用的Kaggle技巧是叠加。叠加通常可以提高结果,并且在有足够算力的情况下是值得尝试的。下图展示了在排行榜中解决方案N8的叠加实例。在这个例子中,叠加有助于将排行榜中的分数从1.06移动到0.95(测试损失减少10%)。

使用叠加有助于使LB分数降低10%(越低越好)。 

在这次比赛中,获得优胜的队伍并没有在他们最终提交的结果中使用叠加。第四和第五名的解决方案成功的使用了叠加:第四名使用了 NNs 和 LGBMs.第五名使用LGBM 和 RNN。两队都声称它很有效。为什么?

Kaggle大师Pavel Pleskov给出了答案。

伪标记

伪标记在这次比赛中是一个很流行的技术。明确地说,大多数测试集没有hostgal_-specz字段(这是比现有hostgal_-photoz更精确的红移测量)。然而,由于大多数训练集(以及测试集中的一些元素)确实具有hostgal_-specz值,许多参赛者所做的就是创建一个模型,从其他数据片段预测hostgal_-specz,以伪标记测试集中未标记的对象。

排行榜探测

在这次比赛中,有一个出现在测试集但没有出现在训练集的类(类99)。这个类被赋予了一个没有任何先例的概率。几乎所有获胜的队伍都使用排行榜探测来来寻找计算类99的最佳方法。有趣的是,获胜者发现解决这个问题的公式是不同的,但公式通常集中在同一特定类的预测上。

交叉验证

许多胜利者使用了5倍的交叉验证,这是一个非常Kaggle的事情。k-Fold交叉验证允许您利用培训集确保您的模型从所有数据点学习。 

数据扩充

几乎所有顶级解决方案都使用了某种数据扩充。最有趣的方法是检查测试集的属性,并使用增强来生成具有相同属性的样本。这提高了模型的样本外性能,而不仅仅是使用随机扩充。

加权损失函数

如果您知道测试集与每个类对应的百分比(您可以通过探测得到这个百分比的估计值),那么您可以权衡您的损失函数以将其考虑在内。尤其是,您可以对测试集中表示最多的样本使用更高的权重,而对表示不足的样本使用更低的权重。

竞赛中获得的评语:类权重探究展示了测试集的分布

细节

预测光曲线

由于每个通道的通量数据每周两获取一次,因此每个通道的观测值是不连续的,因此无法构建某些特征(请参考特征工程(1))。为了解决这个问题,获胜队伍的解决方案使用高斯过程来预测光曲线,然后在主模型中使用特征。其他最佳的解决方案是使用线性插值和Bazin光曲线拟合方法。

使用高斯过程从稀缺数据点预测光曲线的结果

银河系VS银河系外模型

一些获胜者对银河系和银河系外的物体使用了不同的模型,因为它们具有不同的特征。

  那我们的方案呢?

我们排名靠前的提交版本是LGBM和数据领域常见的NN的合并。我们尝试使用RNN(这是我关注的重点)和CNN,但是它们都没有LGBM和NN好。我们的排名是第114名,属于前11%,离铜牌差5名。因为我们是在比赛的最后两周开始参赛的,我们没有足够的时间尝试许多我认为比较有用的方法。这是你在Kaggle中经常遇到的情况,也是你会想再参加一次竞赛的原因。

  数据

数据部分

object_id:唯一对象标识符,Int32类型变量。

mjd:修正儒略日的观测时间。

passband:特定的LSST铜带数字,例如u, g, r, i, z, Y = 0, 1, 2, 3, 4, 5。Int8类型变量。

flux:在通道列中列出的观测通带中测得的磁通量(亮度)。这些值以及针对消光(mwebv)进行了校正,尽管对严重消光的物体进行了校正,但不确定性(flux_err)较大。Float32类型变量。

flux_err:上面列出的磁通量的不确定性。Float32类型变量。

detected:如果为1,则对象的亮度在相对于参考模板的3-sigma级别。数据集中包含至少两次的检测对象。布尔类型变量。

元数据字段

ra(经度):赤经,天空坐标:同经度(度)。Float32类型变量。

decl(纬度):赤纬,天空坐标:同纬度(度)。Float32类型变量。

gal_l:银河经度。Float32类型变量。

gal_b:银河纬度。Float32类型变量。

ddf:标识来自ddf测量区域的对象的标志(ddf的值为1,WFD测量的值为0)请注意,虽然DDF字段包含在整个WFD调查区域内,但DDF通量的不确定性要小得多。布尔型变量。

hostgal_specz:光源的光谱红移这是一个非常精确的红移测量,可用于训练集和测试集的一小部分。Float32类型变量。

hostgal_photoz:天文学源所在星系的光度红移虽然这是hostgal_specz的代理,但两者之间可能存在很大差异,应该被视为hostgal_specz的一个更不准确的版本。Float32类型变量。

注意:如果一个物体的红移为0,那么这个物体就是一个星系物体(意味着它属于我们的星系)如果一个物体的红移大于0,那么这个物体就是银河系外的。

hostgal_photoz_err:基于LSST调查预测的hostgal_photoz的不确定性。Float32类型变量。

distmod:用hostgal_photoz和广义相对论计算到光源的距离。Float32类型变量。

mwebv:MW E(B-V)这种光的“消光”是银河系(MW)尘埃沿天文源视线的一种特性,因此是源ra,decl的天空坐标的函数根据Schlafly等人的研究,该方法用于确定第2.1小节中所述的天文光源光的通带相关调光和重新设计Schlegel等人(2011)和Schlegel等人(1998)粉尘模型。Float32类型变量。

targe:天文学源的类别培训数据中提供了这一点正确确定目标(正确分配对象的分类概率)是测试数据分类挑战的“目标”注意,测试集中有一个类在训练集中没有出现:类99用作不属于训练集中14个类中任何一个的对象的“其他”。Int8类型变量。

  词汇表

Probing the leaderboard:尝试不同的方法并提交以查看哪种方法在测试集中最有效。

MLP:多层感知器或全连接神经网络,至少有三层。

TS:时间序列,按时间顺序索引的数据点序列。

LGBM:Light GBM是一个使用基于树的学习算法的梯度增强框架。LGBM不同于其他基于树的算法,它垂直生长,增加了叶的数量而不是层次。

XV:交叉验证。

OOF:当执行交叉验证;out-of-fold时,每个验证集上的预测。可在未来模型中用作特征。

Pseudo-labeling:用最佳模型的预测标记测试集。

Ensembling:使用一系列的模型,然后通过单独权衡这些预测得到最终的预测通常,加权是用算术或几何平均值来完成的。

Stacking:将一个模型的结果作为输入(或特征)馈送到另一个模型。

Arithmetic mean:加上结果,除以n,其中n是数据点的个数。

Geometric mean:乘以结果并取n次根,其中n是数据点的数目。

Data augmentation:修改现有数据点以创建合理的新数据点。减少过拟合。

  参考

  • 1st Place Solution(https://www.kaggle.com/c/PLAsTiCC-2018/discussion/75033)

  • 2nd Place Solution(https://www.kaggle.com/c/PLAsTiCC-2018/discussion/75059)

  • 3rd Place Solution(https://www.kaggle.com/c/PLAsTiCC-2018/discussion/75116)

  • 3rd Place Solution II(https://www.kaggle.com/c/PLAsTiCC-2018/discussion/75131)

  • 3rd Place Solution III(https://www.kaggle.com/c/PLAsTiCC-2018/discussion/75222)

  • 4th Place Solution(https://www.kaggle.com/c/PLAsTiCC-2018/discussion/75011)

  • 5th Place Solution(https://www.kaggle.com/c/PLAsTiCC-2018/discussion/75040)

  • 8th Place Solution(https://www.kaggle.com/c/PLAsTiCC-2018/discussion/75012)

/ 更多阅读 /

点击 阅读原文 ,查看:最年轻的 Kaggle Master、财富 500 强,他是怎么做到的?

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章