評分卡建模工具之變量聚類

2020-12-05 金融科技實戰

我們是光大科技公司的追光算法實驗室團隊,將不定期推出數據挖掘和算法相關的數據科學原創文章。團隊定位打造基於知識驅動的機器學習算法實驗室,由實踐經驗豐富的數據分析挖掘工程師和專注算法的數據科學家精心準備相關作品,志在分享結合實際業務的理論應用和算法創新,以及其中的心得體會。

文 | 光大科技大數據部 李琨

1 評分卡建模中的變量聚類與變量選擇2 變量聚類VARCLUS模塊使用的聚類算法詳解2.1 cluster component怎麼取?2.2 具體怎麼分群(簇)?2.3 基於計算代價的考量3 沒有SAS VARCLUS時怎麼辦?4 總結

1 評分卡建模中的變量聚類與變量選擇

基於邏輯回歸的評分卡建模是金融業中最常見的建模方案之一,由於良好的業務可解釋性,在風控、運營和營銷等業務場景中都有廣泛應用。

評分卡建模有成熟的一套數據預處理過程。最近看到的這篇總結《從信用管理角度識別高價值客戶》中,變量聚類被突出強調了出來。

文章的作者在在線分享[1] 時,還特別還強調了SAS中變量聚類VARCLUS模塊的實用性。那麼

這一步變量聚類在做什麼?評分卡建模流程中常見的變量選擇和這步什麼關係?具體怎麼實現的?根據SAS/STAT User's Guide[2] 中VARCLUS模塊的說明

The VARCLUS procedure divides a set of numeric variables into either disjoint or hierarchical clusters.

VARCLUS將數值型變量分成互不相交(或有分層)的群(簇)

PROC VARCLUS tries to maximize the sum across clusters of the variance of the original variables that is explained by the cluster components. Either the correlation or the covariance matrix can be analyzed.

VARCLUS試圖最大化由每一個群簇的簇成分解釋的簇中原始變量的方差之和。這個過程由對相應相關係數矩陣或者協方差矩陣的分析實現。

The VARCLUS procedure can be used as a variable-reduction method. A large set of variables can often be replaced by the set of cluster components with little loss of information.

VARCLUS可以用作一種變量壓縮的方法。變量可以用它所在的群簇的簇成分代替,而並只損失少量信息。

VARCLUS的輸出包括

Variation Explained by the cluster component. This statistic is based only on the variables in the cluster rather than on all variables.Total variation explained, the sum across clusters of the variation explained by each cluster還有

R-squared with Own Cluster, the squared correlation of the variable with its own cluster component; and R-squared with Next Closest, the next highestsquared correlation of the variable with a cluster component. Next Closest shouldbe a low value if the clusters are well separated. Ratio, the ratio of one minus the value in the Own Cluster column to one minus the value in the Next Closest column. The occurrence of low ratios indicates well-separated clusters通過這些我們可以知道一下信息

VARCLUS可以將連續性變量分群(簇),每個群簇中有若干元素。建立這樣分群(簇)的依據是以各群簇的簇成分表徵的方差之和最大化。利用這些簇和簇成分可以用來壓縮變量。注意: 後續建模如果需要對模型的可解釋性要求高,壓縮時並不會使用主成分之類的簇成分。而是結合對變量的業務理解和 ratio結果從低到高(和自己所屬的類相關性高,和其他類相關性低),直接從類中選取原始變量作為這類變量的代表,實現變量篩選。這樣選取的變量就滿足可解釋性要求,又可以避免變量相關性給建模帶來的困難。

2 變量聚類VARCLUS模塊使用的聚類算法詳解

2.1 cluster component怎麼取?

下面首先來了解一下這裡涉及的cluster component簇成分是怎麼取的。

This linear combination can be either the first principal component (the default) or the centroid component (if you specify the CENTROID option).

