第28名方案
第28名方案
作者: myaun, NARI
比赛: Riiid! Answer Correctness Prediction
我要感谢主办方组织了一场有意义的比赛,反映了现实世界中关键的约束条件(时间序列API、有限的内存和推理时间)。同时,我也要感谢我的队友 NARI,他在比赛期间与我并肩作战直到最后。
概览

我们的最终解决方案是 Catboost 和 Transformer 的集成。虽然 Transformer 无法像顶级团队那样及时创建高 CV 模型,但它对提升 Stacking 模型的分数贡献很大。我们解决方案的验证策略和特征工程流程深受 tito 的笔记本影响(验证策略,特征工程)。如果他在比赛早期没有分享这些内容,我们绝对无法达到这个分数。
特征
我们提取了 160 个特征用于训练 Catboost。
主要特征如下。尚未确认每个特征对分数的详细贡献,但 CatBoost 的特征重要性可以在这里查看。
内容相关特征
聚合特征
- answered_correctly 的平均值、标准差
- elapsed time 的平均值
- 我们还使用了仅针对用户对同一问题的第二次及后续回答的记录进行聚合的特征。
Word2vec 特征

- 我们将每个用户的答题历史作为句子,将每个 question_id 及其关联的 part、tag_id 和 lecture_id 作为单词,提取 Word2vec 特征。
- 我们还将仅包含正确答案和仅包含错误答案的用户答题历史分别作为独立的句子进行了提取。
- 基于 Word2vec 特征的相似度和聚类也被用于其他特征提取。
图特征

- 基于用户的答题历史,我们创建了一个有向图,其节点是 question_id,边的权重由用户的转移次数定义,并使用以下节点特征作为问题特征。
- 节点指标 (eigenvector_centrality, betweenness_centrality, trophic_levels NetworkX 文档)
- 节点嵌入 (DeepWalk 论文, struc2vec 论文, 实现)
- 邻接矩阵的 SVD
用户历史特征
- 答题计数,正确率
- 我们使用用户的正确率以及最近 N 次的正确率。
- 我们还使用了前十次、一天内和一周内的正确率。
- 时间相关
- difftime(时间戳 - 上一个时间戳)效果特别好
- 我们使用了一些与 difftime 相关的特征,包括最近 5 步时间戳的 difftime 及其统计数据。