机器学习中的欺诈检测:您需要了解的内容 [2022]
已发表: 2021-01-02食物、衣服、配饰或家具。 您过去从繁忙道路上的商店购买的所有东西现在都可以在线购买。 电子商务是一个价值数十亿美元的行业,而且还在不断增长。 不用说,这也在犯罪世界的掌控之中。 在线犯罪分子存在于您可以命名的所有在线领域。
使用机器学习进行欺诈检测是可能的,因为模型能够从过去的欺诈数据中学习以识别模式并预测未来交易的合法性。 在大多数情况下,由于信息处理的速度和效率,它比人类更有效。
一些类型的互联网欺诈是:
- 身份证伪造。 如今,身份证的制作如此之好,以至于人类几乎不可能验证其合法性并防止任何身份欺诈。
通过使用人工智能,可以分析身份证外观的各种特征,从而得出证件真实性的结果。 这允许公司在提出需要某些身份证明文件的请求时建立自己的安全标准。
- 银行贷款诈骗。 如果有人与您联系并提供具有可疑有利条件的贷款计划,则可能会发生这种情况。 在这里,与您联系的人会询问您的银行详细信息或预付款,而没有任何适当的公司信息,甚至没有使用国际联系电话。 人工智能可以使用以前的贷款申请记录来过滤掉贷款违约者,从而轻松处理此类欺诈行为。
- 电子邮件网络钓鱼。 这是一种网络犯罪,向用户宣传虚假网站和消息,要求他们共享个人数据。 如果一个人不太小心,他或她可能会输入任何可能使他们容易受到威胁的机密数据。 避免这种欺诈的最佳方法是让用户自己小心,但是,人工智能可以通过使用回归等基本机器学习算法过滤欺诈电子邮件来找出欺诈电子邮件。
- 信用卡诈骗。 这是最常见的付款欺诈类型。 这是因为所有详细信息都在线存储,这使得犯罪分子和黑客更容易访问。 通过邮件发送的卡片也很容易被拦截。 下面讨论使用机器学习过滤此类欺诈交易的一种方法。
- 身份盗窃。 用于检测身份盗窃的机器学习有助于实时检查有价值的身份证件,例如护照、PAN 卡或驾驶执照。 此外,有时可能需要生物特征信息来进一步提高安全性。 这些安全方法需要亲自验证,这在很大程度上减少了欺诈的机会。
另请阅读:印度机器学习工程师的薪水
使用信用卡数据预测欺诈的模型
这里使用了一个非常著名的 Kaggle 数据集来演示如何使用简单的神经网络模型进行欺诈检测。

进口:
将熊猫导入为pd
将numpy导入为np
将张量流导入为tf
导入keras
从sklearn.preprocessing导入StandardScaler
从keras.models导入顺序
从keras.layers导入密集
从sklearn.model_selection导入train_test_split
从sklearn.metrics导入分类报告
看看这里的数据集。 Amount列像所有其他功能一样被规范化, Time列被删除,因为它不相关。
数据= pd.read_csv ( 'creditcard.csv' )
数据[ 'Amount_norm' ] = StandardScaler () .fit_transform ( data [ 'Amount' ] .values.reshape ( -1 , 1 ))
data= data.drop ([ 'Amount' ], axis= 1 )
数据= data.drop ([ '时间' ],轴= 1 )
数据=数据[: -1 ]
数据信息()
现在经过一些数据清理,我们的数据集总共包含 28 个特征和一个目标,它们都有非空的浮点值。
我们的目标是确定特定信用卡交易是否为欺诈的类别列。 因此数据集被相应地划分为训练和测试,保持通常的 80:20 分割比。 ( random_state已修复以帮助您重现拆分数据)

X = data.iloc [:, data.columns != 'Class' ]
y = data.iloc [:, data.columns == 'Class' ]
X_train , X_test , y_train , y_test = train_test_split ( X , y , test_size = 0.2 , random_state= 0 )
我们使用keras库中的序列模型来构建具有 3 个密集层的神经网络。 输出层仅包含一个神经元,它将使用sigmoid函数产生正类或负类。
然后使用adam优化器编译模型,但强烈建议您自己尝试不同的超参数值,例如每层中的单元数、激活、优化器等,以查看最适合给定的超参数值数据集。
模型=顺序()
model.add (密集(单位= 16 ,激活 = 'relu' , input_dim = 29 ))
model.add (密集(单位= 16 ,激活= 'relu' ))
model.add (密集(单位= 1 ,激活= 'sigmoid' ))
模型。 编译(优化器= 'adam' ,损失= 'binary_crossentropy' ,指标= [ 'accuracy' ])
model.fit ( X_train , y_train , batch_size = 32 , epochs = 15 )
这是模型运行几个 epoch 后的结果。
我们看到该模型非常快地给出了 99.97% 的准确率。 下面, y_pred包含我们的模型对测试数据所做的预测,并显示了其性能的简洁摘要。
y_pred = model.predict ( X_test )

y_pred = ( y_pred > 0.5 )
打印(分类报告( y_test , y_pred ))
阅读:面向初学者的机器学习项目创意
结论
因此,通过这种方式,我们成功地构建了一个高度准确的模型来确定欺诈交易。 这些对于风险管理目的非常方便。
如果您有兴趣了解有关机器学习的更多信息,请查看 IIIT-B 和 upGrad 的机器学习和人工智能 PG 文凭,该文凭专为工作专业人士设计,提供 450 多个小时的严格培训、30 多个案例研究和作业、IIIT- B 校友身份、5 个以上实用的实践顶点项目和顶级公司的工作协助。