首先,我要向我的团队成员 @vitalykudelya、@yukisawamura、@salaryman 表达深深的感谢,感谢他们为本次比赛投入的时间、精力和专业知识。
其次,我们要向 Kaggle 社区和主办方表示感谢。感谢你们提供了具有挑战性的数据集和宝贵的学习机会。
解决方案概述

我们的解决方案基于用户分组、每组趋势计算、用户组预测(分类)以及为每组分配趋势。
您可以在这里查看我们的解决方案代码。由于我的流水线不够高效,评分需要很长时间😓
1. 分组
在探索性数据分析(EDA)过程中,我们注意到根据用户是否存在用药信息(在所有 'visit_month' 数据中,无论状态为 'On' 还是 'Off'),目标趋势存在显著差异。这构成了我们流水线的基础。
2. 趋势计算
基于分组信息,我们创建了三类趋势:无用药信息的趋势、有用药信息的趋势以及总体趋势。这些趋势参考了 'Only_Trend' 和 'Protein Shift' 的 notebook。其中,蛋白质 'P05060' 对提升 Public LB 分数贡献很大。
3. 特征工程 + 组分类
我们使用 LightGBM 实现了二元分类,以预测用户是否属于有用药信息的组。预测基于 'visit_month' 相关信息、蛋白质和肽数据。
在最终提交中,为了增强模型的鲁棒性,我们采用了 10 折交叉验证(CV)和随机种子平均。
4. 使用二元分类结果进行趋势映射
基于二元分类的结果,我们将每组的趋势进行映射。在最终提交中,如果二元分类的预测值大于 0.75,我们将其归为有用药信息组;如果预测值小于 0.15,则归为无用药信息组;其余情况使用总体趋势。
由于本次比赛的数据集较小,CV 和 LB 分数均不稳定。我们直到最后都在纠结应选择哪个提交方案。如果您有任何问题或反馈,欢迎随时评论。我们期待在社区中与大家一起学习。