基於SVDD算法的半監督風控模型

關注並標星索信達

每天打卡閱讀

更快走進金融人工智能世界

━━━━━━

基於SVDD算法的半監督風控模型

我們是索信達控股旗下的金融人工智能實驗室團隊,微信公眾號(datamargin)將不定期推送原創AI科學文章。我們的作品都是由實戰經驗豐富的AI科學技術人員或資深顧問精心準備,志在分享結合實際業務的理論應用和心得體會。


文 | 索 信 達

導讀:

本文主要是介紹一種半監督算法——SVDD:該算法是傳統SVM的一種擴展,能用於異常值(奇異值)檢測和極度不平衡數據的分類問題。該算法根據樣本中有標記的這類樣本的特性構建一個球面作為決策邊界,使用該球面來判斷剩下無標記樣本的屬性,無標記樣本能落在球內則判斷為正樣本,否則為負樣本。在金融風控領域,我們常常遇到一類樣本有標記,另一類樣本無標記的數據,我們可以通過有標記樣本來構建該模型,再使用該模型來識別剩下的無標記樣本是否有風險。

一、引言

SVDD(Support Vector Domain Description,支持向量域描述算法)是基於傳統SVM的一種半監督算法。SVDD會根據樣本中有標記的這類樣本構建一個球面作為決策邊界,球面邊界上的點稱為支持向量。我們可以計算那些沒有標記的樣本與球心的距離,若距離小於球的半徑,即該無標記樣本落在球內,則該樣本與有標記的樣本屬於同一類;否則不是同一類。該算法適用於異常值(奇異值)檢測和極度不平衡數據的分類問題。

嚴格來說,SVDD適用於奇異值(novelty)檢測,而非異常值(outlier)檢測。這裡使用sklearn官網上的定義來區分奇異值和異常值:

  • 異常值檢測:訓練數據中含有離群點,我們希望通過算法找到訓練數據最集中的區域,忽略偏差觀測值。
  • 奇異值檢測:訓練數據中沒有離群點,我們的目標是用訓練好的模型去檢測一個新的觀測值是否異常。在這種情況下,離群點也稱為奇異點。

簡單理解就是,訓練模型時所用的數據中可以包括異常值,這屬於異常值檢測,適用的模型往往是無監督的,如iForest和KNN;訓練模型時所用的數據中不能包括異常值,這屬於奇異值檢測,適用的模型往往是半監督的,如SVDD和OCSVM。

在金融業的風控領域,我們常常遇到一類樣本有標記,另一類樣本無標記的數據,即我們能確定某些樣本有風險(或者沒有風險),而不能確定剩餘樣本是否有風險。在這樣的業務場景中,我們可以通過有標記樣本(標記為有風險的樣本或沒有風險的樣本)來構建SVDD模型,再使用該模型來識別剩下的無標記樣本是否有風險,即僅通過有標記的樣本數據建立SVDD模型來識別其它樣本是否有風險。SVDD這種能進行奇異值檢測和處理極度不平衡數據分類問題的半監督模型非常適用於金融風控的領域。

二、理論知識

1.模型推導

對於一個包含N個樣本的數據集,SVDD致力於找到一個能包含所有正樣本的最小球面,設球面半徑為R,球心為a。對於極少部分離球心較遠的正樣本而言,如果我們建立的球面想把這部分距離很遠的正樣本也包含進來的話,那半徑勢必會很大,這個半徑很大的球並不能很好的代表正樣本數據的的特性。所以我們這裡引入SVM軟間隔中鬆弛變量的知識:即在建立分隔平面的時候,允許一些正樣本分錯,這些正樣本到球心的距離可以超過R。假設有n個樣本,從而我們尋找的最小球面可以描述為:

基於SVDD算法的半監督風控模型

是鬆弛變量,不同樣本對應的的取值是不一樣的,允許分錯的正樣本對應的,此時;分類正確的正樣本對應的,此時。C為懲罰參數,當距離很遠的點對應的鬆弛變量之和固定時,C增大表示對錯分的懲罰增加,此時我們更加重視錯分的損失,不願意放棄這些距離遠的點,算法會偏向於尋找包含更多樣本點的球;反之,C減小表示對錯分的懲罰減少。我們的目標是要找一個半徑儘可能小而錯分的點也儘可能少的球面。

  樣本點到球心的距離將滿足如下約束:

基於SVDD算法的半監督風控模型

SVDD要做的事就是在約束條件(2)下尋找最小的(1)。從而我們可以構造如下拉格朗日函數:

