ただのペンギンぶろぐ

データサイエンティストを目指す方に金融界隈のデータサイエンスに関わるお仕事の状況をなるべくわかりやすく整理した情報をお伝えするブログ

HomeLoan環境構築編

今回も引き続き住宅ローンの与信分析を具体例として見ていきましょう。

環境構築

なんでも良いのですが、私は昔Rを使っていましたが今はPythonで分析を行っています。使っているソフトウェアはanacondaというパッケージマネージャーと分析環境ライブラリのjupyterです。どちらもメジャーなのであまり私から書くこともないのですが、Pythonは3系を選んで下さい(2系と3系があります。)
そして分析に使用するためのパッケージとしては以下のものをインストールしておいてください。

  • numpy
  • pandas
  • scikit-learn

前回のおさらいと補足

さて環境構築をすごく簡単に紹介した上で、前回求めようとしていたものをおさらいしたいと思います。前回は最適化する値が Area under ROCという数値であり、どのような数字で構成されるか簡単に触れましたが説明が丁寧でなかったので補足します。Area under ROCは以下の図の緑の部分の面積を指します。(最大値1で最小値は0)

[Area Under ROC]の概念図

f:id:findatas:20200202130143p:plain


ここで書かれているTPR、FPRの定義は以下の通りです。


求めるべき指標 \begin{aligned}
TPR &= \frac{TP}{(TP+FN)} \\
FPR &= \frac{FP}{(FP+TN)}
\end{aligned}



用語解説FP(False Positive)
モデルでは陽性(つまりデフォルトする債務者)と判定していて、
実際にはデフォルトしないケース

TP(True Positive)
モデルでは陽性(つまりデフォルトする債務者)と判定していたが、
実際にはデフォルトしたケース

FN(False Negative)
モデルでは陰性(つまりデフォルトしない債務者)と判定していて、
実際にはデフォルトしたケース

TN(True Negative)
モデルでは陰性(つまりデフォルトしない債務者)と判定していたが、
実際にデフォルトしないケース

つまり前回も書きましたが、如何にFP(優良な借り手を誤って審査で落とすこと)を発生さぜず、TP(不良な借りてを審査で落とすこと)の精度を挙げられるかという指標です。

具体例

とは言うものの具体例がないとわかりづらいと思います。如何に15人の申込者に対して適当にモデルで判定した例を作りました。Model列はモデルが申込者に対して付与したデフォルト確率で、RESULT列は実際に貸した場合のデフォルトの有無(1はデフォルト)を表現しています。
f:id:findatas:20200202131249p:plain

このデータセットの場合、modelの数値が57%(この数値は適当です。)以上であれば陽性(デフォルトする借りて)と判定した場合、前節の各指標のデータセットは下記のとおりになります。

f:id:findatas:20200202133212p:plain

場合の数としてはFP=1,TP=4,FN=2,TN=8となり、この時ののTPR,FPRは以下の通り。


計算結果 \begin{aligned}
TPR &= \frac{TP}{(TP+FN)}= \frac{4}{(4+2)}= \frac{2}{3}\\
FPR &= \frac{FP}{(FP+TN)}=\frac{1}{(1+8)}= \frac{1}{9}
\end{aligned}

さきほど、57%を閾値として設定しましたがこれを0%に近づけると誤って不良な貸し手に貸す確率が0に近づくためTPRは1に近づきますが、同時に優良な借りても必ず審査で落としてしまうようになるためFPRも1に近づいてしまいます。逆に誰でも審査を通してしまうと優良な借り手には必ずかせるためFPRは0に近づいていきますが、不良な借りてを判別できなくなってしまうためこちらも同様に0に近づいていきます。閾値の値を少しづつ変えて行くと上記の例では以下のようなグラフが出来上がります。

プロット結果
f:id:findatas:20200202142454p:plain

上記のプロット結果から分かる通り、この場合はAUROCは0.796程度になります。

まとめ

まとめとしては以下の通り右上に行けば行くほど厳しい審査になり、左下に行けば甘い審査になるということを示します。精度のいいモデルは左上の領域が高くなることからこの面積の大きさを持ってコンペの優劣をつけることを意味しています。
f:id:findatas:20200202143355p:plain


次回は実際にコンペで公開されているデータの解説を中心にデータサイエンスしていきたいと思います。

今回は以上です。