宋晓丽,张勇波,张培颖
(1.中国石油大学(华东)信息化建设处,山东 青岛 266580; 2.中国石油大学(华东)计算机与通信工程学院,山东 青岛 266580)
随着互联网技术的发展以及高校数字化建设进程的加快,大多数高校已经建成自己的校园一卡通系统,学生利用校园卡可以在校园内任意商户进行消费[1-2]。随着校园卡应用场景和消费流水的不断增加,校园一卡通系统的资金安全问题日益突出,校园卡欺诈问题越来越引起人们的重视[3-4]。
校园卡欺诈问题可以归结为学生消费数据的异常检测问题,目前有关异常检测的算法研究较多,主要分为3类:基于监督学习的异常检测算法、基于半监督学习的异常检测算法和基于无监督学习的异常检测算法。许多消费数据异常检测算法采用监督式的方法[5-6],但监督式的方法需要确定已知数据属于正常数据还是异常数据,对数据标签的准确性要求较高且无法检测训练数据中未曾出现的异常行为。无监督式的方法仅利用数据自身的内部统计特征进行检测,检测过程中需要进行大量的计算,检测效率较为低下[7-8]。半监督式的方法利用数据的标签信息,检测效率要高于无监督式的方法,且由于利用了数据自身的统计特征可以检验先验未知的异常行为[9-10]。
然而,学生消费数据具有明显的时间序列数据的特征,传统的机器学习方法难以对这种时间序列特征进行建模,这使得传统机器学习方法提取特征的效果并不理想。由于深度学习方法可以提取数据深层次的特征,随着近几年深度学习的发展,利用深度学习进行消费数据异常检测得到了广泛的应用[11-13],在众多深度学习模型中,门控循环单元(Gated Recurrent Unit, GRU)具有强大的时序建模能力,能够有效处理时间序列数据[14]。此外,自编码器具有强大的隐特征学习能力,可以提取数据更高维度的特征[15]。
根据上述特性,本文提出一种基于半监督学习的时间序列数据异常检测方法以实现学生消费数据的异常检测。本文主要贡献如下:
1)提出一种基于改进自编码器的时序数据重构模型。首先通过添加高斯噪声对原始数据进行数据增强,然后利用GRU替换自编码器中的前馈神经网络进行时间序列数据的重构。
2)提出一种基于重构误差的异常检测器。首先计算重构误差,然后利用马氏距离计算误差分数,最后计算Fβ-分数确定误差阈值,进行异常数据的检测。
3)利用所提方法对校园消费数据进行异常检测实验,并与多个已有算法进行对比,以验证所提方法的有效性及优越性。
基于监督式学习方法的异常检测由于应用了数据的标签信息,与无监督式的方法相比,具有更高的检测精度和检测效率,其主要思想是通过训练数据学习正常数据跟异常数据的分类边界,以实现区分正常数据跟异常数据的目的。
黄勇新[16]在深度森林的基础上添加了基学习器,并提出了一种综合采样方法,将AUC作为评价级联性能以及控制级联增长的标准,构建了一个信用卡欺诈检测模型,实验结果表明该模型在信用卡欺诈数据集上较之于其他模型具有优秀的综合性能。李兆桐等人[17]利用LSTM神经网络构建工业互联网设备状态的预测模型,实验结果表明了所提方法的有效性。Kiran等人[18]利用朴素贝叶斯改进了k近邻分类方法进行消费数据异常检测,实验结果表明了所提方法的优越性能。
基于半监督学习方法的异常检测由于应用了数据的标签信息,检测效率要高于无监督学习方法,其基本思想是利用不含异常的数据进行训练,学得正常数据的判别边界,在测试过程中,不在判别边界范围内的数据被划分为异常数据。
Akcay等人[19]利用生成式对抗网络进行数据的重构将距离训练数据较远的点判定为异常。唐海贤等人[20]针对到达服务器端的传感器数据流提出了一种基于卷积神经网络和长短时记忆网络的半监督在线异常检测算法,实验结果表明,与多种算法相比,所提算法效果更优。郝怡然等人[21]提出了一种基于t-SNE算法的NLOF网络流量异常检测算法,实验结果表明了所提算法有更优越的检测性能。
基于无监督学习方法的异常检测仅利用数据的内部特性来检测异常值,要求在隐空间里正常数据跟异常数据是可以区分的。
张晨旭等人[22]利用自编码器对正常声音数据进行重建,利用重建误差进行异常检测,实验结果表明,所提方法能够提升对机器异常声音的检测效果。张聪等人[23]提出了一种基于多变量耦合网络与变分图自编码器的异常检测方法,提高了系统异常检测的准确性和可靠性。孙远等人[24]结合K-means算法与智能蝙蝠算法进行网络流量数据的异常检测,实验结果表明了聚类准确率、耗时、误报率方面要明显优于传统的K-means算法。
本文所提的基于半监督学习的学生消费数据异常检测方法示意图如图1所示。
图1 所提方法示意图
总体而言,首先将没有异常的训练数据利用改进的自编码器模型进行数据的重构,之后利用重构数据和原始数据计算异常分数,利用基于重构误差的异常检测算法检测含有异常的测试数据中的异常。
为了对学生消费数据的时序性建模,参考CHO[25]和MALHOTRA[26]的方法,利用GRU对时间序列数据中时间间隔较长的依赖关系的建模能力,用其替换自编码器中的前馈神经网络,结构如图2所示。
图2 基于改进自编码器的时序数据重构模型
本文提出的时序数据重构模型分为6个部分,分别为数据增强、增强数据序列、时序数据编码器、GRU单元、时序数据解码器和重构数据序列。
首先对原始学生消费数据X进行数据增强,通过添加高斯噪声,提高模型准确率。
X′=X+α×σ2×randn(m)
(1)
其中,α为噪声比例,σ2为原始数据的方差,m为原始数据的长度,randn(m)可以产生m条服从标准正态分布的数据。
之后将增强后的数据按长度为n的窗口划分序列。
st=[xt-n+1,xt-n+2,…,xt]
(2)
其中xi∈X,st表示结束时间为t的原始数据序列。
随后将划分后的每一个原始数据序列作为时序数据编码器的输入进行编码。
et=encoder(st)
(3)
编码后的数据经过中间的GRU层。
e′t=GRU(et)
(4)
将GRU的输出作为解码器的输入进行解码,得到对原始数据序列的重构。
s′t=decoder(e′t)
(5)
通过最小化重构误差(如均方误差)进行训练。
min(loss(st,s′t))=min(‖st-s′t‖2)
(6)
本节介绍一种基于重构误差的时间序列异常检测器,其处理流程如图3所示。
图3 基于重构误差的异常检测器
首先,将原始学生消费数据分为2个部分,不含有异常数据的训练数据和含有异常数据的测试数据,之后利用前一节提出的基于改进自编码器的时序数据重构模型将训练数据进行数据重构,利用极大似然估计法将重构误差拟合为正态分布;之后,计算测试数据跟重构测试数据之间的误差,利用马氏距离计算测试数据的重构误差分数;利用Fβ-分数确定异常检测的阈值;最后,测试数据中重构误差分数超过异常检测阈值的数据被判定为异常数据。
(7)
2)将重构误差拟合为正态分布函数。假设正常数据的重构误差服从正态分布N=N(μ,σ2) ,采用极大似然估计法,去估计均值μ和方差σ2的值:
(8)
(9)
3)利用马氏距离计算异常检测的误差分数。计算公式如下:
(10)
4)利用Fβ-分数确定误差阈值:
η=max(Fβ)
(11)
本文采用某高校的学生校园卡消费记录,共有85433条数据并对数据按照式(12)进行标准化处理。
(12)
其中Xstad为标准化后的数据,X为原始数据,μ、σ分别为原始数据的均值与标准差。
取70%作为算法的训练数据,剩余30%作为算法的测试数据。
共开展2组对比实验:
1)与其他半监督检测方法对比。首先,将所提数据重构模型与循环神经网络(Recurrent Neural Network,RNN )[27]、长短期记忆网络(Long Short-Term Memory,LSTM )[28]、GRU这3个已有深度学习模型进行对比,验证所提时间序列数据重构算法的有效性;之后,面向时间序列异常检测,利用重构误差进行异常检测,以验证模型整体的异常检测性能。
2)与监督学习方法和无监督学习方法对比。与基于监督学习方法的SVM分类算法和基于无监督学习方法的孤立森林(Isolation Forest, iForest)[29]算法分别进行异常检测实验对比,以验证所提方法的检测性能。
对于时间序列数据重构问题,采用最大误差(Max Error, ME)、均方误差(Mean Squre Error, MSE)、平均绝对误差(Mean Absolute Error, MAE)作为数据重构误差衡量指标,各定义如下所示:
(13)
(14)
(15)
对于异常检测问题,采用查准率(Precision, P)、查全率(Recall, R)、F1-分数(F1-Socre,F1)这3个评价指标来衡量所提方法的学生消费数据异常检测性能,表达式如下:
(16)
(17)
(18)
其中,TP表示将正常数据预测为正常的数目,真实为正常,预测也为正常;FP表示将异常数据预测为正常的数目,真实为异常,预测为正常;FN表示将正常数据预测为异常的数目,真实为正常,预测为异常。
第一组实验结果如图4及表1、表2所示。
图4 算法收敛性对比
表1 半监督数据重构误差对比
表2 半监督异常检测性能对比
由图4及表1、表2可得以下结论:
1)对于数据重构实验,所提方法在第100次迭代左右收敛,LSTM与GRU在第150次迭代左右收敛,RNN在第175次迭代左右收敛。所提方法收敛速度要快于2个对比方法,且能收敛到更低的损失处。
2)对于数据重构实验,所提方法在ME、MSE、MAE这3个指标上的表现均要优于其他3个对比算法,ME平均降低18.34%,MSE平均降低24.46%,MAE平均降低27.12%。在第一部分实验结果表明,本文所提的数据重构模型时序数据重构是可行的,并且相较其他模型可以得到更好的精度。
3)对于数据异常检测实验,所提方法在查准率、查全率、F1-分数3个指标上的表现均要优于其他3个对比算法,查准率平均提高3.87%,查全率平均提高13.74%,F1-分数平均提高8.27%。
4)数据重构实验表明本文所提的时间序列数据重构算法可以更有效地提取学生正常消费数据的特征,进而可以更准确地确定误差阈值,从而在异常检测实验中可以取得更佳的检测性能。
第二组实验结果如表3、表4所示,由于监督学习的方法与无监督学习的方法不需要进行数据的重构以及数据重构误差的计算,故仅列出对比方法与所提方法的异常检测实验结果。
表3 监督、无监督异常检测性能对比
表4 监督、无监督异常检测运行速度对比
由表3、表4可得以下结论:
1)所提方法在查准率、查全率、F1-分数3个指标上的表现均要优于SVM和iForest算法,与SVM相比,查准率提高7.70%,查全率提高11.28%,F1-分数提高9.30%;与iForest相比,查准率提高2.45%,查全率提高3.61%,F1-分数提高2.97%。
2)所提方法在运行速度上要快于iForest方法,但慢于SVM方法,与iForest方法相比,运行速度是其193.76%,与SVM方法相比,速度仅为其57.50%。
3)所提方法在检测准确率上要高于监督学习方法SVM和无监督学习方法iForest,在检测速度上要快于iForest方法,但慢于SVM方法。这是因为监督式的方法需要已知数据属于正常数据还是异常数据,对数据标签的准确性要求较高且无法检测训练数据中未曾出现的异常行为,但由于利用了数据的标签,检测速度较快;无监督式的方法仅利用数据自身的内部统计特征进行检测,可以检测训练数据中未曾出现的异常行为,但检测过程中需要进行大量的计算,检测效率较为低下;半监督式的方法利用了数据的标签信息,检测效率要高于无监督式的方法,且由于利用了数据自身的统计特征可以检验先验未知的异常行为,在检测性能方面又要优于监督式的方法。
上述实验结论表明,本文所提基于半监督学习的学生消费数据异常检测方法能够有效提升学生消费数据的异常检测效果。
本文针对学生消费数据的异常检测问题,提出了一种基于半监督学习的学生消费数据异常检测方法,此方法包含2个部分:一是基于改进自编码器的时序数据重构模型;二是基于重构误差的异常检测器。首先,利用改进的自编码器对原始数据进行重构。然后,根据训练数据的重构误差确定异常阈值,利用异常检测器对异常进行检。最后,在某高校学生校园卡的消费数据上进行异常检测,实验的结果表明所提异常检测方法可以提高学生消费数据的异常检测性能。
但是,本文工作仍存在以下不足:半监督式的检测方法在检测速度上要明显慢于监督式的方法,在数据量较大时可能无法满足任务的实时性要求,故在未来的研究中将重点从提高方法的运行速度上对所提方法进行优化。