基于网络表示学习的区块链异常交易检测*
2022-11-15张晓琦李光松王永娟
张晓琦,白 雪,李光松,王永娟
(1.信息工程大学 网络空间安全学院,河南 郑州 450001;2.中国船舶工业综合技术经济研究院,北京 100081;3.河南省网络密码重点实验室,河南 郑州450001)
0 引言
区块链是一种分布式加密账本,为非信任成员可以安全地进行交易提供平台,使得去中心化、低成本、点对点的交易成为可能,在金融、医疗、物流、物联网等领域得到了广泛应用。区块链使用分布式存储和集体维护来实现去中心化,使用SHA-256等非对称加密算法和可靠存储技术完成信用背书,保障了系统的开源、公开和安全。区块链最成功的实践是以比特币为代表的加密数字货币,自2009年比特币诞生以来,越来越多的加密数字货币涌现出来并进入金融市场。截至2021年12月31日,加密数字货币的种类超过了1.6万种,用户近3亿。主流加密数字货币主要有比特币、以太坊、莱特币等,其中,比特币在2021年11月达到了历史最高单价68 928.90美元,流通市值达到1万亿美元。加密数字货币具有匿名性的特点,不需要用户进行实名认证,因此越来越多的犯罪分子将加密货币作为犯罪工具,实施网络和金融犯罪,如敲诈勒索、欺诈和洗钱等。2020年非法交易在所有加密货币交易中所占的比例为0.34%,总量达到100亿美元,而在2021年,0.15%的加密货币交易与网络犯罪、洗钱和恐怖主义融资等活动有关,其中诈骗案件共涉及资金约140亿美元[1]。与加密货币相关的犯罪的发生增加了加密货币的价格波动,也为区块链技术的发展带来了不利的影响,还给社会带来了安全问题,交易安全已成为区块链系统生态的一个重要问题。对区块链的异常交易进行检测,挖掘交易中有用的信息,提高对区块链犯罪的打击效率已成为一个迫切需要解决的问题。同时,采用技术手段对区块链交易中的异常进行检测,也能为解决区块链技术扩展到其他领域将要面临的安全问题提供有意义的指导。因此,研究区块链异常交易检测方法具有重要现实意义。
区块链交易记录被分布式存储在公开的链上,这为研究和检测区块链的异常交易提供了相当大的优势,然而区块链的巨大容量对进一步探索它提出了挑战,由于区块链系统中庞大的用户和交易数量,对异常的手动检测是不可能的。随着机器学习在网络安全、攻击检测方面表现出了良好的性能,在社交网络用户检测、网络入侵检测、信用卡欺诈检测、医学检测等领域都发挥了很大作用,研究人员尝试将机器学习应用于区块链的异常检测中。现有的区块链异常交易检测模型大多是对传统的机器学习的异常检测方法在区块链领域的应用,多使用机器学习方法对从交易数据中提取的特征进行检测的技术路线。在传统的特征提取方法中,一般将区块链网络中的交易看做孤立的节点,只对交易本身提取特征,未对交易网络结构信息进行深入挖掘。在正常运行的情况下,区块链网络结构大致维持稳定的状态,当出现诈骗或者攻击等异常情况时,网络结构会发生大的变化,通过对区块链网络结构的变化进行检测,可以在一定程度上检测到异常事件。而网络表示学习被证明在大规模动态网络的特征提取中具有很好的效果[2],可以较为全面地抽取网络的结构特征,提升检测的效果。
网络表示学习旨在为网络中的每个节点学习一个低维的表示向量,进而可将得到的向量表示运用到常见的网络分析任务中。学习的基本方法就是找到一个映射函数,将网络中的节点转换为表示向量,该表示向量要尽可能多地描述网络的结构和特征信息。在网络表示学习完成后,获取到的表示向量可以作为机器学习等方法的输入,来完成节点分类、异常检测、链路预测等任务。2016年,Hu[3]等人提出使用网络表示方法来检测结构异常点的模型,使用图划分算法将图中节点分为不同的社团,然后用可以捕获节点和社团连接强度的嵌入方法来学习节点表示,研究证明使用网络表示方法以及降维技术是发现网络中结构不一致的有效工具。Paudel[4]等人提出了一种新的无监督网络表示学习方法,首先执行从网络中的每个节点开始的固定长度的随机游走,并使用将频率测量投影到维度投影中随机选择的向量,最后,使用简化的散列法将其转换为低维表示向量。Bandyopadhyay[5]等人提出了一种基于深度无监督自动编码器的方法,该方法可以在生成网络表示的同时最小化异常节点的影响。作者归纳了属性图中异常点三个主要特征:与不同社团中的节点有相似的属性;连接不同的社团;属于某个社团但是属性与另一个社团相同。此外,作者还探索了对抗性学习在网络表示学习中的作用。Yu[6]等提出了一种网络游走(NetWalk)方法,在动态网络中进行异常检测,NetWalk仅考虑网络的结构信息,学习网络初始图上节点的表示,并在节点发生变化时更新表示,实现了网络表示随着网络的变化而动态更新。在异常检测阶段,NetWalk采用K-means聚类算法,将当前时间戳内现有节点分簇,然后以每个节点距离聚类最近的距离来衡量其异常得分。
本文提出的区块链异常交易检测模型结合了网络表示学习和机器学习算法,检测过程可以分为两个阶段:在第一阶段中,使用3种网络表示学习算法深度游走(DeepWalk)、DeepWalk-Ba(DeepWalk Based on Amount)和二阶属性网络嵌入(Binarized Attributed Network Embedding,BANE)对比特币交易图进行特征提取,其中DeepWalk是Perozzi等在2014年提出的一种学习网络节点潜在表示的算法[7];DeepWalk-Ba是DeepWalk算 法 的 改 进;BANE是 一种属性化网络表示学习算法,在对节点和边进行学习的同时,对节点和边的属性信息也做了考虑[8]。在第二个阶段,采用无监督和有监督的机器学习算法进行异常检测,并使用精确率、召回率和F1值对检测的性能进行评估和对比。与现有的检测模型相比,本文提出的检测模型使用网络表示学习从区块链交易网络的结构和属性信息中提取特征,对异常交易发生时区块链网络结构的变化进行了学习,得到的特征更加全面地反映节点信息,在实验中,达到了更好的检测效果。
本文使用网络表示学习来挖掘区块链交易网络结构中的隐藏信息,提取更准确和全面的特征集;对网络表示学习的游走策略进行针对性调整,提出了DeepWalk-Ba网络表示学习方法,并对不同的检测算法的效果进行了对比。
本文首先介绍了区块链异常交易检测的相关研究工作;接着对区块链异常检测问题进行了描述,对数据集、数据预处理、标准化和采样处理等进行了说明;然后介绍了本文采用的区块链异常交易检测模型,并对检测的评价指标进行了说明;接下来介绍了本研究所作的三组实验,并对结果进行说明;最后对本文进行了总结,并介绍了下一步工作的研究方向。
1 相关工作
异常检测是机器学习中一个重要分支,旨在识别偏离正常数据分布的对象,在网络入侵检测、疾病检测、故障检测、工业异常检测和金融欺诈检测等领域,都发挥了重要的作用。随着深度学习等技术的出现,异常检测技术也得到了进一步的完善。区块链是一个复杂的系统,存在多种异常的情况,如何将新的异常检测技术应用于区块链是一个值得关注的问题。本节介绍了区块链异常交易检测和网络表示学习在异常检测中的相关研究情况。
针对区块链异常交易,主要的研究方法包括基于特征的分类方法、基于聚类的检测方法、基于统计分析模型的检测方法等。Harlev[9]等提出了出了一种使用监督机器学习算法来减少交易匿名性的方法。作者使用含有两亿余个样本的已标记数据集,并构建了可以区分10个类别的分类器,该方法对未标记的交易的检测达到了77%的准确率。Zambre[10]等人对比特币的欺诈案例进行了研究,并对比特币交易中的特征提取问题进行了讨论,确定了6种可以为K均值聚类(K-Means)算法提供最佳恶意用户分类结果的特征。Li[11]等人对比特币交易中的非法地址进行了识别,首先从网站、论坛和论文中收集了非法地址数据集,然后使用一种将长短期记忆(Long Short-Term Memory,LSTM)算法结合到自动编码器中以生成时间特征的模型对非法地址提取了特征,最后,使用随机森林(Random Forest,RF)、支持向量机(Support Vector Machines,SVM)、人工神经网络(Artificial Neural Network,ANN)等机器学习算法来评估特征,测试表明所提出的特征具有区分性和鲁棒性。Rabieinejad[12]等提出了一种基于深度学习的以太坊威胁追踪模型,该模型应用深度神经网络进行攻击检测,并使用机器学习算法的组合进行攻击分类,在以太坊攻击检测中准确率达到97.72%,在攻击分类中准确率达到99.4%。Gu[13]等人利用网络爬虫工具收集了区块链交易所数据集,然后进行相关性分析,得出影响不同交易所交易量的因素,再基于深度学习方法建立了各种因素对交易金额影响的预测模型。此外,作者通过计算预测交易金额与实际交易金额的偏差,为异常交易金额检测提供依据。对检测结果的案例研究表明,一些异常交易金额与政策变化和行业事件有关,而另一些则被怀疑与违法行为有关。Nerurkar[14]等设计了9个功能来训练异常检测模型,对16种不同的用户进行分类,并将该模型与3个现有的基准模型进行对比。实验表明,该模型的特异性和敏感性与其他模型相当,分类准确率为91%。Lin[15]等人提出新的特征来开发比特币异常检测分类模型,作者利用这些特征对监督机器学习模型进行训练,然后使用这些模型对异常比特币地址进行预测和评估。Sharma[16]等介绍了基于K-means聚类的比特币异常检测方案,该方案基于比特币加权价格和交易中的时间戳来预测异常。Kim[17]等提出了一种通过分析区块链网络流量来检测恶意事件的机制。数据采集引擎感知底层区块链流量,实时生成多维数据流,并基于半监督学习从创建的数据实例中检测异常。Lorenz[18]等人研究了在标签稀缺的情况下的洗钱检测问题,作者首先表明现在使用的无监督方法不足以检测真实环境中比特币数据的异常交易情况,然后提出了一种新的算法,该算法使用5%的标签就能达到与有监督算法相似的检测效果。
随着网络表示学习方法在异常检测领域的应用,一些研究者们也尝试将这一方法在区块链异常检测领域进行尝试。Wu[19]等提出了一种检测以太坊网络钓鱼诈骗的方法,作者使用网络表示学习方法trans2vec提取以太坊中交易地址的特征,并使用支持向量机SVM算法将节点分为正常节点和钓鱼节点。Wei[20]等人介绍了一种比特币交易预测的模型,该模型利用深度神经网络来学习比特币交易网络表示。为了捕捉不同类型的比特币交易模式,作者探讨了比特币交易账户的拓扑连接模式、交易金额模式和交易动态,然后构建了时间衰减可达性图和时间衰减交易模式图,并在两个图上都使用节点嵌入,实现了比特币交易预测系统。Wang[21]等提出了一种识别以太坊中的网络钓鱼账户的算法交易子图网络(Transaction Sub-Graph Network,TSGN),作者首先对交易中的每个地址提取子图,并将这些子图拓展为响应的TSGN,此外,作者还引入交易的方向属性来为最终的表示提供更多的信息来增加对钓鱼账户的识别准确率。Wang[22]等人提出了一种基于特征表示的异构网络表示方法用于以太坊身份识别。他们使用以太坊数据构建异构网络,再利用异构网络表示方法将整个网络映射到一个低维空间中得到表示向量,再使用节点分类任务对欺诈账户和正常账户进行区分,实现了以太坊身份识别。
现有的区块链异常交易检测方法大多没有考虑异常事件发生时区块链网络结构特征的变化,而后者通常对异常事件的检测有一定的帮助。已有的使用网络表示学习方法对区块链的异常检测的工作多聚焦于对地址的识别分类问题,使用基于网络结构信息的表示学习方法对交易地址进行分类,没有对交易的检测进行研究,在表示学习的过程中,也没有对网络的属性信息进行学习。因此,将网络表示学习方法用于区块链异常交易检测仍具有很大的研究意义和提升空间。
2 问题及数据描述
区块链异常交易检测是一个二分类问题,本文旨在对公开的比特币交易数据进行检测,以达到区分异常和正常交易的目的。本节对区块链异常检测问题进行了描述,并对研究中使用的比特币数据集和数据预处理进行介绍。
2.1 问题描述
区块链交易网络可以用G=(V,E)表示,其中V={v1,v2,…,vn}为 节 点 集 合,vi,i∈{1,2,…,n}表示交易,E={(vi,vj)|i≠j}表示边的集合,(vi,vj)代表代币在两个交易之间的流转。使用Gl=(V,E,X,Y)表示具有节点特征和标记的网络,其中X∈R|v|×d为节点集合的特征矩阵,d为节点特征的维度,Y={y1,y2,…,yn}表示节 点的 标记集 合,yi,i∈{0,1,…,n}的取值为0和1,0代表节点为正常交易,1代表节点为异常交易。区块链异常交易检测可以看做图分类任务,通过对训练数据集的学习,得到分类器f:V|→Y用来预测区块链交易的标记,对节点vi,若f(vi)=0,则vi为正常交易,若f(vi)=1,vi为异常交易。
在区块链交易中,传统的节点特征提取方法一般将节点看做一个孤立点,仅选取与交易相关的信息,而忽略了交易网络的结构信息,本文使用网络表示学习方法获取交易网络中节点的特征,旨在对交易网络的结构和属性信息进行学习,得到节点的表示向量X′∈R|v|×dE,其中dE为网络表示学习的嵌入维度。
2.2 数据集描述
本文使用由Weber[23]等发布的比特币交易数据集,包含交易的节点、边和标记信息。其中,节点代表交易,边代表交易之间的比特币流转信息,即某一交易的输出被下一交易作为输入而花费掉,标记代表了交易的属性,有“正常”“异常”和“未知”3种值。
数据集包含203 769个节点和234 355条边,其中每个交易节点有166个特征,前94个特征表示与交易直接相关的信息,包括时间间隔、输入交易和输出交易的数量、输入交易和输出交易比特币平均值等,其中时间间隔表示交易广播到比特币网络的时间。剩余的72个特征是聚合特征,是使用交易信息从中心节点向后或向前一跳获得的。图1显示了在不同时间间隔上3种不同标记的交易的分布。
图1 不同时间间隔上交易的分布
2.3 数据筛选和标准化
为了获得更准确的检测效果,对数据集进行了预处理,根据对应关系,将节点和标记合并,并删除标记为“未知”的节点数据,得到42 019个正常和4 545个异常交易节点。考虑到交易节点的特征数据尺度存在差异,在进行检测的过程中,尺度大的数据会比尺度小的数据对检测模型有更大的影响,需要对数据进行标准化处理,将数据按比例缩放,使之落入一个小的特定区间[24]。本文选取Z-Score方法对特征数据进行标准化,Z-Score标准化方法利用原始数据的标准差和方差将不同数量级的数据变换为到相同的量级,并使用Z-Score值进行衡量,使得不同的特征数据具有可比性,其标准化过程如下:
假设具有n个特征的原始数据序列为{x1,x2,…,xn},对 其 进 行 变 换其中标 准 化 完 成 后,序 列 变 为{y1,y2,…,yn},新序列均值为0,方差为1。
2.4 数据过采样和欠采样
经过筛选后的数据集中,异常样本占正常样本的比例约为11%,由于很多异常检测模型的输出类别是基于阈值的,在训练数据中正常和异常样本的比例不平衡时,阈值的存在会导致模型输出倾向于占比高的类别。对于这种二分类问题中的数据不平衡问题,一般采取调整模型阈值或者对数据集进行采样处理的方式来解决,而采样方法一般比调整阈值的效果更好。对数据集的采样处理一般分为过采样和欠采样,其中,过采样是指从少数类的样本中进行复制采样或生成新样本来增加少数类样本,而欠采样是指对多数类的样本进行采样来减少多数类样本。使用采样方法处理数据集,可以解决数据集不平衡的问题,但也存在模型过拟合的可能性,不利于检测模型的泛化性能。
本研究中使用随机过采样和合成少数过采样技术(Synthetic Minority Oversampling Technique,SMOTE)[25]两种过采样方法以及随机欠采样对不均衡的数据集进行处理。随机过采样是对少数类样本的复制采样,而随机欠采样是对多数类样本的随机采样。SMOTE算法的基本思想是对少数类样本进行插值合成新样本并添加到数据集中,即对少数类样本a,从它相邻的样本中选择少数类样本b,然后在a,b的连线上随机生成一个新的样本c。图2显示了在3种采样方法处理前后数据集中正常和异常样本的分布情况,采样处理得到了更均衡的数据集。
图2 采样前后数据集中正常和异常样本分布情况
3 区块链异常交易检测模型
本文使用网络表示学习和机器学习模型结合的方式来对区块链异常交易进行检测,检测模型包含2个步骤:
(1)使用网络表示学习方法对区块链交易图数据进行学习,得到交易节点在低维空间中的表示向量,作为交易的特征。
(2)合并数据集中交易的166个特征和网络表示学习得到的特征,使用机器学习的异常检测模型对特征集进行检测,并用三个评价指标对检测结果进行评估。
在本研究中采用DeepWalk、DeepWalk-Ba和BANE 3种网络表示学习方法对区块链交易网络数据提取特征,在合并特征并进行标准化和采样处理后,使用5种有监督学习算法和1种无监督机器学习算法进行异常检测,并选择评价指标对检测效果进行评估。以DeepWalk算法为例,基于网络表示学习的区块链异常检测整体框架如图3所示。
图3 基于网络表示学习的区块链异常检测整体框架
区块链异常检测框架主要由网络表示学习和异常检测模型构成,模型的输入是交易图数据。在网络表示学习阶段,用交易图数据生成网络图,再利用随机游走得到节点序列,最后使用表示学习得到节点的向量表示作为特征。合并特征并对特征进行标准化和采样处理后,使用异常检测模型进行检测。
3.1 网络表示学习
本研究中使用基于网络结构性质的网络表示学习方法DeepWalk及其改进方法DeepWalk-Ba,此外,基于边和节点属性信息的方法BANE也被用来提取比特币交易图的特征。
DeepWalk算法包括3个步骤,第一步网络生成,使用交易数据生成网络图G=(V,E),其中V代表顶点的集合,E代表边的集合。第二步利用随机游走获得节点采样序列,第三步使用skip-gram[26]模型学习采样序列得到节点的表示向量。在随机游走的过程中,使用可重复访问节点的深度优先遍历算法随机游走(RandomWalk)遍历节点,对给定起始节点vi,从其邻居节点中随机选取节点vj进行访问并重复此过程,直到节点序列{vi,vj,…}达到一定的长度。在对网络中的每个节点获取到足够长度的序列后,对得到的节点序列集进行skip-gram向量学习,将离散的网络节点表示成向量。
DeepWalk-Ba是DeepWalk算法的扩展,在交易网络中两个节点之间,如果交易量更大,则这两个节点具有更紧密的关系。在随机游走过程中,采用一种基于交易总金额的有偏随机游走策略,在给定起始节点vi后,下一个节点不再随机选取,而是以一定的概率访问邻近节点vj。使用A(vi,vj)表示节点vi和vj之间的交易量,Vvi表示连接到节点vi的节点集,对节点vi的邻近节点vj的采样概率如下:
算法的输入为图G=(V,E)及表示学习的维度d、每个顶点的游走个数γ、随机游走长度t等参数,输出为顶点表示矩阵ϕ∈R|V|×d,对输入的图G=(V,E),将节点集V打乱为O,并从O中随机选取vi作为起始节点,根据有偏随机游走选取下一个节点,最后得到γ条最大长度为t的序列Wvi,再使用skip-gram学习节点的表达向量。节点的有偏随机游走策略算法如下:
对于游走序列walk的当前节点curr,其下一节点为根据交易总金额确定的离它最近的节点vcurr。
BANE算法中定义了一个邻接矩阵,通过以逐层方式聚合节点属性并从相邻节点到目标节点的边的信息来捕获节点和属性之间的关联信息,模型分别对网络结构和网络属性两个矩阵进行学习,再将两个矩阵合并,以获得属性网络的表示向量。学习的过程如图4所示,网络结构矩阵A为一个n×n阶矩阵,属性信息矩阵B为一个n×d阶矩阵,学习后得到的网络表示矩阵C为一个n×k阶矩阵,其中k〈〈n。
图4 BANE网络表示学习过程
3.2 异常检测算法
在利用网络表示学习方法得到区块链交易节点的表示向量后,将其作为特征添加到原始数据的特征集中,并对数据集进行Z-score标准化和过采样及欠采样处理,以得到更均衡的交易特征数据集。在异常检测阶段,本文采用5种有监督和1种无监督算法来对特征集进行检测。5种有监督算法分别是:逻辑回归(Logistic Regression,LR)、随机森林(Random Forest,RF)、自 适 应 增 强(Adaptive Boosting,AdaBoost)、多层感知器(Multi-Layer Perception,MLP)和支持向量机(Support Vector Machines,SVM),无监督算法则选用了K-means。
3.3 评价指标
异常交易检测可以看做一个二分类问题,只分正常和异常两类,一般用正类(P)表示异常,用负类(N)表示正常。真(T)和假(F)针对预测与实际的比较结果,T指正确匹配,即预测正实际为正,预测负实际也是负;相应的,F表示不匹配,即预测错误。异常交易检测的混淆矩阵见表1。
表1 异常交易检测的混淆矩阵
本研究中采用精确率、召回率、F1值作为异常交易检测的评价指标,其中,精确率(P)表示预测为正例的数据中预测正确的数据所占比例;召回率(R)表示实际为正例的数据里正确预测为正的数据所占比例;F1值是精确率和召回率的调和平均值。精确率、召回率、F1值的计算方法如下:
对于精确率P、召回率R和F1值三个指标,在比特币异常交易检测中,为了尽可能地检测到所有的异常交易,更注重召回率,召回率越高,代表遗漏的异常交易越少。
4 实验测试
为了验证基于网络表示学习的检测模型的有效性,需要与现有异常检测模型进行对比。设计了三组实验,分别使用原始数据的特征集、增加了网络表示学习提取的特征后的合并特征集、经过标准化和采样处理的合并特征集作为检测模型的输入,并随机选取输入集的70%作为训练集,剩余30%作为测试集进行异常检测。设置K-means的聚类个数k为2~13。在测试完成后,对不同的聚类个数k下的检测效果进行检查,选取分类效果最好的k值下的样本簇进行聚类,并据此计算检测的精确率等指标。实验环境使用Windows 10操作系统,TensorFlow机器学习开发框架,开发语言为Python。
第一组实验对原始数据中的特征集进行异常检测,得到的结果如表2所示。
表2 对原始数据特征集的检测结果
RF算法得到最好的检测效果,精确率达到了98.4%,召回率为62.8%,F1值为76.7%。在13 709个样本的测试数据集中,有879个异常数据,其中正确检测为异常的为552个,召回率过低。此外,无监督算法K-means算法表现出了较好的召回率,但精确率过低。RF算法对原始数据特征集的检测结果的混淆矩阵如图5所示,纵轴代表实际值,横轴代表预测值,“0”表示正常,“1”表示异常。对于实际值中的正类(异常),有552个正确预测为异常,327个错误预测为正常;在负类(正常)中,13 082个正确预测为正常,9个错误预测为异常。
图5 RF算法对原始数据特征集的检测结果混淆矩阵
第二组实验使用3种网络表示学习算法分别对比特币交易图提取表示向量作为交易的特征,并添加到原始数据集中的特征作为合并特征,再使用异常检测算法对合并后的特征集进行检测。在3种网络表示学习方法中,DeepWalk和DeepWalk-Ba学习得到128维的特征集,BANE得到了64维的特征集,与原数据集中交易的166维特征合并后得到294和230维的特征集。表3显示了基于3种不同的网络表示学习算法的模型对比特币异常交易的检测结果。
表3 基于网络表示学习的模型的检测结果
与第一组使用原始数据特征集的传统检测方法相比,第二组实验的检测效果有了很大提升,尤其是召回率有了大幅度提升,证明了网络表示学习对区块链这种大型网络结构提取特征的有效性。与使用随机游走策略的DeepWalk相比,使用了基于交易金额的有偏游走策略的DeepWalk-Ba在RF、AdaBoost、MLP、SVM等算法的检测结果具有一定优势,表明DeepWalk-Ba可以更好地反映网络的某些特性来逼近网络。使用BANE的方案具有最好的检测结果,证明对网络结构和属性信息同时进行学习的BANE方法,比只对网络结构信息进行学习的DeepWalk和DeepWalk-Ba方法更适合于提取比特币交易网络的特征,挖掘到了更多的隐藏信息。
第三组实验是在第二组实验的基础上,对特征集进行标准化和采样处理。结果显示,3种采样处理方式均导致过拟合的问题,对检测效果没有提升。对特征集标准化处理后,检测效果有微弱提升,提升效果不明显的原因是原始数据特征集大部分字段和网络表示学习得到的特征集均已被标准化,对其余字段进行标准化对检测结果带来的提升有限。表4显示了特征标准化后,表现最好的三组网络表示学习模型和异常检测算法的组合的检测结果。
表4 特征标准化后的检测结果
表现最好的是BANE模型与RF检测算法的组合,达到了99.3%的精确率、86.4%的召回率和92.4%的F1值,召回率较实验一的传统检测模型有大幅提升,检测结果混淆矩阵如图6所示,对实际值中的1 146个正类,990个正确预测为异常,156个错误预测为非异常;负类中,12 817个正确预测为非异常,7个错误预测为异常。
图6 BANE模型与RF算法的检测结果混淆矩阵
三组实验中,与对原始数据中的特征进行检测的第一组实验相比,基于网络表示学习的第二组实验的检测效果有大幅度的提升,证明了网络表示学习对区块链交易图提取特征的有效性。对3种网络表示学习方法,DeepWalk-Ba模型具有比DeepWalk更好的检测效果,证明有偏的随机游走可以更好地反映网络的特性,为特征提取贡献了更多信息。在3种方法中,使用了BANE提取特征的检测方法具有最好的检测效果,说明对交易网络结构特征和属性信息同时进行表示学习,获取到了更准确全面的特征信息。此外,在实验中,对特征数据进行了标准化和采样处理,3种采样方法均会导致检测结果过拟合,但是这并不表示采样处理对这种不均衡数据集的异常检测没有效果,对特征集进行标准化处理,对最终的检测效果有一定的提升。
5 结论
为了对区块链交易中的异常交易进行检测,本文提出了一种基于有偏随机游走的网络表示学习方法,使用3种网络表示学习方法对比特币交易图提取特征,对特征集使用不同的有监督和无监督方法进行异常检测,得到了最好99.3%的精确率、86.4%的召回率和92.4%的F1值。
实验中,无监督算法K-means的检测结果显著地落后于有监督算法,但在实际的区块链网络中有大量的节点和交易,且随着时间处于动态变化中,及时而准确地获得有标签的数据是异常困难的。无监督检测算法不要求数据标签,对于实时检测甚至预测区块链异常交易有重要意义。在第一组实验中,K-means算法具有很低的精确率,但召回率却很高,高于同组实验中全部有监督算法。在未来的研究中,将K-means算法和有监督算法结合,对检测结果进行交叉验证,可能会提高精确率和召回率,从而带来更好的检测效果。此外,本研究中使用3种采样方法处理特征数据集,均产生了过拟合的问题,没有对检测结果产生好的影响,但并不能否认采样处理方法在区块链这种正负类别数量差异巨大的不平衡数据集中的作用。在后续研究中,找到更适于处理区块链数据集的采样方法,会带来检测效果的进一步提升。