廖 茜,顧益軍
中國人民公安大學 信息網絡安全學院,北京 102600
作為區塊鏈技術最具代表性的應用,比特幣是近十年在數字貨幣投資領域和研究領域最熱門的話題之一。依托加密算法、POW共識機制和P2P分布式網絡技術,比特幣具有去中心化、分散化、匿名性、總體運營安全等特點。正是基于這些特性,加之數字資產監管法律規制的不健全,比特幣被眾多不法分子利用,導致了暗網交易[1]、勒索詐騙[2-3]、洗錢[4]等一系列網絡、金融犯罪。2017年頻繁爆發的全球性比特幣勒索案件就是被不法分子利用的典型[5]。因此,分析交易數據、研究比特幣網絡異常交易的檢測方法對于公安機關和有關監管部門規范交易行為、保障網絡空間安全、強化金融治理具有迫切的現實意義。
異常檢測是數據挖掘領域研究的一個重要問題,機器學習的發展為挖掘異常交易提供了廣闊的思路。比特幣系統中的異常被研究者們定義為不正常或不太可能的可疑情況[6],如勒索詐騙、黑客攻擊、暗網交易等。當前,學術界的異常交易檢測工作普遍是依托交易數據構建的網絡結構對交易節點提取異常行為模式相關特征,構建多維特征向量,再運用機器學習的方式加以檢測。斯坦福大學的有關學者早在2013年就開始了采用機器學習技術對公開可用的比特幣交易數據加以深入探究,其中Hirshman等人[7]針對比特幣系統中的洗錢和“混幣”服務,在使用Kmeans聚類方法對用戶初步分析后提出基于結構特征相似性的無監督算法RoIX將節點進一步角色分類。由于缺乏數據標簽,作者的研究雖然在追蹤“混幣”服務方面效果不佳,卻發現各聚類中心存在一定的異常交易行為,為進一步發現交易數據中的異常模式奠定了基礎。Pham等人[8]在交易圖和用戶圖上嘗試使用LOF算法構建檢測模型,論文根據冪率分布初步確定了比特幣系統中存在異常用戶。然后利用LOF算法進一步細化定位到存在的異常用戶;Monamo等人[9]在文獻[8]基礎上嘗試了在聚類的同時可以實現異常檢測的算法trimmed-Kmeans,實驗結果表明,在相同的研究條件下,trimmed-Kmeans更具優勢;由于trimmed-Kmeans是基于全局的異常檢測算法,Monamo等人[10]在文獻[9]的基礎上引入基于近鄰的異常檢測算法kd-trees,對比兩類算法的檢測效果;沈蒙等人[11]以分析交易動機為切入點,設計了兩類典型異常交易行為的判定規則并利用子圖匹配技術實現了比特幣異常交易行為識別算法。曾雅倩[12]利用Elliptic公司公開的比特幣交易數據,基于交易實體的多維特征和交易流構建半監督分類模型圖卷積神經網絡,為探究比特幣反洗錢監測模型提供了建模思路。Omer[13]利用比特幣客戶端提供的原始數據創建數據集,并使用IForest、CBLOF等5種經典的無監督檢測算法分析惡意交易。論文首次采用集成學習的思想建模,將多種異構基學習器在簡單平均策略下并行集成。對比單一的檢測方式,集成學習方法在AUC值等綜合檢測性能方面顯示了出眾的效果。
綜上所述,由于交易數據量大、無實體認證導致獲取盡可能多的用戶標簽困難,現有研究多從傳統的無監督學習視角出發,集成學習的應用僅限于將異構基學習器并行疊加最后以簡單平均策略輸出結果。集成學習作為近年來機器學習領域的研究熱點,已有很多學者將集成學習運用于異常檢測[14-15],以提高模型的檢測能力。由于數據在高維空間分布較為稀疏,無關特征的存在會干擾異常檢測的效果,Lazarevic等人[16]提出了最早的集成異常檢測框架feature bagging。類似于隨機森林算法,feature bagging通過從原始特征集中抽取特征子集來訓練多個基學習器,并最終采用一定的策略組合所有的基學習器以提高模型對高維數據的整體檢測性能。Aggarwal等人[17]在集成分析廣泛應用于高維數據離群點檢測的基礎上探究了集成異常檢測的理論基礎——偏方差理論。同時,作者提出了兩種新的基學習器平衡組合策略:AOM、Threshold-Sum以達到在集成系統中權衡方差與偏差的效果。由于為了增加學習器的多樣性而不加選擇地組合準確性較低的基學習器可能會降低集成方法的整體性能,Rayana等人[18]提出順序集成方法SELECT對異構基學習器選擇性地組合,相比于比非選擇性集成算法更具可靠性和穩定性。為了進一步平衡集成學習系統的多樣性和準確性,Campos等人[19]首次將有監督的提升方法boosting應用到無監督集成異常檢測場景中。因為缺乏數據標簽,boosting方法在異常檢測中應用較少,現有研究基于bagging和feature bagging方法對基學習器并行集成較多。然而現有的并行集成方法缺乏選擇性地組合基學習器導致表現優異的基學習器難以發揮優勢,組合之后的模型只能達到較為一般的效果。同時,現有的大部分算法是以全局的角度出發,較少細致地關注數據的局部性。針對這兩方面的問題,Zhao等人[20]提出基于局部動態選擇組合的并行集成異常檢測算法(locally selective combination in parallel outlier ensemble,LSCP),采用局部異常因子算法LOF并設置不同超參數以實現基學習器的多樣性,通過定義局部區域和偽標簽生成方式為每個數據點選擇鄰域空間中表現最佳的基學習器作為最終結果輸出。對比傳統的基學習器合并策略,LSCP算法達到了權衡方差與偏差的效果,表現出更好的泛化能力。
鑒于LSCP算法在集成過程中考慮了“動態選擇”和“局部性”,本文借助LSCP算法進行比特幣網絡異常交易檢測。針對LSCP算法為實現系統多樣性采用的是對同構基學習器設置不同的超參數的方法,未曾嘗試在系統中使用異構的基學習器。一般而言,大規模數據往往存在多種類型的異常點,為提高集成學習的檢測性能,要求基學習器應“好而不同”[21]。單一的LOF算法通過計算每個樣本相對于其周圍樣本點的相對密度來度量異常程度,對全局異常點的檢測效果較差,而且對稀疏分布下的異常簇不敏感。為此,本文在LSCP算法中融入LOF算法、經典的KNN算法和文獻[13]中采用的5種無監督異常檢測算法,利用異構基學習器對不同異常類型的敏感性,提升檢測模型的整體性能。實驗結果表明,與單一的檢測算法和簡單平均策略的集成方法相比,本文方法在比特幣異常交易檢測任務中具有更好的綜合性能。
目前將集成學習應用到異常檢測領域通常是將若干個基學習器并行疊加,然后將多個基學習器的結果以投票法、均值法等結合策略輸出,這些結合策略未對基學習器加以選擇,導致表現優異的基學習器檢測能力被掩蓋,性能較差的基學習器對整體性能的影響較大,互補性不足。同時,基學習器的結合策略一般是從全局角度出發,而強調數據的局部性可以使檢測結果更加精確、細致。LSCP算法的基本思想是:對一個數據點的異常程度進行預測時,先定位到該點的局部區域,利用偽標簽對所有基學習器在局部區域的表現加以評估,最后選擇在局部區域具有優異表現的基學習器進行二次合并作為該點的輸出結果。雖然異常檢測與有標簽的分類問題有差異,Aggarwal等人[17]證明偏差-方差理論同樣適用于集成異常檢測領域。從偏差-方差理論的角度出發,LSCP算法根據局部區域動態地為每個數據點挑選最佳的基學習器,能夠達到降低整體偏差的效果;而基學習器的多樣性和根據偽標簽的評估情況二次合并多個最優基學習器作為最終結果,可以降低系統方差,減小對數據變化的敏感性。因此,LSCP算法對異常數據的檢測具有良好的泛化性能和準確性。
現有的無監督異常檢測算法大致可分為以下主要幾類:(1)基于最近鄰的技術;(2)基于聚類的方法;(3)基于統計的方法;(4)基于子空間技術;(5)基于模型的方法。針對大規模數據異常類型的多樣化,為了借助異構基學習器增加集成系統的多樣性和對不同異常類型的敏感性,并與文獻[13]進行效果比對,本文在LSCP算法中融入上述5種研究視角的7種經典的無監督異常檢測算法,如表1所示。

