混合神经符号欺诈检测:用域规则指导神经网络

我真的认为我正在做一些大事:向损失函数添加几个简单的域规则,并观察超级不平衡数据上的欺诈检测猛增。第一次运行看起来很棒......直到我修复了一个偷偷摸摸的阈值错误并在五个不同的随机种子上运行了整个过程。突然之间,“巨大的胜利”几乎消失了。说实话,我最终得到的结果实际上更有用:提醒我们,在欺诈等罕见事件问题上,我们衡量成功的方式(阈值、种子、指标)比模型本身更容易欺骗我们。该规则确实使排名稍微好一点(您可以在 ROC-AUC 中一致地看到它),但真正的收益很小且脆弱。这是完整的故事 - 错误、差异、经验教训等等。混合神经符号欺诈检测:用领域规则指导神经网络首先出现在走向数据科学上。

来源:走向数据科学

摘要

数据集极度不平衡,阳性率低于 0.2%。使用加权二元交叉熵训练的标准神经网络通常可以实现较高的 ROC-AUC,但很难在阈值敏感指标下识别可疑交易。我提出了一种混合神经符号 (HNS) 方法,该方法将领域知识作为可微规则损失直接纳入训练目标中——鼓励模型为金额异常大和非典型 PCA 签名的交易分配高欺诈概率。在 Kaggle 信用卡欺诈数据集上,混合模型在 5 个随机种子中实现了 0.970 ± 0.005 的 ROC-AUC,而对称评估下纯神经基线的 ROC-AUC 为 0.967 ± 0.003。一个关键的实际发现:在不平衡的数据上,阈值选择策略对 F1 的影响与模型架构一样大——必须使用相同的方法评估两个模型,这样任何比较才有意义。代码和可重复性材料可在 GitHub 上获取。

问题:当 ROC-AUC 说谎时

我有一个欺诈数据集,阳性率为 0.17%。训练了一个加权的BCE网络,得到了0.96的ROC-AUC,有人说“nice”。然后我提取了分数分布和阈值相关指标。该模型已经悄悄地发现,对任何模棱两可的事物进行预测“不是欺诈”是阻力最小的路径,并且损失函数中没有任何内容与该决定不一致。

设置

我使用了 Kaggle 信用卡欺诈数据集 — 284,807 笔交易,其中 492 笔是欺诈交易(0.172%)。 V1-V28 特征是来自匿名原始特征空间的 PCA 组件。金额和时间是原始的。严重的不平衡才是重点;这就是标准方法开始陷入困境的地方 [1]。

分割为 70/15/15 训练/验证/测试,分层。我训练了四件事,并对它们进行了面对面的比较:

  • 隔离森林 — 污染=0.001,适合完整的训练集
  • One-Class SVM — nu=0.001,仅适合非欺诈训练样本
  • 模型

    pos_weight = 计数(y=0) / 计数(y=1) ≈ 577