首页 > 社交 > 科普中国

基于深度学习Autoencoder的信用卡欺诈异常检测,效果非常牛逼

常驻编辑 科普中国 2022-05-28 信用卡   异常   神经网络   编码器   误差   样本   变量   算法   深度   模型   效果   数据
qkR拜客生活常识网

qkR拜客生活常识网

还原误差MAE为qkR拜客生活常识网

qkR拜客生活常识网


qkR拜客生活常识网

三、模型算法过程

数据还是使用信用卡的数据,数据来自于kaggle上的一个信用卡欺诈检测比赛,数据质量高,正负样本比例非常悬殊,很典型的异常检测数据集,在这个数据集上来测试一下各种异常检测手段的效果。当然,可能换个数据集结果就会有很大不同,结果仅供参考。qkR拜客生活常识网

1、数据集介绍

信用卡欺诈是指故意使用伪造、作废的信用卡,冒用他人的信用卡骗取财物,或用本人信用卡进行恶意透支的行为,信用卡欺诈形式分为3种:失卡冒用、假冒申请、伪造信用卡。欺诈案件中,有60%以上是伪造信用卡诈骗,其特点是团伙性质,从盗取卡资料、制造假卡、贩卖假卡,到用假卡作案,牟取暴利。而信用卡欺诈检测是银行减少损失的重要手段。qkR拜客生活常识网

该数据集包含欧洲持卡人于 2013 年 9 月通过信用卡进行的交易信息。此数据集显示的是两天内发生的交易,在 284807 笔交易中,存在 492 起欺诈,数据集高度不平衡,正类(欺诈)仅占所有交易的 0.172%。原数据集已做脱敏处理和PCA处理,匿名变量V1, V2, ...V28 是 PCA 获得的主成分,唯一未经过 PCA 处理的变量是 Time 和 Amount。Time 是每笔交易与数据集中第一笔交易之间的间隔,单位为秒;Amount 是交易金额。Class 是分类变量,在发生欺诈时为1,否则为0。项目要求根据现有数据集建立分类模型,对信用卡欺诈行为进行检测。qkR拜客生活常识网

注:PCA - "Principal Component Analysis" - 主成分分析,用于提取数据集的"主成分"特征,即对数据集进行降维处理。qkR拜客生活常识网

2、数据来源

数据集 Credit Card Fraud Detection 由比利时布鲁塞尔自由大学(ULB) - Worldline and the Machine Learning Group 提供。可从Kaggle上下载:https://www.kaggle.com/mlg-ulb/creditcardfraudqkR拜客生活常识网

不想自己下载数据的,后台回复【信用卡欺诈】领取。qkR拜客生活常识网

3、模型搭建

需要的包比较多,我们先加载下qkR拜客生活常识网

# 加载所需要的包
import warnings
warnings.filterwarnings("ignore")
import os 
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt
#plt.style.use('seaborn')
import tensorflow as tf
import seaborn as sns
from sklearn.model_selection import train_test_split
from keras.models import Model, load_model
from keras.layers import Input, Dense,LeakyReLU,BatchNormalization
from keras.callbacks import ModelCheckpoint
from keras import regularizers
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import roc_curve, auc, precision_recall_curve
# 工作空间设置
os.chdir('/Users/wuzhengxiang/Documents/DataSets/CreditCardFraudDetection')
os.getcwd()

数据读取和简单的特征工程qkR拜客生活常识网

# 读取数据
d = pd.read_csv('creditcard.csv')

# 查看样本比例
num_nonfraud = np.sum(d['Class'] == 0)
num_fraud = np.sum(d['Class'] == 1)
plt.bar(['Fraud', 'non-fraud'], [num_fraud, num_nonfraud], color='dodgerblue')
plt.show()


# 删除时间列,对Amount进行标准化
data = d.drop(['Time'], axis=1)
data['Amount'] = StandardScaler().fit_transform(data[['Amount']])
X = data.drop(['Class'],axis=1)
Y = data.Class

相关阅读:

  • 2021信用卡逾期找谁协商管用帮忙协商
  • 多张信用卡欠20万可以慢慢还吗
  • 信用卡逾期协商代理是真的吗
  • 停息挂账2021新规定
  • 信用卡逾期停用了还清后还可以用吗
  • 信用卡被停用是不是就是黑名单了
  • 信用卡频繁分期对买房有影响吗
  • 招商银行上门面签是不是通过了
  • 个人怎么办理信用卡(哪个银行信用卡好办)
  • 办了信用卡该怎么还(不会被拒的信用卡)
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。