评分卡实战中的几个问题
? 最近在做催收評分卡中的滾動率模型,在變量篩選這一步遇到了一些困惑,思考了很多覺得很有意義,有必要分享一下。如有理解不當之處還望多多指正。
? 第一個問題是關于邏輯回歸中系數為正的檢驗。先附上代碼:
? 是不是一定要做這一步檢驗呢?經過一下午的思考和排查發現還是必須要的,下面慢慢解釋原因。
? 首先回到WOE的計算上面,看一下bad_rate和WOE值的關系。
? 結論就是某一箱的bad_rate越高,相應的WOE值也就越大。我觀察了下所有箱的bad_rate和woe值確實是單調的。
然后再看一下每一箱的評分映射邏輯:
? 簡單說,就是每一箱的得分等于,
scorei=?B?C?WOEiscore_i=-B*C*WOE_iscorei?=?B?C?WOEi?
? 這里的B在評分卡映射中提到過,等于PDO/log(2),所以是個正數。
再回到每一個變量,解釋一下每個變量的得分情況:一個變量各個分箱的bad_rate越高,相應的WOE就越大,對應的分數應該越低。也就是?B?C?WOEi-B*C*WOE_i?B?C?WOEi?越低。那么C乘B的符號就需要為正,否則就會出現bad_rate越高,分數也越高的情況。所以C的符號應為正。
? 這里的前提是以分數越高,違約概率越低來考量的。
? 所以結論就是,之所以要求系數為正,是為了便于解釋評分卡單變量的得分。只有系數為正,才能對壞樣本率高的箱賦予較低的得分。
? 第二個問題就是評分卡變量的顯著性檢驗。附上代碼。
# 顯著性篩選,在篩選前需要做woe轉換 def forward_delete_pvalue(x_train,y_train):"""x_train -- x訓練集y_train -- y訓練集return :顯著性篩選后的變量"""col_list = list(x_train.columns)pvalues_col=[]for col in col_list:pvalues_col.append(col)x_train2 = sm.add_constant(x_train.loc[:,pvalues_col])sm_lr = sm.Logit(y_train,x_train2)sm_lr = sm_lr.fit()for i,j in zip(sm_lr.pvalues.index[1:],sm_lr.pvalues.values[1:]): if j>=0.05:pvalues_col.remove(i)x_new_train = x_train.loc[:,pvalues_col]x_new_train2 = sm.add_constant(x_new_train)lr = sm.Logit(y_train,x_new_train2)lr = lr.fit()print(lr.summary2())return pvalues_col? 特意去翻了一下筆記,關于一元線性回歸的顯著性檢驗。
? 分為F檢驗和T檢驗。F檢驗用來檢驗總體回歸關系的顯著性,T檢驗用來檢驗各個回歸系數的顯著性。
? 在變量篩選中,相關性剔除是一定要做的,相關性的檢驗就是去除變量之間的線性相關關系。相關系數小,只能說明變量之間無線性相關關系,但是仍有可能存在非線性相關的關系。
? 所以,是不是一定要進行顯著性檢驗,并不是。但是相關性檢驗一定是需要的。
第三個問題就是強變量是否應該入模。
? 以評分卡為例,強變量的意思就是IV值很高,單箱的WOE值也很高。這種情況下其實可以將這一箱單獨作為一條策略。當單箱的WOE值大于1的時候,可以推導一下壞樣本率。
? WOE值大于1的時候,壞樣本率大于12.4%。之前看到說應該是65%,這里留下疑問。如果有錯誤歡迎私信我。
再附上一個關于強變量是否應該作為入模變量的文章,可以思考一下。
評分卡強變量是否應該入模
【作者】:Labryant
【原創公眾號】:風控獵人
【簡介】:某創業公司策略分析師,積極上進,努力提升。乾坤未定,你我都是黑馬。
【轉載說明】:轉載請說明出處,謝謝合作!~
總結
以上是生活随笔為你收集整理的评分卡实战中的几个问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从0到1建立一张评分卡之模型建立
- 下一篇: Xgboost简易入门教程