聊一聊評分模型校準
最近想整理一下關於信用評分校準的一些知識,發現求是汪老師的文章已經很詳細、全面地介紹了這塊的內容,於是仔細讀了一遍他的文章,並對其中的重點作一下筆記。求是汪老師的文章連結是信用評分卡模型分數校準。
一.分數校準的業務應用場景
分數校準主要應用在3種場景下。
1.分群子評分卡作分數融合。
2.降級備用模型和主模型分數校準。
3.客群變化對原模型分數進行修正。
其實還有一種情況需要校準模型,就是對樣本進行抽樣建模之後需要對違約概率作校準之後再對映成評分。其本質和上面第3種情況是一樣的,都是開發樣本的Odds與實際樣本的Odds不一致,導致開發樣本的壞樣本佔與比實際情況不一致。
二.概率分數校準的方法
概率分數校準的方法主要有兩種。
1.Platt scaling使用LR模型對模型輸出的值做擬合。適用於上 述場景1和場景2。
2.評分卡分數的錯誤分配。適用於上述場景3。
對於方法一,比如現在有兩個分數score1和score2,各分數段代表的違約概率不一致,需要進行校準。將score1和樣本的y標籤進行邏輯迴歸輸出概率值score1_cal,將score2和樣本的y標籤進行邏輯迴歸輸出概率值score2_cal。score1_cal和score2_cal就在同一尺度上了。
深入思考的話,由於邏輯迴歸本質上就是將違約概率p、對數機率odds以及信用分數進行對映,如果對映過程中指定的Pdo、P0、odds都是一致的話,評分卡的尺度就是一致的,這種情況下不需要進行校準。即評分卡只要將概率轉化為分數時ln(odds)-score關係是一致,則無需進行校準。如果子模型使用的是整合學習方法,則需要進行校準,校準的方法是針對每個seg的xgb_score進行LR校準,校準完之後在整體校準完之後的分數定cutoff。因為策略一般只關注最終輸出分數。當然,策略會根據自己的人群標籤再做交叉分析。
對於方法二,基於的理論依據是LR中的截距近似於開發樣本的ln(Odds),先通過一個案例來學習此方法,案例來源原來評分卡模型的概率是這麼校準的!
一個評分卡經過抽樣或者客群發生偏移,開發樣本的壞樣本率為10%,評分卡模型建模樣本各分數段的好壞分佈如下:
實際上該產品的違約率只有2%左右,那麼這個壞樣本佔比會比產品上線後實際落在該分數段的壞樣本佔比要高得多。要還原真實的情況,需要進行如下校準:
概括一下,即將實際開發樣本的ln(odds),即LR中的截距,加一個ln(odds1/odds)後再進行sigmoid轉換。ln(odds1)是抽樣前真實好壞比或者目前樣本的好壞比。具體的理論依據如下:
可以這樣理解上面的過程,邏輯迴歸擬合出來的截距是約等於ln(odds)的,因此開發樣本擬合出來的截距是開發樣本的ln(odds),實際樣本的截距應該是實際樣本的ln(odds1),現在需要將開發樣本的ln(odds)調整到實際樣本的ln(odds1)上面,則需要-ln(odds)+ln(odds1),即再加上一個ln(odd1s/odds)。這樣解釋比較容易理解。
三.一些其它的啟發(來源於文章評論)
1.邏輯迴歸擬合出來的截距為什麼等於ln(odds)?
這個問題求是汪老師的另一篇文章樣本權重對邏輯迴歸評分卡的影響探討有寫到:
2.LR的輸出概率可以認為是真實概率,而其他分類器的輸出概率並不反映真實概率?
lr輸出概率的分佈往往是正態分佈,這是因為自變數之間相互獨立;(多個獨立統計量的和的平均值,符合正態分佈);xgb這些模型由於沒有做相關性篩選,入模變數相關性比較高,因此輸出概率分佈一般服從長尾分佈(如果各種因素對結果的影響不是相加,而是相乘,那麼最終結果不是正態分佈,而是對數正態分佈)
3.分群導致各seg的odds不同,即LR的截距不同,會有什麼影響?
分群的目的就是讓不同的seg的odds存在差異化。從貝葉斯角度看,lr中截距項對應總體的odds,所以不同seg訓練的lr的截距必然有差異。通過PDO尺度變換後,這個截距對應正態分佈的均值。不同seg的分佈放在一起看會有重疊,但不會完全一致,否則分群就失去了意義。
【作者】:Labryant
【原創公眾號】:風控獵人
【簡介】:某創業公司策略分析師,積極上進,努力提升。乾坤未定,你我都是黑馬。
【轉載說明】:轉載請說明出處,謝謝合作!~
相關文章
- 聊一聊二分查詢法
- 聊一聊領域驅動與貧血模型模型
- 聊一聊資料庫基準測試那些事資料庫
- 聊一聊遊戲分級制度的前世今生遊戲
- 聊一聊 RestTemplateREST
- 聊一聊 TLS/SSLTLS
- NLP segment-01-聊一聊分詞 AI 的基礎分詞AI
- 評分卡模型的評分標準模型
- 聊一聊前端換膚前端
- 聊一聊session和cookieSessionCookie
- 聊一聊Greenplum與PostgreSQLSQL
- 聊一聊模板方法模式模式
- 聊一聊 JVM 的 GCJVMGC
- 聊一聊測試流程
- Nginx-01-聊一聊 nginxNginx
- 聊一聊介面卡模式模式
- 聊一聊 Javascript 中的 ASTJavaScriptAST
- 聊一聊隨機數安全隨機
- 聊一聊SQL最佳化SQL
- 聊一聊系統重構
- 聊一聊過度設計!
- 聊一聊責任鏈模式模式
- 聊一聊裝飾者模式模式
- 聊一聊容器暫停退出
- 聊一聊如何使用Crank給我們的類庫做基準測試
- 聊一聊Javascript中的Promise物件JavaScriptPromise物件
- 聊一聊前端業務開發前端
- 簡單聊一聊Vuex的原理Vue
- 聊一聊Java的列舉enumJava
- 聊一聊微服務元件區別微服務元件
- 聊一聊遊戲的壓測遊戲
- 面試官(7): 聊一聊 Babel?面試Babel
- 聊一聊HTTP快取機制HTTP快取
- 聊一聊MySQL的字符集MySql
- 聊一聊MySQL的儲存引擎MySql儲存引擎
- 聊一聊遊戲版本運營遊戲
- 聊一聊前端效能優化 CRP前端優化
- 面試官:聊一聊索引吧面試索引