表1 異構基學習器的具體算法Table 1 Specific algorithm of heterogeneous learner
為實現比特幣網絡異常交易的更有效檢測,本文采用融合異構基學習器的LSCP算法,算法1為LSCP算法的偽代碼,具體實現步驟如下:
算法1LSCP算法
輸入:訓練集Xtrain∈Rn×d;測試集Xtest∈Rm×d;
r個異構基學習器;t為特征子集的個數;
k為局部區域內滿足條件的訓練樣本數。
輸出:Xtest的異常分數。
1.利用訓練集Xtrain分別訓練r個異構基學習器,將結果合并為異常分數矩陣O(Xtrain)
2.生成Xtrain的偽標簽target
3.forinXtestdo

6. forT rinTdo
9. end for
10. 最相似的前x個基學習器T*x
12.end for
(1)訓練多個異構基學習器。具體的,對比特幣交易數據集采用留出法劃分訓練集與測試集,Xtrain∈Rn×d表示由n個點、d維特征向量的訓練數據構成的特征矩陣,Xtest∈Rm×d表示由m個點、d維特征向量的測試數據構成的特征矩陣。LSCP算法首先借助一定參數設置下的r個異構基學習器訓練數據,產生異常分數集T={T1,T2,…,T r}。其中,T r(·)表示第r個基學習器對交易數據點的異常分數向量。異構基學習器對訓練數據進行異常評分并Z-score標準化后的異常分數矩陣表示為O(Xtrain)。

