日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

区分度评估指标-KS

發布時間:2023/12/16 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 区分度评估指标-KS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.背景

KS指標來評估模型的區分度(discrimination),風控場景常用指標之一。本文將從區分度的概念、KS的計算方法、業務指導意義、幾何解釋、數學思想等多個維度展開分析,以期對KS指標有更為深入的理解認知。

Part 1. 直觀理解區分度的概念

在探索性數據分析(EDA)中,若想大致判斷自變量x對于因變量y有沒有區分度,我們常會分正負樣本群體來觀察該變量的分布差異,如圖1所示。那么,如何判斷自變量是有用的?直觀理解,如果這兩個分布的重疊部分越小,代表正負樣本的差異性越大,自變量就能把正負樣本更好地區分開。

?圖 1 - 正負樣本變量分布差異對比

Part 2. KS統計量的定義

KS(Kolmogorov-Smirnov)統計量由兩位蘇聯數學家A.N. Kolmogorov和N.V. Smirnov提出。在風控中,KS常用于評估模型區分度。區分度越大,說明模型的風險排序能力(ranking ability)越強。

KS統計量是基于經驗累積分布函數(Empirical Cumulative Distribution Function,ECDF)
建立的,一般定義為:

Part 3. KS的計算過程及業務分析

很多博客文章告訴我們,計算KS的常見方法是這樣的:

  • step 1. 對變量進行分箱(binning),可以選擇等頻、等距,或者自定義距離。
  • step 2. 計算每個分箱區間的好賬戶數(goods)和壞賬戶數(bads)。
  • step 3. 計算每個分箱區間的累計好賬戶數占總好賬戶數比率(cum_good_rate)和累計壞賬戶數占總壞賬戶數比率(cum_bad_rate)。
  • step 4. 計算每個分箱區間累計壞賬戶占比與累計好賬戶占比差的絕對值,得到KS曲線。也就是:?ks=|cum_goodrate?cum_badrate|
  • step 5.?在這些絕對值中取最大值,得到此變量最終的KS值。

為幫助大家理解,現以具體數據(非業務數據)展示這一過程,如圖2所示。其中,total是每個分數區間里的樣本量,total_rate為樣本量占比;bad代表逾期,bad_rate為每個分數區間里的壞樣本占比。

圖 2 - KS計算過程表

?