基於SVDD算法的半監督風控模型

其中,和是拉格朗日乘子。此時我們希望最小化L,L分別對R、、求偏導,且偏導為0,於是有:

基於SVDD算法的半監督風控模型

將(4)代入(3)消去,並引入SVM中核函數的知識,可以將(3)化簡為:

基於SVDD算法的半監督風控模型

此時我們希望最大化L。表示原本的核函數,SVDD的作者在論文中根據模擬實驗的結果,建議使用高斯核函數,高斯核函數的公式為:

基於SVDD算法的半監督風控模型

對於沒有標記的樣本(設為z)而言,它們與球心的距離為:

基於SVDD算法的半監督風控模型

將代入(7),並引入核函數的知識,我們有:

基於SVDD算法的半監督風控模型

當時,該樣本落在球外,屬於負樣本;當時,該樣本落在球內,屬於正樣本。

2.細節討論(選讀)

SVDD中的C是一個非常重要的參數,我們這裡對C再做一些思考(SVDD的基本原理上一部分已經介紹完了,這部分是一些細節思考,不感興趣的小夥伴可以跳過,直接看下一部分)。根據KKT條件(周志華老師的《機器學習》附錄B有KKT條件的介紹和相關推導證明,這裡不做KKT條件原理的細說),我們有:

基於SVDD算法的半監督風控模型

且根據(4)和(5),我們有:

基於SVDD算法的半監督風控模型

根據(9)、(10)、(11)和(12),我們有:

  • 當時,,,則,對應的樣本點落在球內。
  • 當時,,,則。且在(10)中,,從而,對應個樣本點正好落在球面上,我們稱落在球面上的樣本為支持向量。
  • 當時,在(10)中,,從而,對應的樣本點到球心的距離超過了R,該點落在球外。

所以,C的作用除了作為懲罰參數外,它還給定了的上界並且限制了支持向量在SVDD的描述規則上的影響。

三、應用分析

在應用SVDD算法時,非常重要的一點就是,SVDD對異常點非常敏感,訓練模型時用到的樣本中只能包含同一類樣本。因為如果訓練模型時用到另一類的樣本,那訓練出來的SVDD球面也將會匹配另一類樣本的特點,這樣訓練出來的SVDD球面將包含兩類樣本的特點,那麼該球面就難以精確判斷剩下的樣本應落在球內還是球外。下面我們結合金融風控領域的業務場景和數據特點,對該算法在異常值檢測和極度不平衡數據分類問題的處理思路上做一些介紹。

1.異常值(奇異值 )檢測

其實,異常值檢測也是金融風控領域的一類很有用的算法,由於有風險的樣本一般在所有樣本中佔比很少,它們在一些指標上也往往不同於正常樣本,我們可以將有風險的樣本視作異常點,從異常值檢測的角度來識別這些有風險的樣本。使用SVDD進行異常值(奇異值)檢測時,通常我們將確定沒有風險的樣本用於訓練模型,構造球面作為決策邊界,再用訓練出來的模型識別剩餘的點是否落在球內:落在球內的點認為不是異常點,對應的樣本沒有風險;落在球外的點是異常點,對應的樣本有風險。

2.極度不平衡數據的分類問題

對於極度不平衡的數據,很難直接建立一個精度高的二分類模型,這時我們可以轉變思路,從異常值檢測的角度入手,將極度不平衡數據中的那小部分數據視作異常值,用剩餘的大部分數據訓練一個SVDD超球面作為決策邊界,從而將極度不平衡數據的分類問題轉變為SVDD中的異常點檢測問題。在金融風控領域,有風險的樣本很少,大部分樣本沒有風險,我們可以將有風險的樣本視作異常值,從異常值檢測的角度建立金融風控的SVDD模型,從而使用SVDD算法解決極度不均衡數據的分類問題。

目前python的libsvm庫和slearnk庫中都已包含了該算法,可以直接調用。

[1] Aggarwal, Charu C. Outlier Analysis, 2nd ed[M]. Berlin, Germany:Springer. 2016.

[2] Tax D M J , Duin R P W . Support vector domain description[J]. Pattern Recognition Letters, 1999, 20(11-13):1191-1199.

[3] Schölkopf B , Platt J C , Shawe-Taylor J , et al. Estimating the Support of a High-Dimensional Distribution[J]. Neural Computation, 2001, 13(7):1443-1471.

[4] 周志華.機器學習[M]北京:清華大學出版社,2016


分享到:


相關文章: