理解されるPOC作成のために、機械学習したモデルをどう評価し説明するかのまとめ。

## 学習モデルの評価、Explainability(説明可能性)またはInterpretability(説明性)について。  
###   - 背景  
機械学習が身近になってきた昨今、機械学習モデルの説明性に関するニーズが高くなってきています。モデルを社内で開発し、使用するよりも、開発できる側からモデル自体を提供するサービスが多くなってきたこともひとつの理由だと思います。  
その際、提供される側には、モデルを判断できるための何かが必要になることが考えられます。特に提供される側に、機械学習、数学的知識がない場合は、それらの必要性がより高まると思われます。また、モデルがブラックボックスのままで、これらを販売していくのは非常に厳しいと考えられます。  
記載されている内容は、主に筆者がCredit Scoring（特に個人向け消費者ローン）を作成する際のモデルを軸にしているので、内容に偏りがでるかもしれません。また、目的変数は延滞なし債権（正常債権）・延滞債権に分類しています。  

Credit scoringでは分類を予測する精度より、何パーセントの確率で延滞になるのかを予測すること、また、その予測が正しいかがより重視されます。  


最近知ったこの言葉がとても気に入っています。引用させていただくと  

>「勝つか負けるかを予測しているのではない、何パーセントの確率で勝つかを予測しているのだ。」  
> Predictが、「勝つ」か「負ける」を予測することであり、Forecastはどれくらいの確率で勝つのか（または負けるのか）を予測すること。  
[@KanNishida　俺達が70％と言ったら、それは70％だということだ](https://qiita.com/KanNishida/items/63097aba7b89b33917e4 "Qiita")  
[Nate Silver　When We Say 70 Percent, It Really Means 70 Percent](https://fivethirtyeight.com/features/when-we-say-70-percent-it-really-means-70-percent/ "Qiita")



### - 目的  
今回は多々ある指標や方法をリストアップしているが、今後一つずつに対して詳しい説明と方法を付け加えていきたい。また、英語、日本語、通称などで検索するときに便利なように、英語と日本語を併記（日本語をカッコ内に記入）している。若干読みにくいかもしれないが、ここでは自分用のメモとして作成したものを利用している。  
また、これらの情報をもとに、第三者（使用者）への説明資料、POC(Proof of concept) (概念実証)を作成することを想定している。  

## モデル作成時の検証  
主にモデル作成時に、正しいモデル選択をするための検証方法であり、作成したモデルを説明する際にPOCに含めることは考えていない。次項などに記載されている内容もモデル作成時には当然検証している次項でもあるが、そのモデルを作った後の説明可能性として使用するかしないかの区別としている。 

- 評価指標の種類 
    - Hold-out (ホールドアウト法) 
    　元データを訓練用・テスト用に分割し、訓練用に作成したモデルをテスト用データを使って検証する。
    - Cross-validation(交差検証) 
　    元データを訓練用・テスト用に分割し、下記の方法などにより複数回行ったテスト結果をもとに解析自体の妥当性の検証・確認をする。
        - K-fold cross-validation (K-分割交差検証)
        - LOO (Leave-one-out) (交差検証)
    - Boostrap method (ブートストラップ法) 
    元データから１つのサンプルモデルを作成し、そこからリサンプリングを繰り返して生成し、統計値を計算し検証する。
    - WAIC (Widely Applicable Information Criteria) (広く使える情報量規準) 
    後日追記予定。
    - WBIC (Widely Applicable Bayesian Information Criterion) (広く使えるベイズ情報量規準) 
    後日追記予定。

## 説明可能性のための指標・検証法
- 評価指標の種類 
    - Gini indexまたはGini coefficient(ジニ係数), AR値, CAP curve (Cumulative Accuracy Profiles) (CAP曲線)
    - AUC(Area under an ROC curve), ROC curve (Receiver Operatorating Characteristic curve) (ROC曲線)  
    これら二つはCredit scoreモデルで指標として使われていることが多い。確率の順位性をもとにしており、CAP曲線から計算するのがジニー係数。ROC曲線から計算するのがAUC。２つは比例の関係にある。  
    (詳しくはこちら。[機械学習のモデル評価、説明可能性のための指標　その１。ジニ係数とAUC。](https://qiita.com/Derek/items/4ded249f7a75f8da176c))
    - Confution Matrix (混同行列)  
    (詳しくはこちら。[Accuracyなどの混合行列の評価が使えない理由](https://qiita.com/Derek/items/01a5009b10adc19edc24))  
    データの分類で、予測された分類と実際の分類を２次元のマトリックスにしたもの。  
    実際は正常債権を正常と予測し正解、延滞と予測し不正解。実際は延滞債権を正常と予測し不正解、延滞と予測し正解。  
    下記のような指標を利用する。
        - Accuracy  (正確率、精度)
        - Precision (適合率)
        - Recall    (再現率)
        - Specificity   （特異度）
    - F-score, F1 score, F-measure  （F値、F尺度）  
    上記の４種類を調和平均を使用して計算する値。
    - Brier Score　(ブライアスコア)  
    こちらは主に降水確率の検証で使用されることが多い。予測された確率の精度を評価する指標。  
    確率が重要視されるCredit scoreでも稀に利用されている。  
詳しくはこちら。[機械学習のモデル評価と説明可能性のための指標　その3。Brier Score（ブライアスコア）](https://qiita.com/Derek/items/e382c087afd616a0053e)


- 評価方法の種類 （局所的な説明の方が適切？）
個別の予測に対して判断根拠となった特徴量などを可視化し、利用者が理解しやすい説明となる。
    - LIME (Loacal Interpretable Model-agnostic Explainations)  
    個別のデータの予測に対し、特徴量を強調して説明。
    - SHAP (SHapley Additive exPlanations)  
   ゲーム理論のシャープレイ値を利用したモデルと個別データの予測に対し、各特徴量がどの程度予測に影響を与えているかを数値化。  
記事はこちら。[機械学習のモデル評価と説明可能性のための指標　その2。SHAP](https://qiita.com/Derek/items/262f1ea39c6298cdd1bb)
    - LOCO (leave-one-covariate-out)  
    後日追記予定
    - PI (Permutation importance)  
    順番の重要性。データの１列をシャッフルし、この予測値と実際の予測値を使用して損失関数がシャッフルでどれだけパフォーマンスが低下するかを数値化。
    - PDP (Partial Dependence Plot(s))
    ある特徴量が予測にどのような影響を与えたかを、特徴量だけを変化させてどのように変化するかを数値化。

-  統計学的検定
    - Hosmer-Lemeshow test (ホスマーレメショウ検定)  
    モデルで予測される確率がデータのサブグループ（１０分位で分割した適合リスク値）に適合するかを検証。
        - Hosmer–Lemeshow test statistic (統計検定量)
    - Kolmogorov–Smirnov test(コルモゴロフ　スミルノフ検定。KS検定。)  
        データの分布が予測した分布に一致していることを否定できるかどうかを検証。対象数値として下記の数値を利用。

        - Kolmogorov–Smirnov statistic (KS検定統計量)

### まとめ  
説明目的に合わせて、各種指標や検証方法を利用することになると思いますが、Credit scoringでは、局所的な説明へのニーズが特に高まっています。特に銀行などの業界では、監督官庁に対してのモデルの説明や顧客への説明義務が発生するため、説明不可能なモデルでは使用することができません。  
これから各方法に対しての説明を別途追加していく予定ですが、すでに情報が溢れているものも多いため、Credit scoringからの視点で情報が少なめのものから行っていく予定です。
色々情報に間違いがある可能性がありますので、指摘を頂ければ修正していきます。また各種論文などの引用は個別の説明時にしていく予定です。

#### 関連・参考記事
- [信用リスクモデルの評価方法に関する考察と比較](https://www.fsa.go.jp/frtc/seika/discussion/2003/20031031.pdf)  
　様々な評価の手法について書かれています。  
　ジニ係数についての解釈が私と違っていますが、日本と海外での使われ方が違うのか、または現在と書かれた当時とでは使われ方が変化したためなのかと思われます。

#### Update
- 2020/2/26 詳細ページへのリンク追加。