那么,分析這張表我們可以得到哪些信息呢?

  • 模型分數越高,逾期率越低,代表是信用評分。因此,低分段bad rate相對于高分段更高, cum_bad_rate曲線增長速率會比cum_good_rate更快,cum_bad_rate曲線在cum_good_rate上方。
  • 每個分箱里的樣本數基本相同,說明是等頻分箱。分箱時需要考慮樣本量是否滿足統計意義。
  • 若我們設定策略cutoff為0.65(低于這個值的用戶預測為bad,將會被拒絕),查表可知低于cutoff的cum_bad_rate為82.75%,那么將拒絕約82.75%的壞賬戶。
  • 根據bad_rate變化趨勢,模型的排序性很好。如果是A卡(信用評分),那么對排序性要求就比較高,因為需要根據風險等級對用戶風險定價
  • 模型的KS達到53.1%,區分度很強。這是設定cutoff為0.65時達到的最理想狀態。實際中由于需權衡通過率與壞賬率之間的關系,一般不會設置在理想值。因此,KS統計量是好壞距離或區分度的上限
  • 通常情況下,模型KS很少能達到52%,因此需要檢驗模型是否發生過擬合,或者數據信息泄漏 。
  • KS值的取值范圍是[0,1],一般習慣乘以100%。通常來說,KS越大,表明正負樣本區分程度越好。KS的業務評價標準如圖3所示。由于理解因人而異,不一定完全合理,僅供參考。

    ?圖 3 - KS的評價標準(供參考)

    需要指出的是,KS是在放貸樣本上評估的,放貸樣本相對于全量申貸樣本永遠是有偏的。如果風控系統處于裸奔狀態(相當于不生效,隨機拒絕),那么這個偏差就會很小;反之,如果風控系統做得越好,偏差就會越大。因此,KS不僅僅只是一個數值指標,其背后蘊藏著很多原因,值得我們結合業務去認真分析。

    當KS不佳時,為了達到KS的預期目標,我們可以從哪些方面著手去優化呢?一般建議如下:

  • 檢驗入模變量是否已經被策略使用,使用重復變量會導致區分度不高。
  • 檢驗訓練樣本與驗證樣本之間的客群差異是否變化明顯?樣本永遠是統計學習中的重要部分。
  • 開發對目標場景更具針對性的新特征。比如,識別長期信用風險,就使用一些強金融屬性變量;識別欺詐風險,就使用一些短期負面變量。
  • 分群建模或分群測算。分群需要考慮穩定性和差異性。
  • bad case分析,提取特征。
  • 若將表2數據可視化,就可以得到我們平時常見的KS曲線圖(也叫魚眼圖 ),其中橫坐標為模型概率分數(0~1),縱坐標為百分比(0~100%)。紅色曲線代表累計壞賬戶占比,綠色曲線代表累計好賬戶占比,藍色曲線代表KS曲線。

    至此,我們已經基本了解KS的計算流程、評價標準、業務指導意義和優化思路。接下來,再給大家留下幾個思考題 :

  • 為什么風控中常用KS指標來評價模型效果,而不用準確率、召回率等?
  • 最大KS值只是一個宏觀結果,那么在不同cutoff內取到max時,模型性能有什么差異?
  • 一般情況下,KS越大越好,但為什么通常認為高于75%時就不可靠?
  • Part 4. 風控中選用KS指標的原因分析

    風控建模時,我們常把樣本標簽分為GBIX四類,其中:G = Good(好人,標記為0),B = Bad(壞人,標記為1),I = Indeterminate (不定,未進入表現期),X = Exclusion(排斥,異常樣本)。

    需要指出的是,Good和Bad之間的定義往往是模糊、連續的,依賴于實際業務需求。這里舉兩個例子或許能幫助大家理解:

    例1:模糊性
    對于12期信貸產品,如果設定表現期為前6期,S6D15(前6期中任意一期逾期超過15天)就是1,否則為0;但是后來如果把表現期調整為前3期,那么對于“前3期都正常還款,但4~6期才發生逾期并超過15天“的這部分樣本而言,原本所定義的label就從1就變成0了。
    因此,業務需求的不同,導致標簽定義不是絕對的。

    例2:連續性
    定義首期逾期超過30天為1,否則為0。但是,逾期29天和逾期31天的用戶之間其實并沒有不可跨越的硬間隔,逾期29天的用戶可能會進一步惡化為逾期31天。
    由于逾期的嚴重程度定義本身就帶有一定的主觀性,我們很難說逾期天數差幾天有多少本質的差異,所以哪怕我們為了轉化為分類問題做了硬性的1和0的界限定義,但在業務上理解還是一個連續問題。

    因此在風控中,y的定義并不是非黑即白(離散型),而用概率分布(連續型)來衡量或許更合理

    我們通常用概率分布來描述這種模糊的軟間隔概念,也傾向于使用LR這種概率模型,而不是SVM這種以邊界距離作為優化目標的模型。

    那為什么選擇KS指標呢?——KS指標傾向于從概率角度衡量正負樣本分布之間的差異。正是因為正負樣本之間的模糊性和連續性,所以KS也是一條連續曲線。但最終為什么取一個最大值,主要原因是提取KS曲線中的一個顯著特征,從而便于相互比較。

    Part 5. ROC曲線的幾何繪制及理解

    在風控場景中,樣本不均衡問題非常普遍,一般正負樣本比都能達到1:100甚至更低。此時,評估模型的準確率是不可靠的。因為只要全部預測為負樣本,就能達到很高的準確率。例如,如果數據集中有95個貓和5個狗,分類器會簡單的將其都分為貓,此時準確率是95%。

    【此處注意,平時都說樣本比例不影響auc,這個說法有問題,在樣本比例不極端的情況下,不影響auc。但是如果樣本比例極端的情況下,TPR個FPR曲線很極端,這樣的auc意義不大,所以樣本比例還是影響auc的】

    在理解KS和ROC曲線的關系后,我們也就更容易理解——為什么通常認為KS在高于75%時就不可靠?我們可以想象,如果KS達到80%以上,此時ROC曲線就會變得很畸形,如圖9所示

    另一個更重要的可能原因是,為了便于制定策略,模型評分在放貸樣本上一般要求服從正態分布。現實中不太可能出現如此完美的分類器,如果出現這種明顯的雙峰分布,反而就不合常理,我們就有理由懷疑其可靠性。( 值得一起探討)

    ?

    Part 8. KS的計算代碼(Python)

    def ks_compute(proba_arr, target_arr):'''----------------------------------------------------------------------功能:利用scipy庫函數計算ks指標----------------------------------------------------------------------:param proba_arr: numpy array of shape (1,), 預測為1的概率.:param target_arr: numpy array of shape (1,), 取值為0或1.----------------------------------------------------------------------:return ks_value: float, ks score estimation----------------------------------------------------------------------示例:>>> ks_compute(proba_arr=df['score'], target_arr=df[target])>>> 0.5262199213881699----------------------------------------------------------------------'''from scipy.stats import ks_2sampget_ks = lambda proba_arr, target_arr: ks_2samp(proba_arr[target_arr == 1], \proba_arr[target_arr == 0]).statisticks_value = get_ks(proba_arr, target_arr)return ks_value

    ?

    參考:

    1.風控模型—區分度評估指標(KS)深入理解應用 - 知乎

    2.

    總結

    以上是生活随笔為你收集整理的区分度评估指标-KS的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。