(2)定義偽標簽生成方式。為了在缺乏數據標簽的情況下采用偽標簽評估基學習器的檢測能力,本文采用所有基學習器輸出結果的最大值作為交易數據點的偽標簽,最大程度地保留數據點的異常特性。即:

(3)定義局部區域。為了從數據的局部性出發到達更加細致的檢測效果,算法對一個新數據點檢測時,先對所有基學習器在這個點鄰域空間的表現進行評估,并認為基學習器相應地在這個點也會有同樣的表現。因此,為了確定數據點的鄰域空間需要對局部區域加以定義。將測試數據點的局部區域ψj定義為k個最近訓練數據點的集合。k值并不固定,取決于滿足條件的訓練樣本的數量。類似于Feature bagging思想,為減少高維空間中不相關特征的干擾并降低計算復雜度,采用特征子集挑選滿足條件的訓練樣本點。具體實現如下:
①隨機選擇t組維度范圍為的特征子空間。
②對于每一組特征子空間,通過計算歐氏距離在訓練集中獲取與最近的k個訓練樣本點。
③將步驟②中出現次數超過的樣本作為的局部區域ψj。
(4)得到測試數據點的局部區域后ψj,利用訓練好的基學習器生成該局部區域的異常分數矩陣
(5)得到局部區域ψj的數據點的偽標簽,生成目標向量targetψj,即:

(6)為了選擇在數據點上表現優異的基學習器,計算異常分數矩陣O(ψj)的每個列向量和目標向量targetψj之間的皮爾遜相關系數,選擇與目標向量最相似的前x個基學習器。
(7)最后進行基學習器二次選擇組合,根據選擇的x個基學習器,計算測試數據的異常分數,將x個異常分數的平均值作為的最終異常分數,以降低偽標簽定義方式帶來的隨機性和方差,提升算法的可靠性。具體實現流程如圖1所示,其中淺色區域可以通過緩存讀取,深色區域需要重新計算。

