李夢濤,呂朝輝
(中國傳媒大學(xué)信息工程學(xué)院,北京 100024)
信用卡欺詐數(shù)目的不斷增加帶來了巨大的經(jīng)濟損失。國內(nèi)外各大銀行都在想辦法減少信用卡欺詐帶來的損失。針對這一趨勢,如何準確快速的檢測到信用卡欺詐的風險成為一大研究熱點[1]。就目前而言,信用卡欺詐風險的防范可以從兩個角度去解決,主要是是非技術(shù)手段宏觀調(diào)控和技術(shù)手段的信用卡欺詐檢測。國內(nèi)外非技術(shù)方面防范手段是建立良好的避險,防險,監(jiān)督,管理,補償?shù)刃庞每C制[2]。在技術(shù)手段上時,早期,國外的金融機構(gòu)利用員工的經(jīng)驗去對有可能的欺詐行為進行標記,跟蹤,預(yù)測,這種方法需要耗費大量的人力資源和成本。接著用專家構(gòu)建一個基于規(guī)則的專家系統(tǒng)模型,對信用欺詐進行檢測。這兩種方法都可以在一定程度上檢測出信用卡欺詐,但同時帶有很強的主觀性,得到的結(jié)果不科學(xué),解釋性較差,因此檢測結(jié)果不可信[3]。但隨著信息科學(xué)技術(shù)的不斷發(fā)展,國內(nèi)外學(xué)者開始從數(shù)據(jù)挖掘角度去解決信用卡欺詐這個問題。于是出現(xiàn)了神經(jīng)網(wǎng)絡(luò),決策樹,組合分類器,支持向量機等信用卡欺詐檢測的方法。
Y Sahin等[4]研究出一種新的基于成本敏感決策樹方法,該方法在選擇每個非終端節(jié)點處的分裂屬性時最小化錯誤分類成本的總和,實驗證明這種新的決策樹的欺詐檢測效果較好。潘俊[5]使用以C4.5為基礎(chǔ)的Adaboost與Cost-sensitive算法相結(jié)合的組合分類器模型,實驗表明,在改善信用卡欺詐數(shù)據(jù)非均勻分布問題上,上述方法表現(xiàn)出良好的分類性能。R.Brause,T.Langsdorf,M.赫普[6]展示了如何成功地組合先進的數(shù)據(jù)挖掘技術(shù)和神經(jīng)網(wǎng)絡(luò)算法,以獲得高欺詐覆蓋率和低誤報率。徐永華[7]針對信用卡數(shù)據(jù)的高緯性稀疏性,使用支持向量機的方法,實驗結(jié)果顯示,采用支持向量機的信用卡欺詐檢測精度達到95%以上,且檢測時間只有0.565 秒,說明支持向量機是一種有效的信用卡檢測方法。
大部分的方法對于數(shù)據(jù)量的要求比較高,這些方法的高精確率都是建立在大量數(shù)據(jù)為前提的。其次是有些方法的運用會導(dǎo)致欠學(xué)習(xí),過擬合的現(xiàn)象。接著在面對高緯度稀疏性的樣本時,會存在一些方法的處理效果欠佳。最后最重要的是,很多研究者過多的注重方法或者算法的研究,而忽視了前期數(shù)據(jù)特征預(yù)處理的工作?;谝陨戏椒ㄑ芯砍霈F(xiàn)的一些問題,本文詳細介紹了數(shù)據(jù)挖掘前期預(yù)處理的方法和步驟,采用隨機森林的方法,對預(yù)處理后的數(shù)據(jù)進行建模,預(yù)測,結(jié)果表明該模型在本實驗數(shù)據(jù)上的信用卡欺詐檢測效果更好。
信用卡欺詐檢測本質(zhì)是一個分類問題,那就是將信用卡消費行為,分為有欺詐和無欺詐風險的消費行為。主要流程是將信用卡用戶基本數(shù)據(jù)和消費信息數(shù)據(jù),建立樣本數(shù)據(jù)X。然后根據(jù)銀行信用卡欺詐信息記錄給這些樣本數(shù)據(jù)添加一個標簽Y。即Y=0,該信用卡消費行為是非欺詐的,Y=1,該信用卡消費行為是欺詐的。然后對這些數(shù)據(jù)信息進行數(shù)據(jù)預(yù)處理,數(shù)據(jù)模型構(gòu)建,然后用該模型對持卡人當前消費行為進行分析和處理,從中識別該行為是否是信用卡欺詐交易。
(1)隨機森林算法應(yīng)用前景介紹
隨機森林是利用多棵樹對樣本進行訓(xùn)練并預(yù)測的一種分類器。作為新興起的,高度靈活的一種機器學(xué)習(xí)算法,隨機森林在各種機器學(xué)習(xí)以及數(shù)據(jù)挖掘類比賽上有較好的成績,同時也擁有較好的應(yīng)用場景。隨機森林能夠能夠估計哪個特征在分類中更重要和處理過擬合問題,同時當數(shù)據(jù)集中存在大量的噪音時同樣可以取,并且模型訓(xùn)練速度比較快,能夠估計哪個特征在分類中更重要,最重要的對數(shù)據(jù)集的適應(yīng)能力強:既能處理離散型數(shù)據(jù),也能處理連續(xù)型數(shù)據(jù)[8]。
(2)隨機森林算法原理分析
隨機森林是組合分類方法的一種。組合分類器是將使用的數(shù)據(jù)集D,劃分為D1,D2,...,Dk,然后使用這k個訓(xùn)練集創(chuàng)建K個分類器M1,M2,...,Mk,將這K個分類器組合在一起,意在創(chuàng)建一個改進的復(fù)合分類器模型。給定一個待分類的新的數(shù)據(jù)元組,每個基分類器通過返回類預(yù)測投票。組合分類器基于基分類器的投票返回類預(yù)測。
隨機森林是中每個分類器都是決策樹,這種分類器的集合就叫做“森林”。同時單個決策樹的每個節(jié)點使用隨機選擇的屬性決定劃分,換句話說就是每個樹都是獨立抽樣,并與森林中其它分類器組合,分類時,每棵樹都投票,并且返回得票最多的類。
圖1 隨機森林原理圖
在數(shù)據(jù)挖掘過程中,海量的原始數(shù)據(jù)中存在著大量不完整數(shù)據(jù)(有缺失值),不一致,有異常的數(shù)據(jù),嚴重影響到數(shù)據(jù)挖掘的建模效率和結(jié)果,所以進行數(shù)據(jù)清洗就非常重要,數(shù)據(jù)清洗完成后接著進行或者進行數(shù)據(jù)集成,轉(zhuǎn)換,規(guī)約等一系列操作,該過程就叫做數(shù)據(jù)預(yù)處理。本次實驗數(shù)據(jù)來自UCI機器學(xué)習(xí)數(shù)據(jù)集網(wǎng)站的德國信用數(shù)據(jù),數(shù)據(jù)屬性如表1。
表1 原始數(shù)據(jù)屬性表
(1)數(shù)據(jù)清洗
在實際的樣本數(shù)據(jù)中,樣本可能會由于某些原因,造成一個或多個值的缺失。在表格中缺失值通常是以空值的形式或者是NA(Not A Number)存在的。如果直接忽視這些缺失值或者刪除這些缺失值會導(dǎo)致算法異常和數(shù)據(jù)浪費,這將會影響我們訓(xùn)練出來模型的泛化能力。本次信用卡欺詐數(shù)據(jù)經(jīng)檢測后發(fā)現(xiàn)屬性Saving accounts和Checking account有空值。這里對缺失值的處理辦法是:使用最有可能的值填充。把空值歸于little屬性值。
(2)數(shù)據(jù)變換
數(shù)據(jù)變換主要是對數(shù)據(jù)進行規(guī)范化處理,將數(shù)據(jù)轉(zhuǎn)換成“適當?shù)摹毙问?,以適用于數(shù)據(jù)挖掘任務(wù)及算法的需要。在進行數(shù)據(jù)變換之前,為了使數(shù)據(jù)結(jié)構(gòu)更加清晰,需要對數(shù)據(jù)進行分類。
表2 數(shù)據(jù)分類表
1)針對定類型數(shù)據(jù),采取的數(shù)據(jù)變換是標稱二元化.即
sex:male,female→sex:0,1
Risk:good,risk→Risk:0,1
2)在對定量型數(shù)據(jù)進行數(shù)據(jù)變換前,先進行數(shù)據(jù)探索,分析連續(xù)變量的相關(guān)性。這里采用相關(guān)性分析。其中最直觀的的就是散點圖。
圖2和圖3是都是信用卡發(fā)卡時間和持卡人年齡的散點圖,為了使圖中的變量分布更加清晰,所以改變其中橫軸和縱軸的屬性得到的兩個圖。上面兩圖很明顯可以看出,信用卡發(fā)行時間Duration分布比較均勻。針對以上的數(shù)據(jù)分析,可以對連續(xù)定量型數(shù)據(jù)進行如下數(shù)據(jù)變換。
圖2 信用卡發(fā)卡時間和持卡人年齡的散點圖
圖3 信用卡發(fā)卡時間和持卡人年齡的散點圖
age:(18,25,35,60,100)
↓
age:[’Student’,’Youth’,’Adult’,’Senior’]
duration:(0,12,24,36,48,60,72,84)
↓
duration:[’year1’,’year2’,’year3’,’year4’,’year5’,’year6’,’year7’]
Credit amount:由于Credit amount屬性值很大,不進行數(shù)據(jù)處理會影響數(shù)據(jù)挖掘的結(jié)果,所以為了消除指標之間的量綱和取值范圍差異的影響,需要進行歸一化處理。歸一化處理也叫數(shù)據(jù)規(guī)范化,主要是為了數(shù)據(jù)處理方便提出來的,把數(shù)據(jù)映射到0~1范圍之內(nèi)處理,更加便捷快速,便于進行綜合分析。
3)經(jīng)過之前的幾次數(shù)據(jù)變換,除了sex,Credit amount,risk這三個屬性之外,其它的屬性都是離散的,定序型屬性。通常對這些數(shù)據(jù)要進行特征數(shù)字化。但是普通的數(shù)字特征處理并不能直接放入機器學(xué)習(xí)算法中。所以針對這一現(xiàn)象,本文進行數(shù)據(jù)的獨熱編碼。獨熱編碼,也稱one-hot編碼,主要是采用N位狀態(tài)寄存器來對N個狀態(tài)進行編碼,每個狀態(tài)都由他獨立的寄存器位,并且在任意時候只有一位有效。One-Hot編碼是分類變量作為二進制向量的表示。這首先要求將分類值映射到整數(shù)值。然后,每個整數(shù)值被表示為二進制向量,除了整數(shù)的索引之外,它都是零值,它被標記為1。
(3)數(shù)據(jù)規(guī)約
在經(jīng)過One-hot編碼后,數(shù)據(jù)維度變得很大,同時也有可能出現(xiàn)一些無效,錯誤地數(shù)據(jù)。數(shù)據(jù)規(guī)約產(chǎn)生更小但保持原數(shù)據(jù)完整性的新數(shù)據(jù)集提高建模的準確性,也可以降低存儲數(shù)據(jù)的成本,縮減數(shù)據(jù)挖掘所需的時間。數(shù)據(jù)規(guī)約包括屬性規(guī)約和數(shù)值規(guī)約,針對處理后的數(shù)據(jù),我們采取屬性規(guī)約,主要的方法是主成分分析(pca)。pca是對數(shù)據(jù)高維度特征的一種預(yù)處理方法。它是將高維度的數(shù)據(jù)保留下最重要的一些特征,去除噪聲和不重要的特征,從而實現(xiàn)提升數(shù)據(jù)處理速度的目的。
圖4 信用卡欺詐檢測流程圖
(1)收集帶標記的信用卡消費數(shù)據(jù)
(2)對信用卡數(shù)據(jù)進行預(yù)處理,包括數(shù)據(jù)清洗,數(shù)據(jù)變換,數(shù)據(jù)規(guī)約等,將試驗數(shù)據(jù)變換成算法能識別的數(shù)據(jù)形式。
(3)數(shù)據(jù)劃分:將試驗數(shù)據(jù)劃分為訓(xùn)練集和測試集,經(jīng)試驗證明訓(xùn)練集與測試集占比為1:3效果最好。
(4)利用支持向量機對訓(xùn)練樣本進行學(xué)習(xí),采用sklearn模塊的GridSearchCV確定最優(yōu)參數(shù)從而確定最優(yōu)模型。
(5)采用最優(yōu)檢測模型對信用卡檢測集進行檢測,驗證模型的有效性,并輸出檢測結(jié)果。試驗
本次試驗是在windows條件下的jupyter notebook平臺下進行的。Jupyter基于開放標準,在Web前端使用HTML和CSS的交互式計算,在后端采用可擴展的kernel架構(gòu),內(nèi)部使用WebSocket和ZeroMQ進行通信交互。核心是通過IPython實現(xiàn),由IPython提供終端,IPython內(nèi)核提供的計算和通信的前端界面。
原始數(shù)據(jù)來自UCI機器學(xué)習(xí)數(shù)據(jù)集網(wǎng)站,一共有1000條信用卡數(shù)交易數(shù)據(jù),其中700條正常交易數(shù)據(jù),300條交易欺詐風險數(shù)據(jù)。數(shù)據(jù)預(yù)處理是對這100條信用卡交易原始數(shù)據(jù)進行數(shù)據(jù)清洗,歸一化,離散化,獨熱編碼之后進行數(shù)據(jù)規(guī)約。數(shù)據(jù)預(yù)處理之后的數(shù)據(jù)作為欺詐模型的輸入。
模型參數(shù)的調(diào)節(jié)是數(shù)據(jù)挖掘后期很重要的一個部分,尤其是調(diào)節(jié)網(wǎng)絡(luò)參數(shù),通常待調(diào)節(jié)的參數(shù)有很多,參數(shù)之間的組合更是繁復(fù)。依照注意力>時間>金錢的原則,人力手動調(diào)節(jié)注意力成本太高,非常不值得。For循環(huán)或類似于for循環(huán)的方法受限于太過分明的層次,不夠簡潔與靈活,注意力成本高,易出錯。本文使用sklearn模塊的GridSearchCV模塊,能夠在指定的范圍內(nèi)自動搜索具有不同超參數(shù)的不同模型組合,有效解放注意力。
(1)模型的構(gòu)建
采用隨機森林算法對經(jīng)過預(yù)處理后,并且經(jīng)過劃分好的訓(xùn)練數(shù)據(jù)集進行訓(xùn)練,進而構(gòu)建信用卡欺詐模型。并采用信用卡欺詐模型對測試集數(shù)據(jù)進行檢測,進行測試的同時采用GridSearchCV去自動確定檢測率最高的參數(shù),并返回欺詐檢測結(jié)果。
(2)檢測結(jié)果與分析
在使用隨機森林構(gòu)建的模型進行欺詐檢測之后,同時采用邏輯回歸,支持向量機,XGBoost等對其進行對比檢測。得出如下結(jié)果,結(jié)果如下表3。
表3 算法結(jié)果表
從表3可以看出隨機森林算法得出的精確率的方法是較好的,達到76%,并且它的召回率高達97%,是它們之中最高的。本文開始并沒有給出一個明確的方法,因為目前大多數(shù)學(xué)者給出的方法都是建立在不用的數(shù)據(jù)前提之上的。數(shù)據(jù)量和數(shù)據(jù)維度的差異會對結(jié)果產(chǎn)生很大影響,所以本文從數(shù)據(jù)挖掘這個大的方向出發(fā),把重點放到本次試驗數(shù)據(jù)上,探索性的挖掘數(shù)據(jù)背后的信息,然后對比給出試驗結(jié)果最好的方法。由于信用卡欺詐檢測結(jié)果需要根據(jù)實際信用卡檢測結(jié)果加以驗證,即采用本文方法對信用卡數(shù)據(jù)檢測出可能是欺詐行為后,還必須由銀行機構(gòu)對其進行進一步檢查,才能最終確定本次交易行為是否存在欺詐行為,因此本文的信用卡欺詐檢測方法主要作用是起到預(yù)警作用,提高銀行機構(gòu)對信用卡欺詐行為的效率。
隨著信用卡的不斷發(fā)展,未來肯定還會有各種各樣的信用卡欺詐手段出現(xiàn),本文從數(shù)據(jù)挖掘的角度出發(fā),對信用卡欺詐進行檢測,發(fā)現(xiàn)隨機森林方法是信用卡欺詐檢測的一個好的方法,但是和以往學(xué)者的研究對比,可發(fā)現(xiàn)之前的研究方法得到的結(jié)果并不一定是最好的。所以,針對以后的信用卡欺詐研究,一定要應(yīng)用到實際數(shù)據(jù)中,不能生搬硬套其它研究成果,要從數(shù)據(jù)的角度出發(fā),得出預(yù)實驗數(shù)據(jù)相適應(yīng)的最好方法。