預設使用第一主成分,可選用中心化(質心)成分(通過CENTROID選項設置)主成分是主成分分析(PCA)裡的基本概念。主成分分析是常用變量壓縮方法,主要思想是要求經過中心化後原始變量 (n維,即n列)正交投影到 維空間後的 ( 為 , 且 , 其中 是 維單位陣)的方差最大。主成分分析告訴我們: 的最大的若干個特徵值及其對應的特徵向量可以幫助我們構造這樣的投影。最大特徵值的單位特徵向量對原始變量的線性組合,對應了第一主成分,最大特徵值對應這個成分(能解釋)的方差。

而中心化成分就是用變量的平均,預設分析相關係數矩陣時,使用標準化後的變量的無權重平均;通過COVARIANCE選項設置分析協方差矩陣時,相當於使用原始未做標準的變量的平均。

2.2 具體怎麼分群(簇)?

這是一種自上而下的分群方法,首先把所有變量放入一個群中。然後重複以下步驟:

1. 選取一個群(簇)進行分裂

PROPORTION選項打開的話,選簇成分能解釋的方差佔簇方差比例最低的。MAXEIGEN選項打開的話,選簇的第二主成分對應的特徵值(也就是這個簇的相關係數或協方差矩陣的第二大特徵值)最大的簇。2. 初始化分成2個新群(簇)

預設的方式是根據要分裂的群(簇)的第一和第二主成分,然後用一種正交斜交旋轉orthoblique rotation(用的raw quartimax rotation,具體可參考因子分析Factor Analysis中的因子旋轉,1960年代的方法),最後根據簇中原始變量和旋轉後第一和第二成分的相關係數平方的大小,分成新的兩群(簇)。還有其他初始化方法可選用,比如隨機隨機分配。3. 初始分配後,還會迭代變量,調整分群,嘗試最大化分簇帶來的簇成分對總可解釋方差的提升。一般包括兩個過程:

Nearest component sorting (NCS) phase. 每輪迭代,計算所有群的簇成分,把所有的變量劃入和簇成分的相關係數平方最大的群(簇)。然後不斷迭代,達到一定條件(群簇結構不變)停止。Search phase 就是挨個搜索嘗試,如果改變一個變量到計劃分裂出的其他簇,能否增大新的分群(簇)結構的簇成分能解釋的總方差。每一次考察都要重算兩個矩陣的最大特徵值,這一步的計算代價要大的多。停止這三步的重複迭代的準則是

Every cluster satisfies the stopping criteria specified by the PROPORTION= option (percentage of variation explained) or the MAXEIGEN= option (second eigenvalue) or both.

當然一個群裡只有一個變量時就不能再被分裂了。VARCLUS模塊的預設設置是每個群(簇)只有一個簇第一主成分大於1(相當於MIXEIGEN=1)。另外還可以指定關於群(簇)個數上限的終止條件。顯然MAXEIGEN這種簇第二主成分對應特徵值型的終止條件,必須配合使用主成分作為簇成分時使用,而不能使用中心化成分做簇成分。

這種自上而下的分群算法,如果限制每次分裂時第3步調整必須只能調整到同一個原始群(簇)計劃分出的其他群(簇),這個分群算法的分群就有分層的樹結構。如下圖。

2.3 基於計算代價的考量

顯然分群過程中,每次分裂時最耗時就是第3步調整劃分改變群簇結構。

NCS phase比Search phase快的多,但對於最大化簇成分可解釋總方差這個目標,容易陷入局部最優。

用簇第一主成分做簇成分時,NCS phase是一種交替最小二乘方法,能快速收斂。Search phase會非常耗時,特別當變量數量多的時候。當第2步使用預設的初始化方法(根據和旋轉後簇第一和第二主成分的相關性)時,Search phase對NCS phase的結果沒有明顯提升,可以限制Search phase只進行少量嘗試(預設設置是直接跳過這步)。當第2步使用隨機分配初始化方法,NCS phase很可能會落入局部最優,Search phase能幫助從局部最優出來。用中心化成分時,NCS phase不是一種交替最小二乘方法,並不能保證增加總的簇成分解釋的方差。所以預設設置時,NCS phase中的迭代只進行一次。節約計算代價的主要方式:

限制調整時必須保持層次結構,只考慮原計劃分出的同來源的群簇,顯然可以大大降低搜索空間,節約計算量。限制Search phase的搜索次數3 沒有SAS VARCLUS時怎麼辦?

SAS作為以統計分析起家的有半個世紀歷史的商業智能軟體,無疑是功能強大的。其穩定性和服務的完善性,更是讓其成為金融業,特別是銀行業數據挖掘建模的不二之選。

當然這樣偉大而優秀的商業軟體,對機構來說是有使用成本的。如果沒有SAS,又想用SAS VARCLUS模塊功能怎麼辦呢?

根據SAS USER』S GUIDE的介紹,以及我們對算法的解讀,自己實現一下也是可以的。不過SAS VARCLUS模塊對一般用戶來說還是個黑盒,想做的一模一樣,還是有點難度。

使用python語言的,可以參考一下github的這個項目 variable-clustering[3]https://github.com/jingmin1987/variable-clustering

這個項目的作者實現了用基於第一主成分做簇成分,限制必須保留層次結構的分群方法。分裂一個群簇時的初始化,考察和未做旋轉的前n個主成分相關係數平方大小(和SAS VARCLUS中還加了因子旋轉的方式略有不同),可以一次把一個群簇分成n個。

此工具包提供了分群層次結構的輸出。

沒有直接提供如SAS VARCLUS那樣的輸出,不過根據前面的介紹,自行計算一下即可。

stat_res=[]clus_pca=[]for cluster in demo5.cluster.return_all_leaves(): cluster.run_pca() my_pca=cluster._pca_features[0] clus_pca.append(my_pca)for i,cluster in enumerate(demo5.cluster.return_all_leaves()):for feature in cluster.features: r2_list=[np.corrcoef(cluster.dataframe[feature],cpa)[0,1]**2for cpa in clus_pca] ownr2=r2_list[i] r2_list.pop(i) nr2=max(r2_list) stat_res.append([i,feature,ownr2,nr2,(1-ownr2)/(1-nr2)])stat_res=pd.DataFrame(stat_res,columns=['cluster','feature','R2 with own cluster','R2 with nearest cluster','1-R2 ratio'])print(stat_res)

4 總結

SAS VARCLUS是一種針對數值型變量的無監督變量分群算法,以最大化各群的群簇成分能解釋的總方差為優化目標,以解釋的總方差比例或者每個群簇第二主特徵對應特徵向量的為終止條件。輸出每個變量和本群以及其他群簇成分的相關性信息。SAS VARCLUS採用的算法,計算量隨變量數量的增加,增長較快。當變量較少或者計算時間可接受的情況下,可以使用。如變量特別多(成百上千過萬)的時候,不建議採用,考慮採取其他方法實現變量分群,或者結合其他信息過濾(比如有監督學習建模場景利用結合目標變量信息的過濾)。可以利用分群的結果和輸出,進行變量壓縮(變量選擇)。對變量可解釋性要求高的場景,可以根據 ratio 選取原始變量,同時降低變量相關性對建模的影響。群簇中元素較多時,可以考慮不止一個原始變量。(這種做變量選擇的思路,更多的是依賴分群後相應的統計信息,對分群方法並不特別依賴。)github有開源的python實現variable clustering項目可供參考。參考資料

[1]從信用管理角度識別高價值客戶: https://v.qq.com/x/page/m0940yz6ckx.html

[2]Overview: VARCLUS Procedure: https://documentation.sas.com/?docsetId=statug&docsetTarget=statug_varclus_overview.htm&docsetVersion=15.1&locale=en

[3]variable-clustering: https://github.com/jingmin1987/variable-clustering

