第5名方案:Lions
第5名方案:Lions
作者: ML_Bear (团队成员: hmdhmd, shuheigoda, yryrgogo)
比赛: IEEE-CIS Fraud Detection
排名: 第5名
首先,我要感谢 Kaggle、IEEE-CIS 和 Vesta 公司举办了这次比赛。祝贺获胜者们。感谢最好的团队成员 @hmdhmd、@shuheigoda、@yryrgogo,他们分享了出色的成果。
在这个方案中,我们将描述我们独创的内容,并尽可能省略其他方案中已经解释过的部分。
最终提交摘要
- 模型融合:四位团队成员独立建立的 LightGBM 模型的简单平均。尽管大家都使用 LightGBM 和类似的参数进行建模,但平均的效果非常好。
- 虽然我们的团队从一开始就成立了,但除了比赛的核心部分(例如 userID)外,我们几乎没有分享建模思路。这是大大改善集成效果的因素之一。
- 结果覆写:平均之后,我们将以下两种用户模式的
isFraud 覆盖为 1。这使我们在 Private LB 上获得了约 +0.0011 的提升。
- 在训练集中确定存在且
isFraud=1 的用户。(335行)
- 通过 LB 探测确认在 test-public 数据集中
isFraud=1 的用户。(207行)
- 统计数据:
- 最终结果:
Private 0.942453 / Public 0.964383
- 基础模型 (LightGBM)
- Private 0.933088 / Public 0.956396
- Private 0.938111 / Public 0.960937
- Private 0.936381 / Public 0.959820
- Private 0.933819 / Public 0.958436
核心思路
用户识别
- 用户识别是一个非常重要的因素,但由于许多其他解决方案已经解释过,我们简要描述。
- 用于识别的列:
D1/D3/addr1/P_emaildomain/ProductID/C13
- 识别工作注意了以下两点:
- emaildomain:将
anonymous.com 和 mail.com 替换为 NaN
- 训练集和 test-public 之间存在间隔期
- 即使由于间隔期导致
D3 等字段不匹配,也被识别为同一用户
- 由于上述用户识别并不完美,我们基于各种键进行聚合,以生成用户组特征,详情如下。
用户组特征
- 这与被称为 userID 的特征类型相同,但在一个模型中,我们没有尝试识别用户。该模型的概念是让树模型指定 userID。我们向模型添加了许多必要的特征。
- 我们制作了大约 80 个类似这样的特征:
df.groupby('uid_and_register_date')[C_or_V_columns].agg(['mean'])。这类似于 Chris 描述的第一名方案。这 80 个特征对单个 LGB 模型的提升如下:LB 0.9519->0.9565, CV 0.9257->0.9339
- 由于这种用户分组也不完美,我们创建了特征来识别用户组中的不同用户。
- 值是否与组中最频繁的值匹配
- 该值是否在上个月出现在用户组中
- 该值是多少天前出现在用户组中的
- 等等...
利用我们能确定 isFraud 的测试数据
- 由于我们能够通过用户识别和探测几乎准确地掌握超过 5000 行(1)测试数据的 isFraud,我们使用了以下三种方法。(1: 总计 5448行 / 正例: 542 / 负例: 4906))
- 最终提交时的覆写(如上所述)
- 因为当真实值为 1 被覆写为 0 时损失非常大,所以我们只覆写真实值
isFraud=1 的情况。
- 这给了我们约
+0.0011 的