返回列表

30th Place Solution

531. Playground Series Season 3, Episode 4 | playground-series-s3e4

开始: 2023-01-24 结束: 2023-01-30 反欺诈与反洗钱 数据算法赛
第30名方案

第30名方案

作者:Hardy Xu
比赛排名:第30名

这次比赛非常有意思,对我来说是本月“Playground Series”中最难的一次。数据中加入了时间成分,加上训练集和测试集是按时间划分的,这让我对于如何构建最佳的本地交叉验证(CV)架构及其可靠性感到不太确定。最终,我使用了 sklearn 的 TimeSeriesSplit 进行交叉验证,至少它在优化超参数方面似乎相当可靠。

我的最终方案非常简单,只是 50 个 XGBoost 模型的平均值。这些模型使用相同的超参数,通过 5 折分层 K 折交叉验证和 10 次重复进行训练。我最终使用了整个训练数据集,加上原始信用卡欺诈数据中的欺诈样本。

有两件事我认为对提高我的分数有一点帮助。首先,我添加了通过减去该特征每日平均值而创建的 V 特征的转换版本。这是受到了 @paddykb 评论的启发,他提到许多特征在第 1 天和第 2 天的表现不同。经过进一步观察,似乎一天中特征的总体上下波动趋势在第 1 天和第 2 天是相似的,主要区别在于这种趋势在两天之间向上或向下平移了。所以我猜想,减去每日平均值可能有助于揭示更多的信号。这并没有提高我的公开榜单分数,但它让我的私有榜单分数提升了 +.0015

第二个改进是受到了 @siukeitin 关于使用 V 特征识别客户评论的启发。出于好奇,我运行了一个检查,看看按任意两个 V 特征对训练数据进行分组是否会形成全为欺诈或全为非欺诈的纯组,结果我发现 V14 和 V21 的组合正好做到了这一点。这让我在测试集中找到了 466 行数据,它们的 (V14, V21) 组合也存在于训练集中,根据训练数据,我预测这些行的值为 0。这让我的公开和私有榜单分数都提升了 +.0004

遗憾的是,正是我决定包含原始数据中的欺诈样本这一决定,阻碍了我获得更高的名次。我怀疑任何得分在 0.83 或以上的人可能都没有使用任何原始数据。如果我排除了原始数据,我的得分会是 0.8333,足以获得第一名。鉴于这次原始数据和合成数据之间存在诸多有据可查的差异,我的直觉告诉我不应该使用原始数据,但很难违背我的 CV 和公开榜单所显示的结果。这是为下一次比赛吸取的一个好教训。

同比赛其他方案