343. IEEE-CIS Fraud Detection | ieee-fraud-detection
排名前20的队伍通常不会发布解决方案。但发生的一些事情让我觉得有必要这样做。
我想说我不知道这次的大洗牌(shakeup)是否是巧合。我发布我在这次比赛中的轨迹是为了帮助那些想了解这次比赛的人。人们对这整团乱麻可能有不同的看法。你可以询问关于解决方案或代码的问题并发表评论。请不要在这里争论。
我所有的项目文件都在这个 GitHub 仓库中:https://github.com/white-bird/kaggle-ieee
如果你只想运行最佳模型,你应该运行:
f3_deepwalk.py,
fd_key.py,
fe_V307.py,
fi_yu.py,
model26.ipynb,
model32.ipynb,
内部融合内核:https://www.kaggle.com/whitebird/ieee-internal-blend
我大部分时间都花在这里,当时我试图挖掘 count/mean/std 特征,但没有奏效。
我意识到坏人偷卡并进行交易是为了钱,但卡片总是有一些保护措施,比如单笔交易的最大金额。所以他们需要在很长一段时间内用一张卡进行许多类似的交易,或者在短时间内用许多卡交易。这就是这次比赛的关键点——是连续的样本使其成为欺诈,而不是单个样本。
我们需要找到一些“键”来对数据进行分组:
所以我们都知道欺诈样本之所以是欺诈,是因为其相似样本是欺诈。为什么不让欺诈的传染性更疯狂一点呢?制作两阶段模型提高了 0.001:model26.ipynb + model32.ipynb
这是由一个 bug 引起的。我对上面的键进行了分组,并在离线状态下获得了巨大的提升。然而,只有一个键——cardid + D——在线上表现不佳。我用了 2-3 天才发现,我是分别对训练集和测试集进行的分组。当我用所有数据对键进行分组时,线上效果有了提升。这意味着该键不像其他键那样用于制作分组特征,而是作为一个嵌入键。然后我写了一些规则用内核处理结果。这很容易理解,但带来了巨大的提升:https://www.kaggle.com/whitebird/ieee-internal-blend?scriptVersionId=21198581
还有一些我没有提到的其他小改进。如果你在阅读/运行我的代码时有任何问题,请在这里发帖。