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