返回列表

5th Place Solution: Lions

343. IEEE-CIS Fraud Detection | ieee-fraud-detection

开始: 2019-07-15 结束: 2019-10-03 反欺诈与反洗钱 数据算法赛
第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 的提升。
    1. 在训练集中确定存在且 isFraud=1 的用户。(335行)
    2. 通过 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
  • 识别工作注意了以下两点:
    1. emaildomain:将 anonymous.commail.com 替换为 NaN
    2. 训练集和 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. 最终提交时的覆写(如上所述)
      • 因为当真实值为 1 被覆写为 0 时损失非常大,所以我们只覆写真实值 isFraud=1 的情况。
      • 这给了我们约 +0.0011
同比赛其他方案