异常检测——基于Autoencoder的反欺诈数据集的异常检测

Autoencoder算法是一种常见的基于神经网络的无监督学习降维方法(其他常见降维方法)。

本教程中,我们利用python keras实现Autoencoder,并在信用卡欺诈数据集上进行异常检测算法。

1. Autoencoder简介

Autoencoder,中文称作自编码器,是一种无监督式学习模型。本质上它使用了一个神经网络来产生一个高维输入的低维表示。Autoencoder与主成分分析PCA类似,但是Autoencoder在使用非线性激活函数时克服了PCA线性的限制。

Autoencoder包含两个主要的部分,encoder(编码器)和 decoder(解码器)。Encoder的作用是用来发现给定数据的压缩表示,decoder是用来重建原始输入。在训练时,decoder 强迫 autoencoder 选择最有信息量的特征,最终保存在压缩表示中。最终压缩后的表示就在中间的coder层当中。

以下图为例,原始数据的维度是10,encoder和decoder分别有两层,中间的coder共有3个节点,也就是说原始数据被降到了只有3维。Decoder根据降维后的数据再重建原始数据,重新得到10维的输出。从Input到Ouptut的这个过程中,autoencoder实际上也起到了降噪的作用。

3. 利用Antoencoder检测信用卡欺诈

接下来是利用keras对信用卡的欺诈数据进行异常检测算法的实施。

下图是该project文件下的文件结果:

__init__.py:是初始化py文件。

processed.py:是数据预处理的函数,主要包括删除时间列、对amount列进行标准化;对正常样本和异常样本进行比例的可视化(fig1_);将所有正常数据按照8:2的划分规则划分成X_train,X_test,将异常样本写成X_fraud。

auto_model.py:利用keras框架写的autoencoder模型,并对训练结果进行可视化,分别在X_test和X_fraud(fig2_)

auto_test.py:依据训练的模型sofasofa_model.h5,在X_test,X_fraud进行可视化结果:

fig3_:横轴是index,纵轴是分别在X_test和X_fraud的还原误差MSE和MAE,前者是loss;后者是metrics的mae

fig4_:相应的Precision-Recall曲线
fig_5:ROC_AUC曲线

fig6_:MSE、MAE散点图

   

processed.py:

import warnings
warnings.filterwarnings("ignore")
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

def read_file(d
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值