505. American Express - Default Prediction | amex-default-prediction
作为一家名为 pecan.ai 的初创公司的高级 AI 研究员,我主要处理类似类型的交易数据。我利用我的工作经验获得了一个顺利的开端。还要非常感谢我的老板提供的计算能力 :) 从如此温暖的社区中学到的有用方向绝对值得回报 :)
我们使用了几个版本的特征工程(有点混乱),并非此处描述的所有技术都应用于所有模型。这样做有几个原因:
我们以 @raddar 的数据集为基础。
我们从“支付后”特征开始,然后进入特征交互:我们遍历数值特征的所有可能组合,计算每对特征之间的差异并将 NAN 填充为 0,如果线性相关性显着高于任一独立特征,则此差异成为新的独立特征并添加到模型中,例如 P_2–B_3。
我们还使用了 amex 指标代替线性相关性。
在其中一个数据集中,分类特征被独热编码为多个二进制序列。
基础 - mean, min, max, std, first, last(确实如此)。
还有 - 中间部分:mean(1:12), mean(2:13), mean(2:12)。原因是 last-mean(1:13) 的后扁平化意义不大,因为 mean 内部已经包含 last,所以 last-mean(1:12) 听起来是更正确的解决方案。在实践中,我不知道如何衡量它的用处。
特征工程是在 Python 和 C# .Net 中完成的:
我们还创建了 此 notebook 中描述的序列特征(它们非常重要)。
我们测试了一些简单的方法,但它们降低了我们的分数。我们认为损失 CV 的第 4 位小数不值得,我们仍然可以运行具有 3.5k 特征数据集(我们最大的数据集)的模型,因此风险不会得到回报。
LightGBM Dart, CatBoost, XGBoost
我们没有设法获得有用的结果(所有集成几乎抵消了它的贡献)。
但是! 然后我们尝试了我几年前测试过的技巧。我们采用了我们最好的模型并以折外方式计算了 shap values。那时我称之为自监督预训练,但技术上这是一种特征转换。结果我们得到了一个更容易被 NN 模型消化的数据集,因为它是用 GBT 提取的。然后我使用这个数据集训练了 tabnet 并在 LB 上达到了 0.797。该解决方案不像直接的 tabnet 模型那样多样化。但是 Tabnet 以不同于 GBT 的方式学习预测,因此它对集成仍然非常有用。
您可以在 此处 找到更详细的解释(来自之前的比赛)。
但我最大的兴奋是在这次比赛中尝试 NODE 模型。它取得了不错的成绩——我认为我的结果不是最佳的,我相信如果我更多地微调它——它会取得更好的结果。但这可能是我尝试过的最繁重的表格模型——我的 12 gb GPU(感谢 pecan.ai)仅在