圖1 基于LSCP算法的比特幣異常交易檢測流程Fig.1 Bitcoin abnormal transaction detection process based on LSCP algorithm
本文使用比特幣公開交易數據進行實驗研究。該數據集由Omer(https://ieee-dataport.org/open-access/bitcoin-transactions-data-2011-2013)公布,從bitcoin core客戶端的blk.dat文件提取而來,包含了2011年至2013年的交易流信息,具體字段說明如表2所示。在現有比特幣相關研究領域,由于缺乏完整的標簽信息,大多以半手工方式標注數據集。比特幣權威論壇Bitcoin Forum(https://bitcointalk.org/index.php?topic=576337)公布了2011年至2013年期間的歷史非法交易,其涵蓋了BTC盜竊、BTC黑客攻擊和BTC丟失等各類案件的詳細信息,包括涉案金額、日期、交易ID等。本文借助Python編寫的爬蟲在該論壇對非法交易進行采集,并借鑒文獻[22]的方式將非法交易及其子交易標注為異常(1),其余交易則標注為正常(0)。經統計,數據集中包含108個異常類,30 248 026個正常類,異常類的比例約為0.000 35%。

表2 特征說明表Table 2 Feature list
利用交易流信息,本文使用python-igraph包(版本0.7.0)構建以交易為節點的有向無環網絡圖,并在此基礎上提取7種有代表性的節點異常行為模式相關特征:
(1)交易網絡特征:入度、出度。
(2)交易資金特征:總接收數額、總發送數額、平均接收數額、平均發送數額、凈余數額。
為驗證本文方法的優越性,本文將組成異構基學習器的各無監督檢測算法、上述異構基學習器在簡單平均策略下并行集成的檢測方法(Avg-Ensemble)作為實驗對照組。實驗在Windows 10系統、3.0 GHz Inter Core i5處理器、Python3.6.3環境下運行,步驟如下:
(1)讀入數據并進行預處理。讀入數據,檢查數據的格式、查看數據的分布情況。針對提取的各交易特征具有較高的偏度和峰度值,實驗過程中使用對數變換對各數據特征進行轉換,降低較高的偏度和峰度值對后續建模分析產生的不利影響。在此基礎上,本文采用更適用于處理有異常值的穩健標準化方法對交易數據的多維特征標準化。
(2)考慮到數據整體規模較大且樣本類別分布不平衡程度較為嚴重,本文對正常類交易進行簡單隨機抽樣,與所有異常類樣本構成正負比例為1∶500的新數據集,以在保證實驗合理性的同時減少計算開銷。為避免隨機因素影響、降低抽樣誤差,簡單隨機抽樣20次以構造20個子數據集,最終以實驗平均值反映檢測效果。圖2為數據分割示意圖。

圖2 數據分割示意圖Fig.2 Data segmentation diagram
(3)將每個子數據集采用留出法以7∶3的比例劃分訓練集、測試集,劃分時對正負類別的樣本進行隨機分層取樣,確保訓練集、測試集中各類樣本分布與子數據集相同。
(4)為避免子數據集類別不平衡影響檢測性能,采用SMOTE算法在訓練集上對少數類樣本即異常交易進行過采樣,最佳采樣比作為實驗參數進行調優。
(5)在各子數據集的訓練集中利用各算法迭代訓練模型,采用Hyperopt超參數優化技術以最大化AUC值為目標函數進行逐步調參,選取最優參數組。
(6)利用最優參數訓練而成的模型在測試集中依據異常分數閾值預測各交易點的分類結果。
(7)由于數據集高度不均衡,并且在公安實戰中與正常行為相比更關注異常突發狀況,與整體預測效果相比更關注預警、處理的及時性,因此本文選取AUC值、召回率Recall、檢測結果的前n項的準確率Precision@k作為泛化性能評估指標。這些評估指標在異常檢測領域也得到廣泛使用[15,23]。依據測試集的分類結果計算各評估指標值,最終檢測效果由20個子數據集計算平均值得到。
20個子數據集上的AUC值、召回率Recall、Precision@k結果如表3所示。綜合表3可知,在各評估指標上,每個算法在不同的子數據集中表現趨于穩定,沒有嚴重的波動情況,這說明了在大規模的數據集中對正樣本多次抽樣并未造成數據分布的較大差異,由數據抽樣而造成的誤差程度較小。
由表3可以看出,對比所有單一的檢測算法,LOF、KNN和PCA在三個評估指標中均表現不佳,HBOS、CBLOF和AutoEncoder表現能力相當且較為出色。原因可能是,KNN和LOF均是基于近鄰的算法,KNN認為異常點的K近鄰距離更大,LOF算法利用K近鄰的距離將異常值建模為鄰域密度相關的函數。而在子數據集訓練前期,SMOTE算法通過線性插值的方式在兩個少數類樣本之間生成新的樣本,這種數據生成方式一定程度上改變了數據集的原始分布,從而導致基于近鄰的思想對異常樣本的敏感性降低。PCA和AutoEncoder均是基于重構誤差來定義數據的異常程度,但是Auto-Encoder在使用非線性激活函數時克服了PCA線性的限制,可以學習到更為復雜的數據投影,因此AutoEncoder相比于PCA具有更加優異的表現。

表3 LSCP與基準算法對比結果Table 3 Comparison results between LSCP and benchmark algorithms
由于在異常檢測領域,與將所有數據點進行單純的二分類相比更在乎排序結果中異常值最高的K個點是不是更異常,所以本文選取Precision@k作為重要的評價指標。由圖所示,從大多子數據集可以看出,Avg-Ensemble雖然在召回率上具有一定優勢,AUC值上也有較好的表現,但是在Precision@k指標上卻處于最低水平。這說明,Avg-Ensemble雖然能將大部分異常交易正確分類,卻不能將它們置于靠前的異常排名中以盡早發現加以處理,其對異常交易的檢測能力有待提升,以達到更加精準、細致的效果。對比融入異構基學習器的LSCP算法和其他算法在三個評價指標中的值可以看出,LSCP算法即使在沒有處于最高水平的情況中也與最高水平相差不大。雖然并不總是優于其他方法,但是整體性能優于其他方法,對異常比特幣交易的檢測具有較好的可靠性和穩定性。為了避免抽樣誤差對實驗結果造成的影響,本文對各算法在20個子數據集中的表現計算平均值以得到最終的檢測效果。各算法在三個評估指標中的平均值如圖3所示。

圖3 LSCP與基準算法綜合效果對比Fig.3 Comprehensive effect of LSCP and benchmark comparison method
由圖3顯示,Avg-Ensemble雖然在召回率上具有出眾水平,但在AUC值上與表現最佳的單一檢測算法HBOS水平相當,且在Precision@k方面表現最差,未能達到理想的檢測效果。融入異構基學習器的LSCP算法對異常交易的總體檢測召回率與Avg-Ensemble相差不大,比單一的檢測算法提升了至少9個百分點。在AUC指標方面,LSCP方法比次優算法HBOS提高了約4個百分點。同時,LSCP方法在Precision@k上比次優算法HBOS提升了約1個百分點。實驗結果表明,LSCP算法對異常比特幣交易檢測的綜合能力比其余基準算法出色,具有良好的泛化性能。這證明,LSCP方法由于在集成系統中考慮了局部性的概念并針對大規模數據多樣的異常類型充分利用異構基學習器對不同異常類型的敏感性,在最終的選擇過程中對不同的交易數據點
動態性選擇表現優異的基學習器,因此解決了不同算法在特定異常類型上的局限性,進一步提升了集成學習的優勢。
本文將LSCP算法應用于比特幣網絡異常交易檢測,并在LSCP算法中融入了近鄰、聚類、深度學習等目前在該領域常用的算法思想,以提升對不同異常類型的敏感程度,達到動態選擇和局部細致的效果。結果表明,本文方法在AUC值、召回率Recall、Precision@k上整體優于基準算法,具有優異的綜合性能,在公安工作中具有重要的實際意義。事實上,本文方法在為數據點確定局部區域的過程中需要較長時間,今后的研究可以考慮優化局部區域定義方法,以加快在大規模比特幣交易數據中的檢測速度。