这个案例面临的挑战是识别欺诈性信用卡交易,以便信用卡公司的客户不会因为他们没有购买的物品而被收取费用。
信用卡欺诈检测中涉及的主要挑战是:
- 每天都要处理大量数据,模型构建必须足够快,以便及时响应骗局。
- 不平衡的数据,即大多数交易(99.8%)不是欺诈性的,这使得检测欺诈性交易变得非常困难。
- 数据可用性,因为数据大部分是私有的。
- 错误分类的数据可能是另一个主要问题,因为并非每一笔欺诈性交易都被捕获和报告。
- 骗子对模型使用的自适应技术。
如何应对这些挑战?
- 使用的模型必须足够简单和快速,以检测异常并尽快将其分类为欺诈交易。
- 不平衡可以通过适当地使用一些方法来处理,我们将在下一段中讨论这些方法。
- 为了保护用户的隐私,可以减少数据的维度。
- 必须采用更可靠的来源,对数据进行双重检查,至少用于训练模型。
- 我们可以让模型变得简单和可解释,这样当骗子通过一些调整来适应它时,我们就可以有一个新的模型来部署。
以下代码均在jupyter notebook中工作。
您可以从此链接下载数据集 https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud
导入所有必要的库
# import the necessary packages
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import gridspec
加载数据
data = pd.read_csv("credit.csv")
展示数据
data.head()
描述数据
print(data.shape)
print(data.describe())
是时候解释我们正在处理的数据了。
fraud = data[data['Class'] == 1]
valid = data[data['Class'] == 0]
outlierFraction = len(fraud)/float(len(valid))
print(outlierFraction)
print('Fraud Cases: {}'.format(