SQL計(jì)算KS、AUC、IV、PSI指標(biāo)


在公眾號(hào)「python風(fēng)控模型」里回復(fù)關(guān)鍵字:學(xué)習(xí)資料?
QQ學(xué)習(xí)群:1026993837 領(lǐng)學(xué)習(xí)資料??
引言
KS、AUC、IV、PSI等指標(biāo)是信貸風(fēng)控業(yè)務(wù)中最為常見(jiàn)的模型指標(biāo)。在模型開(kāi)發(fā)和監(jiān)控中都尤為重要。常規(guī)計(jì)算方案是將數(shù)據(jù)從數(shù)據(jù)庫(kù)下載到本地,再用Python代碼來(lái)計(jì)算,這是一件非常費(fèi)力的事情。為此,本文介紹了一種Spark-SQL來(lái)計(jì)算KS、AUC、IV、PSI的方法,供參考。
目錄
Part 1. KS的計(jì)算方法
Part 2. IV的計(jì)算方法
Part 3. AUC的計(jì)算方法
Part 4. PSI的計(jì)算方法
Part 5. 總結(jié)
致謝
版權(quán)聲明
Part 1. KS的計(jì)算方法
在《求是汪在路上:風(fēng)控模型—區(qū)分度評(píng)估指標(biāo)(KS)深入理解應(yīng)用》這篇中,我們介紹過(guò)KS相關(guān)知識(shí)。另外可作為延伸閱讀的一篇論文是《A comparison study of computational methods of Kolmogorov Smirnov statistic in credit scoring》,其摘要如下:

該文章提出了KS的三種計(jì)算方法,分別是不分箱法、等頻分箱法(equal-size binning)和等距分箱法(equal-width binning),同時(shí)從計(jì)算值、排序性、幾何含義三個(gè)維度對(duì)比,得出:1)不分箱法能到最大且唯一的值;2)只有等頻分箱法能用于評(píng)估分?jǐn)?shù)的排序性。
不分箱法。
計(jì)算步驟為:
對(duì)連續(xù)變量(或特指模型分?jǐn)?shù))排序后,計(jì)算累積好人數(shù)和累積壞人數(shù);
得到累積好人捕捉率和累積壞人捕捉率
兩者相減得到差值,并取絕對(duì)值(可用abs方法)。
計(jì)算所有絕對(duì)值的最大值。
2. 分箱法。
其操作方法是在不分箱法的基礎(chǔ)上多了一步分箱,也就是將分?jǐn)?shù)離散化為有限個(gè)區(qū)間。通常分為10個(gè)或20個(gè)箱子。
在平時(shí)業(yè)務(wù)分析中,我們習(xí)慣于等頻分箱法來(lái)看,原因是可以看到模型的排序性,以及頭部壞人捕捉率等指標(biāo),所能傳達(dá)的信息更為豐富。
等頻分箱法的計(jì)算方法為:
其輸出結(jié)果如下:
上述代碼在分?jǐn)?shù)分布集中時(shí)可能無(wú)法做到完全等頻,為此可采用以下代碼(也更推薦):
其輸出結(jié)果如下:
如前文所述邏輯,等頻分箱法計(jì)算KS的代碼如下:
如前文所述邏輯,不分箱法計(jì)算KS的代碼如下:
由于最終算KS的時(shí)候加上了絕對(duì)值函數(shù)abs(),所以窗口函數(shù)over()里面無(wú)論是asc或者desc,效果都一樣。對(duì)比等頻分箱法和不分箱法,我們發(fā)現(xiàn)結(jié)果略有差異。不分箱法是最精確的,因?yàn)槠洳皇芊窒浞椒ǖ挠绊?,畢竟精度的差異又?huì)影響分箱邊界,進(jìn)而影響分箱內(nèi)的樣本量。
如果需要同時(shí)計(jì)算多個(gè)模型分?jǐn)?shù)的KS,可以對(duì)表進(jìn)行一些調(diào)整,如下所示。再把name放在窗口函數(shù)over()中。
Part 2. IV的計(jì)算方法
在《求是汪在路上:風(fēng)控模型—WOE與IV指標(biāo)的深入理解應(yīng)用》中可參考IV的含義,其衡量自變量對(duì)于因變量的信息量。IV越高,說(shuō)明該自變量對(duì)于預(yù)測(cè)因變量越有效。
在分箱表的基礎(chǔ)上,計(jì)算IV的代碼如下:
Part 3. AUC的計(jì)算方法
ROC曲線下方的面積即為AUROC(Area Under ROC),簡(jiǎn)稱AUC。理論上,對(duì)于連續(xù)分?jǐn)?shù)分布,我們可將計(jì)算公式定義為:
其中, ?
為壞人累積分布,
為好人累積分布。
在實(shí)際問(wèn)題中,我們擁有的樣本量總是有限的,因此上述連續(xù)積分問(wèn)題就轉(zhuǎn)變?yōu)槔奂訂?wèn)題。如何計(jì)算這個(gè)面積呢?這就需要用到微積分的知識(shí),相鄰兩個(gè)坐標(biāo)點(diǎn)可以組成一個(gè)很小的梯形,計(jì)算這個(gè)小梯形的面積后,我們將整個(gè)區(qū)間加起來(lái)即可得到。

計(jì)算AUC的代碼如下:
Part 4. PSI的計(jì)算方法
在《求是汪在路上:風(fēng)控模型—群體穩(wěn)定性指標(biāo)(PSI)深入理解應(yīng)用》中可參考PSI相關(guān)知識(shí)。首先,我們同樣對(duì)分?jǐn)?shù)進(jìn)行分箱。
PSI的計(jì)算需要指定基準(zhǔn)組,用以作為比較的參照。通常在模型監(jiān)控中,我們會(huì)按月份來(lái)與基準(zhǔn)組比較,因此我們引入了一個(gè)分組字段gp。
此時(shí),我們將會(huì)得到中間數(shù)據(jù)如下:
接下來(lái),計(jì)算得到最終的PSI結(jié)果:
Part 5. 總結(jié)
得益于分布式計(jì)算,以及簡(jiǎn)潔的語(yǔ)法,SQL可有效幫助數(shù)據(jù)從業(yè)者節(jié)省大量時(shí)間。由此,本文介紹了常見(jiàn)風(fēng)控模型指標(biāo)的SQL計(jì)算方法。
原文鏈接:https://zhuanlan.zhihu.com/p/402824981/
參考www.tandfonline.com/doi/full/10.1080/03610918.2016.1249883
感謝liaoge所提供的等頻分箱的代碼
歡迎各位同學(xué)了解《python金融風(fēng)控評(píng)分卡模型和數(shù)據(jù)分析(加強(qiáng)版)》學(xué)習(xí)更多相關(guān)知識(shí)
入口1:https://ke.qq.com/course/package/43071
入口2:https://study.163.com/series/1202915601.htm?share=2&shareId=400000000398149
