欺诈检测中的代价敏感算法


欺诈检测中的代价敏感算法

文章插图
 
在传统的二分类分类问题中,我们的目的是尽量减少误分类,并用准确率、F度量或AUC-ROC曲线等统计量来衡量模型的性能 。然而在某些问题中,为了降低总代价最好容许更多的误分类 。如果误分类产生的代价因样本而异,我们应该采取基于实例的代价敏感学习方法 。
在本文中,我们将根据信用卡欺诈数据集对各种模型进行训练和测试来解释基于实例的代价敏感机器学习的概念 。请注意,我们为此任务选择的模型是为了解释其概念,而不是获得最佳预测结果 。本文提供了代码片段,完整的代码可在GitHub上找到 。
 
什么是代价敏感学习?传统分类模型假定所有的误分类具有相同的代价,而代价敏感模型认为不同分类模型间和不同样本间的代价都不同 。
可以看看信用卡交易的案例 。未经持卡人授权的交易被视为欺诈性交易(通常在所有交易中占很小的一部分) 。信用卡欺诈检测系统应自动识别和阻止此类欺诈交易,与此同时不要阻止合法交易 。
每种分类问题的相关代价是多少?让我们假设以下场景:系统没有识别到欺诈交易,钱款丢失,持卡人需要偿还所有交易金额 。如果系统检测到欺诈交易,这笔交易就会被阻止 。在这种情况下,因为需要联系持卡人更换信用卡(若确实是欺诈交易)或者重新激活信用卡(若实际上是合法交易),所以会产生管理代价 。还可以做个简单假设,即管理代价总是一致的 。如果系统将一笔交易标记为合法,系统会自动批准这笔交易,不会产生任何代价 。下面是每一种预测方案的相关代价:
欺诈检测中的代价敏感算法

文章插图
 
请注意“正”表示被预测为欺诈的交易,“负”表示被预测为合法的交易 。“真”和“假”分别代表预测正确与否 。
因为交易代价取决于样本,预测错误的合法交易代价非常低(比如每笔交易代价为0.1美元),而欺诈交易的管理代价会超过赔偿代价,甚至还要高(比如每笔交易代价为10000美元)
代价敏感学习的核心是将这些基于实例的代价考虑在内,再做出预测,尽量降低总代价而不是降低误分类 。
 
代价敏感训练和基于代价分类来考虑一下以下两种方法 。第一种是用损失函数训练模型,降低实际代价(以美元计算)而不是误分类 。在这种情况下,需要为损失函数提供四种情形下(假正类、假负类、真正类和真负类)的代价数据,以便模型可以学会相应地做出最佳预测 。
欺诈检测中的代价敏感算法

文章插图
 
第二种是训练一种常规模型,但是在根据最低的预期代价进行预测时,对每个样本进行分类 。在这种情况下,训练集不需要付出代价 。然而,这一方法只适用于预测概率的模型,这一模型常用于计算预期代价 。
欺诈检测中的代价敏感算法

文章插图
 
接下来参考两种模型——运用代价敏感损失函数的模型和预测时会降低预计代价的模型,即“代价敏感模型”和“代价分类模型” 。
 
实现和评估模型这个案例分析使用了一个信用卡欺诈数据集(这一数据集可以在Kaggle上找到),共有284000个样本和30个特征 。合法交易目标变量为0,欺诈交易目标变量为1 。数据极不平衡,只有0.17%的欺诈交易 。我们训练评估了下面五种模型 。
1. 常规逻辑回归模型(Scikit-learn)
2. 常规人工神经网络模型(Keras)
3. 代价敏感人工神经网络模型(Keras)
4. 代价分类逻辑回归模型
5. 代价分类人工神经网络模型
在实践中,人工神经网络模型可能不是欺诈检测的首选 。随机森林和GBM这些基于决策树的模型具有可解释性的优点,常常表现得更好 。之所以运用人工神经网络模型解释是因为它相对简单地实现了一个代价敏感的损失函数 。此外,如下所示,一个简单的人工神经网络模型能产生相当强大的结果 。
为了评估结果,我们采用了两种不同的统计量 。第一种是传统的F1-score,强调精确率和召回率,但并不考虑误分类所产生的代价 。
欺诈检测中的代价敏感算法

文章插图
 
为了从代价的角度评估模型的性能,首先根据模型预测出的假正类、假负类、真正类和真负类这四种情况,以及与每种情况相关的代价,计算预测产生的总代价 。


推荐阅读