相關焦點

  • matlab 實體建模_matlab建模 - CSDN
    此時可採用秩相關(rank correlation),也稱等級相關,來描述兩個變量之間的關聯程度與方向。判定係數判定係數也叫確定係數或可決係數, 是在線性回歸中,回歸平方和與總離差平方和之比值,其數值等於相關係數的平方。 判定係數達到多少為宜,沒有一個統一的明確界限值;若建模的目的是預測因變量值,一般需考慮有較高的判定係數。
  • 淺談數據分析和數據建模
    3、數據科學家過去統計分析依賴於統計分析工具,大數據時代之後,數據量級的提升和數據類型的複雜程度,讓很多傳統的統計分析工具無法完成分析計算。這個時候,數據科學家出現了,他們可以利用自己的專業技能幫助業務專家和數據分析人員進行建模和計算。
  • 數據建模:個人信用分是如何計算出來的?
    筆者相信不同的信用分有不同的計算方法,無論是FICO評分、芝麻信用亦或其它信用分,這些評分既可以很簡單,也可以很複雜,使用的建模方法各不同,但也總是會遵循一些基本的原則,這裡筆者就信用分計算的一些關鍵技術作簡要介紹,希望於你有益。
  • 用機器學習做信用評分
    總體來說主要是兩部分: 建立統計模型 應用統計模型為信用申請或現有信用帳戶打分 本文會介紹最受歡迎的信用評分方法,我們稱為評分卡模型。有兩個原因使其成為主流的方法。首先,評分卡模型很容易跟沒有相關背景和經驗的人(諸如客戶)解釋說明。其次,評分卡模型的開發過程很標準且被廣泛接受,這意味著公司不需要投入太多研發經費。
  • 12款實用的數據挖掘工具
    免費的數據挖掘工具包括從完整的模型開發環境如Knime和Orange,到各種用Java、c++編寫的庫,最常見的是Python。數據挖掘中通常涉及到四種任務:分類:將熟悉的結構概括為新數據的任務聚類:在數據中以某種方式查找組和結構的任務,而不需要在數據中使用已注意的結構。
  • 回歸、分類與聚類:三大方向剖解機器學習算法的優缺點(附Python和R...
    選自EliteDataScience機器之心編譯參與:蔣思源、晏奇在本教程中,作者對現代機器學習算法進行一次簡要的實戰梳理。雖然類似的總結有很多,但是它們都沒有真正解釋清楚每個算法在實踐中的好壞,而這正是本篇梳理希望完成的。因此本文力圖基於實踐中的經驗,討論每個算法的優缺點。而機器之心也在文末給出了這些算法的具體實現細節。
  • 乾貨| 基於 Python 的信用評分模型實戰!|python|離散化|dataframe...
    score card,申請評分卡)、B卡(Behavior score card,行為評分卡)、C卡(Collection score card,催收評分卡)和 F卡(Anti-Fraud Card,反欺詐評分卡),分別應用於貸前、貸中、貸後。
  • 「Workshop」第十期:聚類
    ❞聚類分析的思想:對於有p個變量的數據集來說,每個觀測值都是p維空間中的一個點,所以屬於同一類的點在空間中的距離應該顯著小於屬於不同類的點之間的距離聚類距離測度1.歐氏(Euclidean)距離:2.曼哈頓(Manhattan)
  • 面板數據裡處理多重高維固定效應的神器, 還可用工具變量處理內生性
    現在,我們需要做一個面板數據的回歸,除了學生學習時長外,解釋變量還包括每個學生的個人能力(D1)和學校的校風(D2)。如果我們直接把他們按照i.D1和i.D2這種虛擬變量形式放進去進行回歸,那帶給我們最大的難處是運行時間長且會導致我們的電腦系統崩潰。通俗地講,LSDV模型(Least dummy dependent variable)的回歸會帶來更長的運算時間和系統內存佔用。
  • 多變量預測模型研究的報告指南:TRIPOD聲明
    、預測規則,是通過結合多個預測變量並為每個預測變量分配相應權重來評估風險或概率的一種數學工具。常見的預測模型有Framingham風險評分、Ottawa Ankle Rules、EuroScore、Nottingham Prognostic Index和SAPS等。2.
  • 簡潔詳盡講解文本聚類
    起初,用於單詞和文檔的聚類的大量方法似乎不勝枚舉,讓我們仔細研究其中幾種。本文涵蓋的主題包括k均值,布朗聚類,tf-idf聚類,主題模型和潛在的Dirichlet分配(也稱為LDA)。聚類是數據科學中最大的主題之一,其規模如此之大,以至於你很容易會發現有大量書籍正探討它的每一個細節。文本聚類的子主題也不例外。
  • 六西格工具之卡方(Chi-square)檢驗
    希臘字母X或chi(發音為「kye」,與「eye」押韻)用來代表這一統計量(最後的符合是「平方」,因此稱為「卡方」。卡方檢驗是每個類別預期值和觀察值之間「差的平方」之和。卡方檢驗也是六西格瑪較常用的工具,主要應用於A階段。同T檢驗、方差分析等一樣,在六西格瑪中使用使用的頻率較高。
  • 你需要的最全面的K-means聚類指南
    這就是聚類概念在數據科學中如此重要的原因。聚類有助於我們以獨特的方式理解我們的數據 - 通過將事物分組。在本文中,我們將全面介紹K-means聚類及其擴展。我們將研究聚類,它為什麼重要,它的應用,然後深入研究K-means聚類(包括如何在真實數據集上用Python實現它)。2. 什麼是聚類?讓我們用一個簡單的例子來解決問題。
  • 統計學最常用的「數據分析方法」清單(一)|信度|卡方|施測|統計量|...
    在問卷調查中,態度測量最常見的形式是5級李克特(Likert)量表(李克特量表(Likert scale)是屬評分加總式量表最常用的一種,屬同一構念的這些項目是用加總方式來計分,單獨或個別項目是無意義的。它是由美國社會心理學家李克特於1932年在原有的總加量表基礎上改進而成的。
  • UML建模工具中的五大視圖
    本節和大家一起學習一下UML建模工具方面的知識,本節主要包括面向對象建模概念和UML中的五大視圖等內容,相信通過本節的介紹你對UML建模工具有一定的認識。下面讓我們一起來學習UML建模工具吧。
  • MATLAB數據擬合工具在數學建模中的簡單應用
    3.數學建模接下來看看,如何使用MATLAB的數據擬合工具解決該問題。3.2 數據擬合在區域1中選擇相應坐標軸的變量名,在區域2中選擇擬合的函數模型,在區域3會會自動顯示擬合的圖像,在區域4中會給出擬合後的函數表達式。
  • 數據產品經理之數據分析與挖掘
    前面兩篇文章介紹了數據產品經理日常工作中必備的知識之常用的圖表設計(數據產品經理之圖表設計)和SQL語言(數據產品經理必備之SQL基礎 ),本篇文章講一講怎麼樣通過數據分析與挖掘從數據中獲取信息和發掘價值。
  • 統計建模的理論和方法
    成功的統計建模可以儘可能完整的模擬出數據生成過程中變量的隨機性,進而幫助人們有效的估計該過程的核心參數值,並作出針對核心參數值的概率性決策。什麼是統計模型?潛在變量貝葉斯模型的一個經典的例子是 高斯混合模型(Gaussian Mixture Model / GMM) ,其也是無監督統計學習(unsupervised statistical learning)和貝葉斯聚類(
  • 譜聚類(spectral clustering)原理總結
    1.3 譜聚類基礎之二:相似矩陣 在上一節我們講到了鄰接矩陣W,它是由任意兩點之間的權重值  1.4 譜聚類基礎之三:拉普拉斯矩陣 單獨把拉普拉斯矩陣(Graph Laplacians)拿出來介紹是因為後面的算法和這個矩陣的性質息息相關。它的定義很簡單,拉普拉斯矩陣L=D−W。D即為我們第二節講的度矩陣,它是一個對角矩陣。而W即為我們第二節講的鄰接矩陣,它可以由我們第三節的方法構建出。拉普拉斯矩陣有一些很好的性質如下: