如何做一個合格數據評估員(完整版,上)

如何做一個合格數據評估員(完整版,上)

來自專欄風險模型淺談6 人贊了文章

本篇文章主要是將前面的文章進行匯總,方便大家閱讀,不過本文超長,慎入。

本文我們討論的就是:

如何評價一個欄位,一個特徵,一個數據源,一個模型的有效性。

這個問題比建模本身要簡單一點,所以受眾應該會廣一點,因為畢竟用模型的人,比做模型的人還是要多不少的。而這個問題又不像大家想的那麼簡單,因為這個問題主要是分兩部分的:

  • 如何在數學上評價兩個變數的關係;
  • 當其中一個變數是我們定義好的因變數,那個這個關係要近到什麼程度,才能夠產生經濟效益。

本篇其實是之前一個朋友的問題,就是如何評估第三方數據的價值,答應了很久,直到現在才開始寫實在是心裡有愧啊。而且,如有遺留歡迎大家補充,眾人拾柴火焰高啊!


Bivariate Analysis

在我們的第六篇 「你真的懂均值么?」一文中,我們主要討論的是單一變數、特徵的分析,我們管它叫做univaiate analysis,俗稱單身狗分析,畢竟只有一個人,相對來說簡單一點。今天我們這個話題是bivariate analysis,意思是二元變數分析,就是來討論兩個變數相互關係,這兩個變數,可以是一個因變數,一個自變數(特徵,評分等等),也可以是兩個自變數。我們後面也會分開討論。另外,為了把本篇的立意提高一個檔次,我可以這樣說:

  • univaiate analysis是bivariate analysis的基礎;
  • bivariate analysis是所有learing的基礎。

這裡learning是可以是supervised learning、unsupervised learning、semi-supervised learning、deep learning、enhancementlearning等等。

做過模型的或用過模型的都知道,風險模型其實就是一種典型的supervised learning。

supervised learning(百度百科)

是一個機器學習中的技巧,可以由訓練資料中學到或建立一個模式(函數 / learning model),並依此模式推測新的instances。訓練資料是由輸入物件(通常是向量)和預期輸出所組成。函數的輸出可以是一個連續的值(稱為回歸分析),或是預測一個分類標籤(稱作分類)。

用大白話說就是,那種有明確目標的學習,比如就是要學到什麼樣的客戶是壞客戶、就是想先實現一個億的小目標、就是想打通關;與之相對的就unsupervised learning,也是是我漫無目標的學,因為我也不知道我要什麼樣的,就想現在好多人談戀愛,最早也不知道自己喜歡什麼樣的,那隻好見一個愛一個,慢慢的才能把自己的口味試出來,畢竟每個人的口味都是不一樣的,你喜歡大波浪,他喜歡大波浪的。

那肯定有人問了,這種漫無目標的嘗試和學習,有什麼意義呢?會不會反倒是資源的浪費?其實不是的,不管是社會、某個行業、亦或者是某種語言,保持多樣性是非常重要,放棄多樣性就意味著放棄可能性。回到我們的話題,我之前提到風險模型其實就是一種典型的supervised learning,這句話其實不完全對,因為在建立風險模型的過程中,有一個關鍵的步驟叫做「特徵工程characteristic engineering」,狹義的特徵工程也叫做特徵提取,就是找到那些可能作為模型自變數的這個步驟,這個步驟其實就是unsupervised learning,最理想的就是窮盡各種可能性來代表用戶某一方面的特徵。

在上一篇(那些可以度量的風險)中,我們介紹因變數(不僅僅是風險因變數)可能出現的四種類型:

  • 連續型變數(continuous variable)
  • 序數型變數(ordinal variable)
  • 二元型變數(binary variable)
  • 無序列表型變數(nominal variable),(終於想出了一個合適的名字!)

同因變數一樣,我們在這個領域中遇到的幾乎所有(again,還是這麼嚴謹)二元分析能夠遇到的變數也都是屬於上述四種類型,我們後面會分別討論這四種變數在做二元分析時的這10對兩兩關係一般都是如何處理的。

變數和特徵

在繼續講解之前,要明確一個概念,我們通常說的變數,特徵,它們到底是什麼。

先來說變數,從字面意思上看,變數就是一個可以變化數值的量化指標,比如所有申請人的年齡。因為每個申請人的年齡有各種各樣的可能性,那麼這個變數就實際上是「隨機變數」。隨機變數是一個統計學中的概念,指是我們把現實中一件事可能發生的結果和實數的集合做了一個1-1的對應關係,恩,你沒看錯,專業人士中的變數,本質上是一個函數或一個關係,而不是一個數。舉個例子,性別是男女,這不叫變數,你把男女映射成1/0,才是變數。

這裡要引入另外一個概念,「事件」。前面我們也提到了,除了像年齡,性別這樣的屬性,其他大部分的用戶行為都是是一個事件,如某年某月我借了一筆錢,某天我給120打了電話,某天我上了一個賭博網站。但在風險模型和規則中,一般是不會直接使用這些事件作為變數和特徵的。用數學的語言來描述的話,就是在風險模型和規則中可以使用的變數和特徵,是所有用戶事件集合的σ代數(σ-algebra)

在數學中,某個集合X上的σ代數(σ-algebra)又叫σ域(σ-field),是X的所有子集的集合(也就是冪集)的一個子集。這個子集滿足對於可數個集合的並集運算和補集運算的封閉性(因此對於交集運算也是封閉的)。σ代數可以用來嚴格地定義所謂的「可測集」,是測度論的基礎概念之一。(百度百科)

用直白的語言來描述,就是窮盡所有的事件組合,所構成的集合才是最完美的特徵集合。正如我們在第六章中所說,在絕大多數金融場景中,原始的客戶事件數據都是存儲在一個帶時間標記的二維表中,這種數據我們稱其為面板數據(panel data),在一般情況下我們得到的特徵集合,其實都是基本事件的σ代數的子集。同時,在將面板數據(panel data)轉化為可供模型使用的寬表(flat file/flat data)的過程,我們稱為特徵提取。


二元分析的主要目的

二元分析根據分析對象不同可能會有如下目的

  • 因變數-自變數:這裡的自變數可以是一個特徵,或是一個評分,既可以來自於內部,也可能是一個外部的數據源,由於因變數的存在,此時我們既可以用同一套指標和標準來評估不同的自變數,來給出自變數顯著性的排序;也可以用不用的指標,來研究同一對變數之間關係。
  • 自變數-自變數:這種分析即會應用在建模的流程中,來進行降維或診斷模型的有效性;也可以用來分析不同數據的重疊度,主要應用在外部數據評估和模型部署的場景下。

離散化

(百度百科)

離散化,把無限空間中有限的個體映射到有限的空間中去,以此提高演算法的時空效率。

通俗的說,離散化是在不改變數據相對大小的條件下,對數據進行相應的縮小。例如:

原數據:1,999,100000,15;處理後:1,3,4,2;

原數據:{100,200},{20,50000},{1,400};

處理後:{3,4},{2,6},{1,5};

離散化,就是我們前文提到的變數分組,我感覺那個百度百科的例子不是特別貼切;通常我們的離散化,就是通過分區間的手段,把連續型變數,變為序數型變數。比如,我們把精確的逾期天數,劃分成M1,M2,M3等;把一天24小時分為凌晨,上午,下午,夜間等等。像小時,分鐘,月份,星期幾這種變數,看似它和實際的連續型變數差不多,但跟正常的連續型變數有一個很大的區別,這種變數的值是頭尾相接的,比如,周日後面是周一,而不是周八,12月後面是1月而不是13月。這類特殊的連續型變數在統計學中稱為Circular distribution,是有著特殊的處理方法的,我們在一些特定的場景下需要注意。

虛擬化

虛擬化,是指通過虛擬化技術將一台計算機虛擬為多台邏輯計算機。在一台計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。虛擬化使用軟體的方法重新定義劃分IT資源,可以實現IT資源的動態分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。

啊,不好意思,串道了。我們們虛擬化,跟計算機里的虛擬化,完全不是一回事。我們這裡的虛擬化,指的是把連續型或序數型或無序列表型變數轉化為二元變數的過程,這類二元變數有個特定名稱,叫做虛擬變數(dummy variable)。比如說,我們把逾期表現定義為,M2+和else;把星期幾變成weekday和weekend等等。

虛擬化和離散化的主要作用就是將連續型的隨機變數轉變為離散的變數,使得連續型的隨機變數能夠使用那些針對離散型變數的評估方法,另外在做一些傳統的線性回歸或邏輯回歸時,通過虛擬化和離散化能夠捕捉到一些非線性的相關關係,不過這個是後話,在講到模型的時候會再進行詳細講解。


連續型變數的二元相關關係

連續型變數的二元相關關係其實在整個的分析過程中,基本屬於不被重視經常被忽略的,主要原因就是在風險模型中大概95%的模型都是二元的因變數。但連續型變數的二元相關關係,發揮的通常都是基礎性的作用,所以呢,我把它放在了第一個介紹。

通常情況下,如果兩個連續型變數的可以被認定為是有關係的,那麼應該會滿足下面四種相關關係中的一種,分別是:

  • 線性相關
  • 依分布線性相關
  • 秩相關
  • 其他非線性相關

需要注意的是,這裡的四種關係的相關性是逐漸減弱的(相對),而且完全是我自己總結的,甚至連其中兩種相關關係的名字都是我現編的,難免有不嚴謹的地方,因此接受討論,不接受批評,u can u up。

線性相關

線性相關是我認為最強的相關關係,也就兩個變數線性相關的程度。常用的評估線性相關關係的方法有如下三種,

相關係數

相關係數我們在第三篇抖機靈的時候已經提到了,它的的定義如下:

相關係數是最早由統計學家卡爾·皮爾遜設計的統計指標,是研究變數之間線性相關程度的量,一般用字母 r 表示。由於研究對象的不同,相關係數有多種定義方式,較為常用的是皮爾遜相關係數。

相關關係是一種非確定性的關係,相關係數是研究變數之間線性相關程度的量。由於研究對象的不同,相關係數有如下幾種定義方式。

簡單相關係數:又叫相關係數或線性相關係數,一般用字母r 表示,用來度量兩個變數間的線性關係。

(百度百科)

相關係數的主要應用場景是在做一般線性回歸或邏輯回歸時,診斷自變數之間的多重共線性,在進行變數篩選時應用較少,主要原因是,線性相關是一直比較嚴格相關關係,用它來做標準會誤殺很多變數。

多重共線性(multi-collinearity)很多受到過比較嚴格模型訓練的同學都知道在做一般線性回歸或邏輯回歸時都要做多重共線性診斷,但很少有人會去思考為什麼,可能只是當年在公司帶你的那個人say so。這個事情其實挺滑稽的,當年老羅語錄中有個段子叫傳統論,我覺得放在這裡特別應景:把五隻猴子放進一個大籠子里,在籠子外猴子們觸手可及的地方放了一個香蕉。猴子們看到香蕉,自然都想去拿。但是,每當有一隻猴子伸手去夠香蕉時,生物學家們就對五隻猴子全部加以電擊,以示懲罰。反覆數次後,猴子們都老實了,誰都不去碰那個香蕉。因為任何一隻猴子試圖去碰香蕉,五隻猴子都會遭殃被電。生物學家們看到猴子們都老實了,於是從籠子里拿走一隻猴子,再放進一隻新猴子,姑且稱之為新猴A,新猴A發現香蕉,馬上伸手去拿。生物學家們這次沒有電擊,但沒成想,還沒等新猴A拿到香蕉,四隻老猴子馬上對新猴A拳打腳踢,阻止新猴A去碰香蕉。新猴A不甘心,過了一會兒,又試圖去拿香蕉,結果又挨了四隻老猴一頓胖揍。終於,新猴A老實了。?這時,生物學家們再從籠子中取走一隻老猴,放入一隻新猴B。新猴B看到香蕉,也想去拿。結果被三隻老猴和新猴A一頓揍。這次,打的最起勁兒,就是新猴A。(這就叫老兵欺負新兵)幾次反覆後,新猴B也老實了,不去碰那個香蕉了。?依次輪替,生物學家們最後把所有五隻老猴都取走了,籠子里是從新猴A到新猴E的五隻新猴。?奇蹟發生了,沒有電擊,但是五隻新猴都不去碰那個香蕉,因為它們知道,碰香蕉會被別的猴子打。但至於為什麼會被打,它們誰也不知道。?於是,一個新傳統形成了——香蕉是不能碰的!但為什麼不能碰?沒有猴子知道。其實,多重共線性是在做線性回歸診斷的時候發明出來的一個名詞,指的是自變數之間有比較強的線性相關關係。對於每一種數學模型,比如線性回歸、邏輯回顧等,其實都是有兩個要素的(這個本來是後面的內容,這裡先提一句),分別是函數形式(functional form)和參數擬合(或叫參數估計parameterestimator),對一般線性回歸來說,它的這兩個要素分別是線性的函數形式和最小二乘估計。有理論推導可以證明,多重共線性會導致最小二乘估計擬合出來的參數的方差偏大,說人話就是多重共線性會導致最小二乘估計這個方法失效,這其實這是做多重共線性診斷的根本原因。話說回來,對於邏輯回歸來說,它所使用的這個參數擬合方法叫做極大似然估計,也有可能是我孤陋寡聞,一直沒看到多重共線性導致極大似然估計失效的相關文獻,所以其實都是經驗結論,如果有哪位同學有請一定發給我。

R平方(R-square)

R方是典型的用模型指標來進行變數相關性評估的方法之一,跟這個類似還有用LASSO或隨機森林給出在一對多的變數評估時,給出變數的相關性。

以R-square為例,此類方案的原理就是將兩個(或多個)中的某一個作為因變數,剩餘的作為自變數,訓練一個模型,用衡量模型的指標來做為衡量變數之間相關關係的指標。

在統計學中對變數進行線行回歸分析,採用最小二乘法進行參數估計時,R平方為回歸平方和與總離差平方和的比值,表示總離差平方和中可以由回歸平方和解釋的比例,這一比例越大越好,模型越精確,回歸效果越顯著。R平方介於0~1之間,越接近1,回歸擬合效果越好,一般認為超過0.8的模型擬合優度比較高。

(百度百科)

由於R-square取值0~1,而且在最完美的時候是1,在經濟統計中,R-square

經常被用作衡量「貢獻度」或「解釋程度」,比如,用過去30的第三產業產值去回歸過去30年的GDP,我們就知道第三產業對於國民生產總值的貢獻了。

抽樣散點圖

用散點圖將兩個變數點在一個XY的坐標系中,是最直觀的反應相關關係的手段,但由於我們都號稱自己是做大數據的,數據特別多,所以只好做抽樣了,否則圖上就全是點,沒法看了。

(百度百科)

秩相關

秩相關在很多情況下可能大家接觸的比較少,秩相關的從直觀來理解就是是兩個連續型變數的對於樣本分別進行排序,排序的結果可能差不多。後面我們講的依分布相關其實是秩相關的一種特殊情況。

在大多數金融業務的場景下,我們想知道的其實就是秩相關。常見的秩相關的例子並不出現在兩個連續型隨機變數之間,而通常是一個二元的變數和一個連續型的或其他類型的變數,這個在會後面我們會詳細討論。

針對兩個連續型隨機變數,評估秩相關的主要手段是非參數假設檢驗。

參數檢驗和非參數檢驗

假設檢驗是數理統計中的一個非常重要的分支,它遵循這樣一個樸素的思維方法,即「提出假設->根據假設進行推導->獲得結論->接受或推翻假設」。拿大家都知道的死神小學生柯南來舉一個例子,他通常的解決一個案件的流程是這樣的:

1、在某個時間點,看到線索或聽到線索或靈感浮現,他大概知道了誰是兇手。這個過程叫做提出假設。

2、當我認為某人是兇手時,根據這個人的行為特徵或作案條件,他會知道,在某個時間地點,會留下一個什麼樣的痕迹。這就是提出假設檢驗的統計量。

3、到那個地方去找證據。這個就根據原假設計算相應的統計量。

4、證據找到了,那就說明假設是對了;否則便是假設錯了。這就是接受原假設或拒絕原假設,轉而接受備擇假設。

那非參數檢驗和參數檢驗的差別主要就是,參數檢驗就是我們對連續型隨機變數的分布是有一個假設的,如正態分布,指數分布等等,在進行推理和計算的過程中,我們是依據這個前提的,這樣做的好處是如果我們前提是對的,那麼我們再驗證假設的過程中會更準確,但前提如果本身就是錯的,那我們的結論可能會錯的更離譜;非參數檢驗就是那些沒有前提假設的那些假設前提,好處是我們的推理會更具有普適性,壞處就是可能在具體的情景下,會喪失一定的準確性。

常用的秩和檢驗有符號秩和檢驗,Wilcoxon秩和檢驗等,具體實現請自行百度,或參考R或Pyhton的用戶手冊。

特別需要注意的是,我們這裡介紹的是連續型隨機變數之間的秩相關,至於其他的變數類型之間的秩相關,在後面還會介紹別的方法.

依分布相關

在解釋分布之前,我們先要講兩個概念,分布函數和經驗分布函數,

分布函數(英文Cumulative DistributionFunction, 簡稱CDF),是概率統計中重要的函數,正是通過它,可用數學分析的方法來研究隨機變數。分布函數是隨機變數最重要的概率特徵,分布函數可以完整地描述隨機變數的統計規律,並且決定隨機變數的一切其他概率特徵。

統計學中,經驗分布函數是與樣本經驗測度相關的分布函數。該分布函數是在n個數據點中的每一個上都跳躍1 / n的階梯函數。其在測量變數的任何指定值處的值是小於或等於指定值的測量變數的觀測值的數。

經驗分布函數是對樣本中生成點的累積分布函數的估計。根據Glivenko-Cantelli定理,它以概率1收斂到該基礎分布。同時也存在一些結果來量化經驗分布函數與潛在的累積分布函數的收斂速度。(百度百科)

分布函數和經驗分布函數的差別就有點像某寶賣家版和買家實拍版的差別,比較正經的說就是,分布函數是理論模型,經驗分布函數就是實際觀察出的模型。在討論模型表現的時候,大家都知道要看KS,但很少有知道為了計算KS,我們要首先計算經驗分布函數。

通常情況下,KS是將一個變數分成兩組,然後分別計算KS後,比較經驗分布函數差的最大值。主要原因是在只有兩個變數在擁有同樣「量綱」的前提下計算KS才會比較有意義,畢竟在「量綱「不同的情況下,我不檢驗也知道這兩個變數是不相關的。

因此在比較兩個不用的變數時,為了從分布的角度考察他們的相關性,通常的做法是將這兩個變數先做「標準化」(也叫「歸一化」)處理,原理也很簡單,就是對這兩變數分別減去自己的均值然後除以方差。在經過這樣的處理後,再通過計算KS來判定兩個變數依分布相關的程度。所以,我們這裡的相關,其實也是在歸一化後口徑下的依分布相關。

KS(Kolmogorov-Smirnov)統計量Kolmogorov-Smirnov是比較一個頻率分布f(x)與理論分布g(x)或者兩個觀測值分布的檢驗方法。其原假設H0:兩個數據分布一致或者數據符合理論分布。D=max| f(x)-g(x)|,當實際觀測值D>D(n,α)則拒絕H0,否則則接受H0假設。KS檢驗與t-檢驗之類的其他方法不同是KS檢驗不需要知道數據的分布情況,可以算是一種非參數檢驗方法。當然這樣方便的代價就是當檢驗的數據分布符合特定的分布事,KS檢驗的靈敏度沒有相應的檢驗來的高。在樣本量比較小的時候,KS檢驗最為非參數檢驗在分析兩組數據之間是否不同時相當常用。

還有一個與KS相類似的統計量是C統計量,C統計量其實就AUC的馬甲。這個我們再介紹AUC的時候會詳細介紹。

另外,為了更直觀的觀測兩個連續型變數的依分布相關,可以將兩個經驗分布函數繪在同一張圖上進行比較。


二元變數和連續型變數的關係

下面要討論一個非常重要的話提,那就是如小標題。二元變數和連續型變數的相關關係是「謹慎的「使用數據驅動的風控模型中的核心技術;同時,這裡的連續型變數是泛指所有類型的變數,因為我們之前講到的所有二元型,連續型,序數型,無序列表型都可以通過分組,離散化,虛擬化等技術手段轉化為一個理論上的連續型變數。

為了支撐所謂的「大數據風控」其實需要我們需要將這個特殊的相關關係轉化為如下幾個範疇的內容:

  • 從數學的角度評估一個二元變數和一個連續型變數??

因為從風險管理的角度,我們最關心的就是用戶是否逾期,這個就是我們所說的「一個二元變數」,至於如何從實際的業務數據中提取這個二元變數,請參考

現金貸中的風險模型淺談(七)那些可以被度量的風險

這裡的「連續型「變數可能是一個內部評分,也有可能是一個外部評分,更有可能是某個可以量化的用戶特徵。我們要做的是用各種數學指標去評估這個變數對逾期是否顯著(siginificant),這裡的數學指標可能是一堆數據,一個表格,用來深度理解這個二元關係,當然也可能是將這個1-1的關係簡化成一個數字,用來進行比較和排序,如我們所熟知的KS,IV等。

  • 通過各種方法生成或找到一個顯著的連續型變數

這個就是我們通常所說的狹義的「建模「了,這裡要做的主要是三件事,一是從海量的數據中先把這些可能顯著的特徵提取出來;二是從那些海量的特徵中找到那些可能顯著的特徵;三是將可能顯著的特徵或弱顯著特徵聚合成一個顯著特徵(評分),正所謂:

「獨木不成林;一花獨放不是春,萬紫千紅春滿園;眾人拾柴火焰高;三個臭皮匠賽過諸葛亮;團結就是力量;人心齊,泰山移;燕子銜泥能填海,螞蟻搭橋能過河;聚沙成塔,撒豆成兵。」

  • 從業務的角度評估一個二元變數和一個連續型變數的效用

當我們發現了一個從數學上對於逾期顯著的變數時,新的任務就是判斷這個變數是否適合放入我們的風險規則,以及如何將這個新的評分或者特徵放入我們已經存在的規則體系中。如果說上面的兩個任務更像是搞科研的話,那麼這個任務就是科技成果轉化,科研成果只有轉化成生產力才能真正為企業帶來收益,否則你說資本家銀行賬戶里也沒有閑錢啊。

這裡主要討論的就是「從數學的角度評估一個二元變數和一個連續型變數」。在我們整個的流程中,可能會用到的評估方法有如下:(後面會一一講解,當然有些用的比較多,有些不常用,有些是隱藏建模的流程中,如果有漏掉的話,也請大家給我留言補充)

IV

gini係數

相關係數

entropy

KS

AUC

混淆矩陣指標族

ROC曲線

Lorenz曲線

模型影響力指標族

先從IV說起吧,這個簡單一點。

IV

IV的全稱是Information Value,中文意思是信息價值,或者信息量。反應的是單一特徵對目標變數的顯著性,但由於IV的數值本身沒有比較顯著的物理意義,因此IV的主要作用就是根據顯著性對特徵進行排序。

需要注意的是,由於在各種指標下每個特徵的排序可能不會完全一致,而且由於目前尚無嚴格的理論證明各種指標的最優適用範圍,因此使用多個指標對特徵進行排序,然後取並集,是我們在篩選特徵時常用的手段,避免漏掉一些特徵,影響模型表現。

IV的主要計算手段就是跟據特徵的不同取值分組,然後在每個分組中計運算元IV,然後將每個組中的子IV求和,每個分組中的子IV計算公式如下:

從直觀上去理解,每個子IV有如下特徵:

  • 子IV總是大於等於零的;
  • 當該分組中好壞的比例與總體好壞的比例相同時,則子IV為0;
  • 當該分組中好壞的比例與總體好壞的比例偏離越大,則子IV越大;

那麼將所有子IV相加以後的特徵IV越大,也就意味著這個特徵的不同取值從總體來說對好壞的區分越大。一般人對於IV的認知也就到此了,但是為了顯示出張老師還是肚子里還是有點墨水,也不總是搬運工和抖機靈,下面我們真對IV來做一些深入的探討。

  • IV的計算是取決於分組的方式的,不同的分組方式所計算出的IV是會有一些怎樣的差異?
  • IV是由各個分組的子IV求和來的,那麼IV必然就會有一些由求和代來的特性,那麼一個偏科分子和各門功課都還行的同學,誰會在計算IV的時候佔優勢?
  • 接著,在如果我用子IV的平均數或者中位數來代替子IV求和,設計出IV改1和IV改2,那麼用這兩個新指標計算出來的IV,在特徵顯著性篩選方面會有什麼異同?或者說為什麼我們不用IV改1或IV改2來計算IV?
  • 我們是否可以通過對那些有足夠支撐的子IV的排序,找到特別有區分能力的特徵的取值?這麼做是否有意義?

上面的四個問題,我也只有一些大概的答案,因為我確實沒這個水平能給出嚴格的理論證明,也請大家自己自己想想看,我就不廢話了。

GINI

Gini係數我們更多的是從新聞里聽到評價一個國家收入差距的指標,但gini係數的演算法,其實也是一種用來判別特徵對於目標變數顯著程度的指標,只不過gini係數在一般變數評估及傳統的建模流程中不常用,但gini係數是一種叫做CART(classification and regression tree)的決策樹演算法,對於離散型目標變數進行分叉時的主要依據,而CART正是大名鼎鼎的GBDT所使用的決策樹。

其實像gini數據一樣,很多經典的統計指標和方法在早期都是被生物學家、人口學家、經濟學家所發明的,正是因為生物學、人口學、經濟學是那個時代的「大數據」啊。

(引用自百度百科)基尼係數是1943年美國經濟學家阿爾伯特·赫希曼根據洛倫茲曲線所定義的判斷收入分配公平程度的指標。基尼係數是比例數值,在0和1之間,是國際上用來綜合考察居民內部收入分配差異狀況的一個重要分析指標。

赫希曼根據洛倫茨曲線提出的判斷分配平等程度的指標。設實際收入分配曲線和收入分配絕對平等曲線之間的面積為A,實際收入分配曲線右下方的面積為B。並以A除以(A+B)的商表示不平等程度。這個數值被稱為基尼係數或稱洛倫茨係數。如果A為零,基尼係數為零,表示收入分配完全平等;如果B為零則係數為1,收入分配絕對不平等。收入分配越是趨向平等,洛倫茨曲線的弧度越小,基尼係數也越小,反之,收入分配越是趨向不平等,洛倫茨曲線的弧度越大,那麼基尼係數也越大。另外,可以參看帕累托指數(是指對收入分布不均衡的程度的度量)。

這裡請一定注意的是,GINI係數的計算方法是A/(A+B),上周看到知乎的一篇文章中說到是A/B,可能是作者的筆誤。

再來當個搬運工

(引用自百度百科)國內不少學者對基尼係數的具體計算方法作了探索,提出了十多個不同的計算公式。山西農業大學經貿學院張建華先生提出了一個簡便易用的公式:假定一定數量的人口按收入由低到高順序排隊,分為人數相等的n組,從第1組到第i組人口累計收入佔全部人口總收入的比重為wi,則說明:該公式是利用定積分的定義將對洛倫茨曲線的積分(面積B)分成n個等高梯形的面積之和得到的。

這個數值計算方法,是我們在實踐中通常用的方法,類似於我們用經驗分布函數來代替分布函數,用以計算KS。

這裡需要注意兩點

  • 在經濟學中,我們用來排序的指標和累計的指標都是收入,而將gini的演算法引入到統計學中時,gini既可以用來做單變數的分析,主要作用是考察變數取值的集中度,也可以用在二元變數分析,只不過這個時候用來排序的變成了我們的特徵,而累計的變成的了我們的目標變數;??
  • gini係數在使用上相比IV的適用範圍會窄一定,原因就來來自於演算法本身,由於計算gini係數要先排序,因此gini係數是不支持無序列表型變數的,而IV只需要做分組,因此完美支持無序列表型變數。

為了讓大家更好的理解基尼係數,我們來看幾個數字;

(引用自百度百科)中國國家統計局基尼公布基尼係數2012年為0.474,2013年為0.473,2014年為0.469,2015年為0.462,2016年為0.465,根據西南財經大學教授甘犁主持,西南財經大學中國家庭金融調研中心發布統計報告稱2010年為0.61,

在現實中,日本是全球基尼係數最低的國家之一。據共同社2013年10月11日報道,日本厚生勞動省周五公布的2011年調查報告顯示,日本國內基尼係數為0.2708,創歷史新高。據報道,自1984年以來,日本的基尼係數持續上升,此次調查為0.2708,較2008年的數據增加0.0218,創歷史新高。厚勞省認為,收入較低的老年人及單身者家庭的增加導致差距擴大。據悉,基尼係數是國際上用來綜合考察一國或地區居民內部收入分配差異狀況的一個重要分析指標,基尼係數越接近1就表示收入分配差距越大。在日本,基尼係數的調查每三年左右實施一次,此次是第16次。日本的基尼係數一般在0.25左右,德國為0.3左右,而美國的基尼係數已經超過0.4的警戒線。

我不評價這些數字的準確性,只是做了一些實驗,告訴大家GINI係數分別是0.61,0.45,0.27的時候收入的差距到底是怎麼樣的。

我取100個人,一共讓他們賺5500快,那麼收入有如下三種分配方式:

  1. 100個人的收入是從1一直到100,是不是感覺差距已經很明顯了,如果放在現實社會中,收入最高的1%已經是收入最低的1%的人收入的100倍了,但其實這100個人的gini係數只有0.33,而日本只有0.27;
  2. 100個人中,最富有的一個人掙了2700,剩下的99個人一共掙了2800塊,平均一個人差不多28塊。這種情況下,這個整體的GINI係數是0.48
  3. 100個人中,最富有的一個人掙了3500,剩下的99個人一種才掙了2700塊,平均一個人也就20塊。這種情況下,這個整體的GINI係數是0.63.??

其實從上面的例子可以看到,決定GINI係數或收入差距的並不是最富有的人比最窮的人高了多少倍,即使在最後一個例子,也就不到200倍;決定GINI係數或是收入差距的是,最富有的人佔有的社會的總財富的比例,而在這三個例子裡面,分別是不到2%,50%和差不多64%。尤其是第三個例子,最富有的1%佔有了總收入的64%,這個還是挺誇張的,這已經不是2:8法則了吧。

Entropy(熵)

Entropy這個指標在我們做模型的時候用的的確不多,但在決策樹中,這個指標代表了一類非常重要的分類或叫做分叉思想,也就是通過分叉(根據某個指標的閾值將總體分成幾個子集)降低整體人群的混亂度。從ID3開始,C4.5以及之後的演化版本,用的都是它。

Entropy其實就是我們在中學化學課本中學過的熵,我貌似記得化學老師說過,所有的化學反應,其實都是由純凈到混亂的過程,然後在這個過程中釋放能量,那麼在這個過程中,整個系統的熵(混亂度)在增加。

信息是個很抽象的概念。人們常常說信息很多,或者信息較少,但卻很難說清楚信息到底有多少。比如一本五十萬字的中文書到底有多少信息量。

直到1948年,香農提出了「信息熵」的概念,才解決了對信息的量化度量問題。信息熵這個詞是C.E.香農從熱力學中借用過來的。熱力學中的熱熵是表示分子狀態混亂程度的物理量。香農用信息熵的概念來描述信源的不確定度。

資訊理論之父克勞德·艾爾伍德·香農第一次用數學語言闡明了概率與信息冗餘度的關係。

(百度百科)

我們這裡的熵其實準確的叫法就是信息熵,在我們提取信息的過程中,其實是信息熵在不斷的減小。舉個簡單的例子,當我們把50個白球和50個黑球混在起後,這個時候看起來是很亂的,對於這個簡單的系統,此時的熵是很大的;當我們手工挑10個白球出來,放成另一堆後,這時新的兩堆球的熵的和是小於之前的一大堆球的。

來看一下信息熵的計算公式

這個公式其實看起來跟我們之前講過的IV的公式是有點像的,下面我們就通過IV和信息熵的對比,來更好的理解一下信息熵:

  • IV是信息量,那麼其實信息量越大,包含的信息越多;而信息熵則相反,熵越小包含的信息量越大,這個應該是非常好理解的。??
  • 跟IV相比,entropy有一個非常重要的特性,就是可加性。也就是說,當我把人群分成兩部分以後新的系統的整體entropy就等於兩個子集的entropy之和,但IV卻不具有這個性質,根據IV的公式,新的系統IV是跟原來一樣的,那麼我們就沒有辦法通過IV的變化來判定使用這個指標後的效果。從這個意義上說,IV是一個先驗的總體指標,主要用來做橫向比較,也就是說IV能帶給我們的信息是,這個指標比那個指標有用;但entropy其實是一個閾值敏感的結果指,也就是說,entropy能告訴我,當我用了某個指標,且指定了分類閾值後,樣本的熵將會下降多少,用個學術名詞,這個就叫做「信息增益」。對於熟悉一般邏輯回歸建模流程和決策樹分叉流程的同學看到這裡應該就明白了,為什麼在這兩個場景下,我們會分別用IV和entropy了。

混淆矩陣指標族

混淆矩陣指標族(confusion matrix),之所以叫指標族,是因為有很多指標都是由混淆矩陣計算而來的。

在進入正題之前我們先來講幾個概念。

  • 考慮一個二分問題,即將實例分成正類(positive)或負類(negative)。對一個二分問題來說,會出現四種情況。如果一個實例是正類並且也被 預測成正類,即為真正類(True positive),如果實例是負類被預測成正類,稱之為假正類(False positive)。相應地,如果實例是負類被預測成負類,稱之為真負類(True negative),正類被預測成 負類則為假負類(falsenegative)。 從這個概念上上說,結合我們的業務,也就是說如果說一個人以某種中口徑被我們定義為了壞人,我們就管他叫做「Ture」,當我們在把某個人判定為壞人,那麼我們就管他就做「Positive」;同理,我們還有「False」和「negtive」。其實我們在日常生活中經常會遇到很多是P而不是T的情況,只不過大部分情況P都非常接近T。在孕婦懷孕的過程中有一個必須的檢查,叫做「唐氏篩查」,是用來判斷嬰兒是否患有「21-3體綜合症,這個檢查的結果就是一個P而不是T,也就是說只是高可能行;再舉個例子就是家裡都會裝的煤氣報警器,煤氣報警器響了,其實也是一個P,說不定我正在爆炒腰花呢。
  • 要注意的是,在這裡我們講的一個二分類變數和連續型變數(模型平台)的相關關係,因此為了計算模型評分對於壞客戶(二分類)的混淆矩陣,我們要做的第一步就是找到一個閾值把這個連續的可以用來排序的指標轉化為一個二元指標(這個過程類似與我們之前講過的虛擬化);隨之而來的問題就是,這個閾值怎麼找?在幾乎所有的分析包中,這個閾值都是根據如下方法來確定的。
  • 第一步,看一下在樣本中T和F的比例,這個是真實的壞人和好人的比例;? 第二部,通過排序演算法從低分到高分(假設低分是壞人),找到那個使P/N=T/F的值,這個值有可能是一個數值或分位數;? 第三步,用這個閾值,將評分轉化為P和N;?以上這個方法是非常標準的演算法,可以廣泛應用在各行各業,但是具體我們行業,我覺得用這個辦法確定閾值,然後計算相應指標,如召回率之類的,其實不是一個好的衡量模型用的指標,混淆矩陣指標族,多用在分析模型對整體策略的影響時使用,而不是用在比較模型的好壞。

介紹完基本概念,我們開始進入正題。

當我們樣本打好TF和PN的標記後,我們可以將整個樣本分為四種類型:

這四種類型有兩種類型是我們的判斷是對的,一個可以賺錢,一個可以防止損失;另外兩種狀態我們判斷錯了,一個是浪費本金,一個是浪費營銷費用。

因此,從混淆矩陣衍生出來的指標一般分兩大類,正向指標和反向指標,正向指標就是把TP或FN之一或者之和放在分子,把總數、FP、TN等放在分母,總之正向指標越大,越說明模型好(由於模型的作用主要是將好壞分開,所以在很多統計學或機器學習的相關地方,我們一般稱呼為分類器,aka,Classifier);反向指標同理。

在很多情況下,由於錯將壞人當為好人的危害是最大(你圖的是人家的利息,人家看上了你的本金;本來得了很重的病,醫生確診斷出來說沒事),因此,我們通常會比較關心一個叫True-Negtive rate的指標(真負率TNR或特指度specificity),就是用TN做分子,用TN+FP做分母;與這個指標對應的叫做False-Postive rate(假正率FPR,分母相同,換個分子),這個指標可以俗稱虛驚一場指標,比如煤氣報警器誤報,醫院誤診說你有病,在金融場景里,這個指標過高,就會被市場部門投訴,因為你本著寧可誤殺一千,絕不放過一個的態度,極大的提高的了企業的獲客成本。

類似的指標還有:

  • False Negative Rate(假負率 , FNR) FNR = FN /(TP + FN);??
  • True Positive Rate(真正率 , TPR)或靈敏度(sensitivity) TPR = TP /(TP + FN)

在介紹基礎知識的時候,我提到了,一般的軟體中將模型或評分轉化為0/1的主要是排序後根據實際數據中0/1的比例,找到閾值後進行轉化。我前面也說到了這個方法轉化出來的P和N其實並不是一個太好的指標。原因是,我們的模型、評分主要是用來判斷用戶的風險、然後成為我們規則的一部分,如果我們的規則是一個瀑布樹的、而我們把模型做為最後一條規則時,我們要做的是pre-define這個閾值,而不是根據樣本中的「壞人」比例來確定這個閾值。再說的明白一點就是,

「由FP帶來的獲客成本的提升,一定要被TP所降低的風險損失所覆蓋,除非由於某些重大的經濟事件或政策因素,我們不計成本的降風險,不過這時,企業通常的做法就是不再進行市場投放,而不是僅僅收緊信貸政策。」

明白了上面這段話,就可以知道,其實在真正的實際業務中,我們計算與混淆矩陣相關的指標,通常是個循環的過程,即,預先定義一個閾值,根據閾值進行成本核實,計算相應指標,然後調整閾值,重新進行成本核算。知道找到一個能最大滿足業務指標的閾值。

大家肯定要說了,既然混淆矩陣的相關指標計算起來這麼麻煩,那麼有沒有什麼方法能看到在閾值動態變化的時候,幾個關鍵指標大概都是怎麼變動的呢?答案是肯定的,那就是我們下一部分要講的Lorenz curve,ROC curve,以及為了量化這兩個曲線而產生的KS統計量和C統計量。

Lorenz Curve、KS、ROC Curve、AUC

講完了混淆矩陣指標族,大家應該明白了,即使是同一個模型,在我們計算混淆矩陣的相關指標時,如果閾值取的不同,結果也都是不一樣的。本篇要講的四個概念就是將混淆矩陣這個依賴於閾值的指標,轉化為了兩張圖和兩個全局指標。全局指標最大的好處就是可以脫離開應用場景,單獨使用,因此特別適合模型比較和評估;但反過來說,這些指標也特別容易將建模人員引入歧途,為了指標而建模,忘記了具體業務和應用場景。

KS(Kolmogorov-Smirnov)統計量

Kolmogorov-Smirnov是比較一個頻率分布f(x)與理論分布g(x)或者兩個觀測值分布的檢驗方法。其原假設H0:兩個數據分布一致或者數據符合理論分布。D=max| f(x)-g(x)|,當實際觀測值D>D(n,α)則拒絕H0,否則則接受H0假設。

KS檢驗與t-檢驗之類的其他方法不同是KS檢驗不需要知道數據的分布情況,可以算是一種非參數檢驗方法。

通常在計算KS的時候是這麼做的,在樣本量足夠的時候,我們會按照評分將樣本根據評分結果排序後,分為20等分,然後計算下面這個表格。

那麼我們將A和C兩列畫在一張圖中,就形成了如下圖所示的Lorenz Curve。其中A是橫軸,C是縱軸。

其實B跟C在統計學中有個專有名詞,也就是我們前文講過的「經驗分布函數」,那個這兩個分布函數背後的隨機變數是什麼呢?

這兩個隨機變數分別是Bad Accounts的評分和Good Accounts的評分,KS定義中的D=max| f(x)-g(x)|,f(x)和g(x)就是指的這兩個隨機變數的分布函數。

為了把這個過程更加的形象化,我們就有了如下兩張圖。第二張圖的那個綠色的線就是兩個函數差的變化趨勢,以及差對應的最大值63%。需要注意的是,因為我們這裡採用的是數值計算方法,因此的同樣的樣本和模型,在計算方法不同時,會有微小的不同。

有了Lorenz曲線,我們就知道,當用模型拒絕X%的人時,可以拒絕掉Y%的壞人,而這個正是我們上文講過的TPR,也就是說Lorenz Curve其實就是把TPR隨不用閾值的變化過程動態的展示給我們,而KS其實也可以理解成max|TPR-FNR|。需要注意的是,KS出現的位置,並不一定是我們應用模型時的閾值,也就是說KS高的模型,不是一定能帶給我們更好風險規則結果。反過來說,在我們選擇模型時,還是要根據我們具體的應用規則來選擇,不能機械的使用KS。

當我們把Lorenz Curve的橫軸換成B列(也就是FPR),那麼LorenZ Curve 就變成ROC Curve了(有時橫縱坐標會互換)。

AUC(Area under the Curveof ROC),顧名思義就是那個曲線下的面積了。但AUC是個面積,因此學過高數的同學都知道,要計算這種曲線的面積要用到積分,也就是我們用切片的方法去逼近這個積分,這種計算的運算複雜度是很高的。這個問題先放在這裡,我們講另外一個概念。

用SAS 做過Logistic Regression的同學一定對下圖不陌生:

右邊是一列統計量,可以先不理會,我們說左邊。如果說我們的樣本里有M個Bad,N個Good,那個我們會有M*N的比較對,在我們有了模型評分(風險越高評分越高)以後,就會有如下三種情況:

  • 評分和M、N的結果一致,M中的記錄對用的評分高於N中記錄對應的評分(Concordant);
  • 評分和M、N的結果不一致(Discordant);
  • M、N對應的評分相等(Tie)

這三種Pair加起來正好是100%的M*N,所以表格中的84,13,3.1就是這個意思(四捨五入過)。而右下角的C統計量就等於

% of Concordant+0.5 * % of Tie

計算C統計量的演算法複雜度是比計算AUC的複雜度要低,巧的是C統計量恰好就等於AUC,因此通常用計算C的方法來計算AUC。

關於為什麼C=AUC我們這裡就不詳細證明了,但是大家可以直觀理解一下,ROC曲線將這面積為1的區域分為了兩部分,在曲線下面的每一個點,其實就是對應了Concordant的情況和一半的Tie。

這種將數論(C統計量的研究領域)和解析幾何(ROC的研究領域)相結合解決數學問題的例子在數學史上比比皆是,遠到費馬大定理的證明,近到現在的區塊鏈中應用的加密演算法,深刻著影響著我們的生活。

推薦閱讀:

數據分析基礎—2.1數據分析方法論概述
十分鐘入門Python數據分析包:Pandas、Numpy
【數據點亮生活】第一站:獲取數據
用Python進行數據分析的基礎姿勢(一)
python分析信用卡反欺詐(下)——兩種採樣方法解決數據不平衡及效果分析、模型調參示例

TAG:大數據徵信 | 風險管理 | 數據分析 |