作者:黃天元,復旦大學博士在讀,熱愛數據科學與R,熱衷推廣R在工業界與學術界的應用。知乎專欄:R語言數據挖掘 郵箱:[email protected].歡迎合作交流。

相關連接:

HopeR:R語言信用評分卡:拒絕推斷(1) 問題定義

HopeR:R語言信用評分卡:拒絕推斷(2) 特徵篩選A

HopeR:R語言信用評分卡:拒絕推斷(3) 特徵篩選B

HopeR:R語言信用評分卡:拒絕推斷(4) 特徵工程A

提要:

Hope現在作為金融風控分析師就職於A金融公司,之前的風控模型在1月份違約率為6.5%,2月份調整之後達到了4.7%,可喜可賀。但是公司領導Kate居安思危,認為目前市場的波動很大,用戶的心理和行為的變化很敏感,因此要再次更新模型。Kate讓Hope就1、2月份的所有數據(包括放款的數據和未放款的數據),對放款規則進行更新,來獲得更加好的效果。就在2月末3月初,Hope開始做這個模型,嘗試保持甚至提高3月份的業績,並對4、5月份的決策做出指導。

目前進度:

對一月份的數據做了特徵工程,並做了一個簡單的邏輯回歸模型。但是還沒有進行驗證。

讓我們看看之前篩選好的特徵:

下面,讓我們用1月份的數據構建模型,並對2月份進行預測。

結果如下:

準確率95.06%,感覺還可以。「錯殺」21個用戶,但是同時也放了284個違約用戶進來。

需要注意的是,我們看看Baseline是多少。

這是個什麼意思?這就是如果我把所有人都判別為不會違約,就直接得到了95.3%的準確率!

不過仔細想想,我們用於驗證的數據集,是已經經過規則篩選之後的用戶,也就是公司決定給他們放貸的用戶。玩了這麼久我們還沒有涉及拒絕推斷,這些都是「接受推斷」。至少我們可以看到,我們建立的模型對「接受」用戶的判別能力已經與公司之前的模型沒有太大差距(公司做這個模型的時候很可能就是按照這個思路來做的)。但是如果用這個模型來對所有的用戶進行評價,究竟會有什麼樣的效果呢?這個就不得而知了。但是憑這些數據,說Hope的模型就比公司的差,是不可以的。也許Hope的模型在實際操作中會找到更多的合適的用戶,從而帶來豐厚的利潤;不過也可以能接受了更多違約用戶,帶來損失。這取決於每個交易的盈虧期望。

我們這個模型跟公司的原模型有多大差距?我們來稍微試試看:

解釋一下標籤:是否違約(label,1是違約,0是沒有違約,NA為缺失)、是否借款(tag,0是認為沒有違約放款了,1是認為違約了沒放款)。這樣一來我們可以發現,我們的模型認為很多可以放款的客戶,最後都沒有放款,這樣的人數高達11914個。因為我們設置可以放款的閾值是0.5,其實這個閾值可以設得更加苛刻一些,從而通過「錯殺」更多潛在用戶來規避風險。

在實際應用中,不妨把相同分佈的客戶羣體分為兩份,進行一個AB測試。當然,這個測試是用真金白銀在試,所以也不用五五分給兩個模型來篩選用戶。可以用穩健的模型來判斷70~75%的用戶(A模型),用稍微新的模型來測試25~30%的用戶(B模型)。如果B模型效果比A要好很多,不妨增加B模型篩選用戶的比例,甚至完全取代A模型。這裡還有一個很有意思的問題,是「最小出模樣本」。也就是說,我們至少要用多少的樣本量,纔能夠得到一個穩定有效的模型呢?如果能夠求得這個樣本量,我們就可以用最低的成本來測試儘可能多的模型。這樣,我們的模型組合就非常像一個投資組合,然後通過優化這個模型組合來實現利益最大化。這個高級玩法我會放在後面再實現並測試。

今天就玩到這裡,下一步的安排是:

驗證交叉驗證、bootstrap這些重採樣方法究竟有沒有用,有多大用處?對於類失衡問題,重採樣方法能夠起到什麼效果?效果多大?


推薦閱讀:
相關文章