536. Playground Series - Season 3, Episode 7 | playground-series-s3e7
大家好,
这是我在本次比赛中获得第二名的方案描述:
我的交叉验证是使用预订日期(booking date)作为特征进行分层的。我决定使用这一列而不是目标变量,因为有些月份的观测值很少,如果按目标分层,它们会被分配到同一个折叠中。
我集成的一些模型使用了30折交叉验证,其他的则使用了20折,主要是因为计算成本太高。原始数据集被连接到每一折中,即对于20折交叉验证,每一折都包含完整的原始数据集 + 95%的训练数据集。
异常日期使用该月的最后一天进行填充。
所有重复数据都是成对出现的,并且总是包含1个正标签和1个负标签。这里存在两个泄露点,大多数人发现了第一个,但第二个没有被披露。
我发现大多数开箱即用的特征效果都很好。我使用的一些额外特征是 is_generated 和 is_inconsistent,这两个特征都是指示变量。在进行序列特征选择时,年日(Dayofyear)特征也在某些模型中被选中。
最终集成包含了16个模型,这些模型是使用爬山法技术筛选出来的,权重则使用Nelder-mead算法进行了优化。我没有对预测值进行排序。大多数模型是LGBM,还有几个XGBoost。所有模型都使用早停进行训练,测试集预测值是通过每个折叠模型的平均值计算得出的。
节假日特征、月份日期特征、一个用于指示日期是否不一致的指示列、超过30折的验证。
我的交叉验证分数与排行榜分数完全相关,我觉得如果我有更多时间,也许我会使用一些公开的notebook来进行最终的集成。