首先,我要感谢Kaggle和THE LEARNING AGENCY LAB举办了这场激动人心的比赛。在整个比赛期间,我一直在关注讨论区中的顶尖解决方案。这些想法非常棒,我从中学到了很多。我非常感谢那些慷慨分享见解和观察的参与者。
我的解决方案非常简单,但令我惊讶的是,它在私人效率排行榜上获得了第四名。从公共效率排行榜的角度来看,这一成就几乎是不可能的……
我要感谢 @datafan07 提供 DAIGT-V2 数据集。我也感谢 @mustafakeser4 分享了一个高分 Bert模型 以及训练数据的来源。虽然我没有在最终提交中使用该Bert模型,但我将数据作为外部训练数据加以利用。结果清楚地表明,这一外部数据是此次意外成功的关键因素。
解决方案总结:
我使用了多个分类器对TFIDF特征进行分类。我们的代码来自 https://www.kaggle.com/code/batprem/llm-daigt-cv-0-9983-lb-0-960,感谢 @batprem 的分享。
在比赛初期,我注意到公共排行榜的领先者通常也在效率排行榜上名列前茅。这使我假设仅使用TFIDF就可以同时获得高分和高效率。在比赛的剩余时间里,我的重点是在不降低算法效率的前提下,尽可能提高得分。
以下是我的解决方案总结:
- 我发现Cat是算法变慢的主要原因。因此,我移除了Cat,同时保留了lgb。这一操作使算法的运行时间从大约2小时减少到约15分钟。
- 我添加了ComplementNB和LinearSVC作为基础分类器,这可以略微提高公共排行榜的得分。
- 我使用了DAIGT-V2和前面提到的外部训练数据。我对两个数据集分别运行相同的特征提取和分类算法,然后以6:4的权重进行集成。这使得公共得分为963,私人得分为916。此外,75:25的权重产生了964的公共得分和906的私人得分。
- 受 AUC指标技巧 的启发,我在集成前对每个预测结果应用了min-max归一化,略微提高了公共和私人得分。
我还尝试混合DAIGT-V2和外部数据进行训练,而不是分别训练后再融合。该方法产生了955的公共得分和934的私人得分。由于公共得分较低,我没有选择此提交作为最终结果。在我使用不同集成权重的实验中,我发现权重越偏向外部数据集,私人得分越高,但公共得分越低,因此我只尝试了6:4,没有继续尝试更大的权重。我相信,如果仅使用外部数据进行训练,或设置更显著的权重,有可能在效率排行榜上获得第一名。
代码
https://www.kaggle.com/superfei/solution-of-4th-place-in-efficiency-lb