[摘要] 商業銀行面對眾多的客戶時,需要識別其中的異常客戶,以規避其風險。本文介紹了發現異常數據的四種孤立點檢測方法,并提出了基于距離的k-medoids聚類算法與遺傳算法結合的孤立點挖掘算法。最后應用該算法分析信用數據集,挖掘其中的異常數據,識別異??蛻?。
[ 關鍵詞 ] 異常客戶 孤立點檢測 k-medoids算法 遺傳算法
國內大多數商業銀行都已擁有自己的數據集中業務平臺,數據集中以后,商業銀行建立了龐大的數據倉庫,實施了對經營信息、客戶數據的有效存儲,緊接著商業銀行就迫切需要從這些海量的數據當中挖掘出高價值的信息資源,從而精確的把握商業競爭、客戶動態等實時信息,以便實施具有針對性戰略。面對數量龐大的銀行客戶,如何應對隨之帶來的風險,成為商業銀行客戶關系管理必須面對的一個問題。因此,本文將異??蛻魴z測(Exceptional Client Distinguish,ECD)作為研究對象,利用數據挖掘的思想和方法,對異??蛻舻娘L險進行預警。
一、異??蛻魴z測
客戶關系管理即為吸引并保持有經濟價值的客戶,驅逐并消除缺乏經濟價值的客戶。識別異??蛻?,一方面可有效地驅逐和消除風險,另一方面可以避免將正??蛻粽`判為異常客戶,吸引并保持有經濟價值潛力的客戶。
目前,異??蛻魴z測技術主要還是基于數據特征匹配的方法。目前存在兩個缺點。首先,總結異??蛻籼卣髦饕繉<沂止ね瓿?,耗費人力物力;其次,所需時間較長,錯過最佳挽留時機,異常客戶造成的危害就無法減少。
異常客戶反映在數據上,就是異常數據。Hawkins給出了異常的本質性定義:異常是在數據集中與眾不同的數據,使人懷疑這些數據并非隨機偏差,而是產生于完全不同的機制;Knor和Ng給出了基于距離的異常定義:數據集S中的一個對象O,如果它滿足下列性質:數據集S中至少有p*100%的對象與O的距離大于距離D,則對象O稱為DB(p,D) - 異常 。
二、孤立點檢測
發現異常數據,孤立點檢測是個行之有效的方法。孤立點(outlier)是數據集中的小部分數據對象,這一小部分對
象和數據中的一般行為或數據模型有著明顯的不同。孤立點挖掘分為兩個子問題:在給定的數據集中定義什么數據可以認為是不一致的;找到一個有效的方法來挖掘孤立點。
孤立點在某種尺度下與其他點不同或不一致。孤立點可能是由于度量或執行錯誤導致的。許多數據挖掘算法試圖使孤立點的影響最小化,或者排除它們。然而,一個人的噪聲可能是另一個人的信號。這樣的點通常包含了一些重要的隱藏信息。例如,在欺詐探測中,孤立點可能預示著欺詐行為。
目前孤立點挖掘算法主要有四種:統計學方法、基于距離、基于偏離和基于密度的方法。
基于統計的方法主要應用于科研計算,這主要是因為這種方法必須事先知道數據的分布特征,
從Knorr和Ng開始開始研究采用無需任何參數的方法,并提出使用數據點到其最近鄰居的距離和的方法作為異常的量度標準。雖然距離是一種發現孤立點的有效的無參數方法,但需要耗費時間來計算距離。
A.Arning和P.Raghavan提出了基于偏離的孤立點探測的線性方法,但基于偏離的方法中的序列異常的概念并沒有得到普遍的認同。這是因為序列異常在概念上仍然有一定的缺陷,遺漏了不少的異常數據。
基于密度的方法只關注對象周圍臨近的密度(最近鄰居數)。關于它周圍的鄰居具有高密度鄰居的數據點不是孤立點,具有低密度鄰居的數據對象可能是孤立點。
上文中介紹了當前各種孤立點檢測算法面臨的種種缺陷,并對其進行了比較,發現基于距離的孤立點檢測方法在許多方面都優于其他方法,在思路上也是正確的?;诰嚯x的方法與基于統計的方法相比,不需要用戶擁有任何領域知識。與“序列異?!毕啾龋诟拍钌细又庇^。
三、基于距離的k-medoids聚類算法與遺傳算法
本文將基于距離的k-medoids聚類算法與遺傳算法相結合,既可以很好地解決局部最優的問題,也可以很好地解決孤立點的問題,還可以加快遺傳算法的收斂速度,節約時間成本。
k-medoids算法與k均值算法相似,但與k均值不同的是k-medoids算法不采用均值作為聚類中心,而是采用數據集中任意一個數據作為聚類中心,因此,可以很好地解決k均值對孤立點敏感的問題,極大地提高聚類的精度。但該方法同樣受初始值影響很大,通常不能得到全局最優解。
遺傳算法是一種建立在自然選擇原理和自然遺傳機制上的迭代式自適應概率性搜索方法,具有魯棒性強、需要的領域知識少等優點,用于孤立點檢測理論上是可行的。
本文提出的基于k-medoids算法和遺傳算法結合的孤立點檢測算法,繼承了遺傳算法的優點,在一定程度上克服了現有算法的弱點和不足。隨機產生遺傳算法的第一代并開始選擇,然后在每代進化中,都用k-medoids算法對每個被選擇的個體進行進一步的優化。也就是說,在每一代都要對所有被選中的個體計算以其為初始值的k-medoids算法的局部最優結果,并以這些局部最優結果替換掉原來的個體并繼續進化,直到達到最大代數或者結果符合要求為止。
該算法的步驟將在以下部分詳細介紹。
1.對個體進行編碼和初始種群的生成
本文采用實數編碼。染色體中實數的數量代表需要聚類的數量。初始種群采用隨機函數生成,形成一個初始種群矩陣,其中每一行代表一個個體,每一行中的每個元素代表一個聚類中心。矩陣的行數代表種群中個體的數目,列數代表需要聚類的數目。
2.適應度函數的確定
本文采用均方差作為適應度函數,定義如下:

其中, E為所有數據對象與相應聚類中心的均方差之和,p為代表對象空間中的一個點,為聚類的中心對象,n為中點的個數。
3.選擇算子的實現
遺傳算法使用選擇運算(或稱復制運算)來實現對群體中的個體進行優勝劣汰操作。本文采用錦標賽選擇法。
4.用k-medoids算法進行優化
用k-medoids算法對選擇出來的個體進行優化,并用優化后的個體代替原來的個體。用k-medoids算法進行聚類一般只能得到局部最優解,但用其優化后的個體來代替原來的個體便可大大加速遺傳算法的收斂速度,節約時間成本。
5.交叉算子的實現
交叉運算是產生新個體的主要方法。交叉率一般取值0.4 - 0.9。單點交叉中,交叉點的范圍為[ 1, Nvar-1] ,Nvar為個體變量數目,以該交叉點為分界相互交換變量。
6.變異算子的實現
遺傳算法中的變異運算是產生新個體的輔助方法,它是必不可少的一個運算步驟。變異率一般取值0. 001- 0. 1。
四、實驗分析
本文的數據來自美國加州大學Irvine分校的機器學習庫(the UCI Irvine Machine Learning Repository),選擇德國信用數據集為研究對象,該數據集包含20個屬性,本研究截取前100條數據,采用k均值算法、k-medoids算法和本文研究的新算法分別對數據集進行了聚類分析,實驗結果見表1 (本結果只顯示包含孤立點的類,其中的數字代表數據對象的序號)。

從表可以看出,在聚類時k均值算法無法把孤立點分離出來,而k-medoids算法和本文所研究的算法都可以把孤立點分離出來。從衡量聚類效果的重要指標均方差值的大小來看,在存在孤立點的時候, k-medoids算法比k均值算法要好,而新算法顯然優于前面兩個算法。
五、結論
本文比較了四種孤立點檢測方法,通過分析發現基于距離的孤立點檢測方法在許多方面都優于其他方法,在思路上也是正確的?;诰嚯x的k-medoids算法可有效檢測孤立點,但容易陷入局部最優。將k-medoids算法與遺傳算法相結合,既可以很好地解決局部最優的問題,也可以很好地解決孤立點的問題,還可以加快遺傳算法的收斂速度,節約時間成本。應用該算法可以有效地檢測孤立點,即商業銀行的異??蛻?,對風險進行有效地預警。
參考文獻:
[1]Hawkins DM.Identification of Out1iers.Chapman and Hal1.London.1980
[2]蒙肖蓮,商業銀行客戶識別與保持模型研究.博士論文,華中科技大學,2005
[3]褚法政,基于數據挖掘的銀行客戶關系管理.碩士論文,青島大學,2004