摘要
邏輯回歸是最常見的二分類算法之一,由於是有監督學習,訓練階段需要輸入標簽,而同時在變量較多的情況下,需要先經過一些降維處理,本文主要講解如果通過R語言來自動化實現變量的降維以及變量轉換,訓練,測試,覆蓋率以及准確度效果評估,以及生成最終評分配置表,而在標簽與訓練數據在可以自動化生成的情況下,配置表是能自動生成的。其中每個步驟都有詳細的實現代碼。
主要步驟
實現細節
1.生成訓練數據
如類似下面的格式
lable var1 var2 var3 var4 var5 var6 var7 var8 var9 var10
37 0 1012512056 1 158 2 5 1 2 250 2 40
48 0 1028191324 1 158 5 1 0 1 100 0 0
82 0 1042100363 1 158 3 15 8 17 88 7 46
105 0 1059904293 1 158 3 17 4 10 170 5 29
215 0 1056562444 1 158 3 20 10 15 133 3 15
219 1 405594373 1 158 2 8 5 1 800 0 0
309 0 1015664693 1 158 4 18 11 6 300 3 16
312 0 1032736990 1 158 2 6 3 14 42 0 0
319 1 1310159241 1 158 3 8 4 2 400 2 25
350 0 1026266596 1 158 5 34 18 15 226 5 14
380 0 1028432195 1 158 4 19 7 9 211 1 5
如該例子中,包含了10個特征var1-var10,以及一個標簽,第一行是變量名,第二行開始多了一列,因為第一列是行號(這里數據不全,簡單做了挑選,為了說明問題)。
生成這樣的格式,主要是為了方便利用如下的代碼來載入:
#讀取數據
data<-read.table("test_tranning.txt",header=T)
這里的data就是載入的原始數據框
2.降維及變量轉換
先講解兩個基本概念,IV值以及WOE值,IV的全稱是Information Value信息量,IV值是邏輯回歸挑選變量中一個主要的方法之一,WOE的全稱是Weight of Evidence權重,計算WOE是計算IV值的前提,計算WOE的時候一般需要先對某個變量進行分段,如等量分段,每個分段的woe值實際就是這個分段中壞人與好人比例的對數值,即:
woe_i=ln(bad_num/good_num)
對應該分段的iv值為:
Iv_i = (bad_num-good_num)woe_i
那么該變量整體的IV值為:
一般情況下IV值越大,說明該變量區分好壞人的能力越強,所以一般會挑選IV值較大的變量作為模型輸入。而實際上在本文中,我們不是利用IV值來挑選變量,而是利用glm函數返回的p值來挑選,這里引入WOE的概念,主要是為了進行變量轉換,即我們的本意是把原始變量轉換為它對應的woe值,把這個woe值作為新的輸入變量,在進行訓練測試。這樣做主要的好處就是能把一些不是正態分布的變量轉換為正態分布。
1) 第一個步驟就是分段
2) 接着就是求出變量的WOE以及IV值
3)接着合並woe值
這里簡單解釋下為什么要合並woe值,因為我們默認對所有變量都進行了等量分段,比如10段,而實際上有些相鄰分段的woe值(也就是區分好壞人的能力)相差不大,那么我們實際上是可以合並這些分段的,也就是不需要分那么多段。
4)把變量轉變為woe值
5)匯總
把步驟匯總起來就是如下的代碼:
3.訓練及測試
構造訓練公式,隨機挑選其中70%左右訓練數據,30%作為測試數據。使用glm函數來訓練。
4.生成評分配置表
結果如如下類似情況:
Woe名字,index,intercept,coefficients,變量分段的起始值,變量分段的終點值,對應評分權重
5.效果評估
實際上最關鍵的兩個指標就是覆蓋率以及准確度,也可以同時加上ks的指標評估,比如在自動化的過程中,可以挑選准確度高於95%的或者覆蓋率大於90%的,或者ks指標如何的,這個根據自己的應用來決定。
直接這樣調用:
得到的評估結果如下類似: