銀行員 RとPythonに出会う

Rネタを中心に、いろいろと更新していきます

Rの【woeBinning】パッケージ がとても便利

分類問題をロジスティック回帰で予測しようと思ったらこのパッケージが便利そうです。

説明変数をWOE(Weight ou Evidence)ベースでビン化してIV(Information Value)

を算出してくれます。

「WOE」というよりクレジットスコアリングモデルの説明ですが、以下が参考になると思います。

https://www.worldprogramming.com/jp/blog/credit_scoring_pt5

 

説明変数のビン化(クラス化)についてはやり方がたくさんあるのでしょうが、春に受けたSASのクレジットリスクセミナーでもWOEについて時間を割いて解説されていました。

PythonでもWOEベースのビン化パッケージがあるのですが、Rもpythonも日本語で解説しているページがあまり見当たらないので紹介しておきます。

 

組み込みのGerman Creditデータセットを使用します。

Good/Badで結果および20の変数がついた1000行21列のデータフレームです。

library(woeBinning)

# German creditデータセットを読み込む
data(germancredit)
df <- germancredit
summary(df)
str(df)
kable(head(df))

# 説明変数をビン化、目的変をセット
binning <- woe.binning(df, target.var = 'creditability', pred.var = df)

# ビン化した変数をプロット
woe.binning.plot(binning, multiple.plots=F)

f:id:d_s:20180829221031p:plain

f:id:d_s:20180829230729p:plain

実行すると、IVベースでの変数ランキングと、各変数ごとの変数プロットが出てきます。

変数分出てくるので、個別変数としてはduration in monthだけ載せておきます。

このBinning関数には渡せるパラメーターまだがいくつかあって、

stop.limit:ビン化により減少するIVの減少幅にリミットを設ける

min.perc.total:各ビンに入る目的変数の数の割合に下限を設ける

など柔軟にチューニングできそうです。

その他はHelpをご参照ください。

 

duration in monthは以下の通りビン化されています。

binning[3,2]
[[1]]
                 woe cutpoints.final cutpoints.final[-1] iv.total.final bad good col.perc.a col.perc.b
(-Inf,6]  -124.59370            -Inf                   6      0.2537678   9   73  0.0300000  0.1042857
(6,15]     -36.53869               6                  15      0.2537678  80  269  0.2666667  0.3842857
(15,30]     10.83411              15                  30      0.2537678 128  268  0.4266667  0.3828571
(30, Inf]   76.63288              30                 Inf      0.2537678  83   90  0.2766667  0.1285714
Missing           NA             Inf             Missing      0.2537678   0    0  0.0000000  0.0000000
              iv.bins
(-Inf,6]  0.092555320
(6,15]    0.042976457
(15,30]   0.004746374
(30, Inf] 0.113489646
Missing            NA
hist(df$duration.in.month)

 

このdurationですが、binning関数にかける前のヒストグラムはこんな感じです。

 

f:id:d_s:20180829223624p:plain

 

近々、KaggleでみつけたHumanResourceAnalytics(会社をやめる人を予測する)データセットで、このビン化モジュールで前処理、ロジスティック回帰で予測を実施したいと思います。

 

その際に詳しく解説します。