Researchがとても面白いかつ今後有用になりそうなライブラリを発表していました。私はNorikazuYamadaさんのツイート*1でDiCEの存在を知りました。本記事ではkaggleにあるローン審査のデータセットとDiCEを使ってローン審査の反事実を生成してみます。現時点ではDiCEは実装がまだしっかりと整備されていないため、今後実装が進んだ際は現時点とは使い方等が変わるかもしれませんのでご了承下さい。DiCEとは機械学習の解釈性を理解するために反事実モデルによるアプローチを使ったライブラリです。反事実とは、「もし○○しなかったら」といったように事実の反対の事を指す用語で、因果推論といった分野でよく用いられる用語です。arXiv)をご参照ください。Datasetを使ってローン審査の反事実を生成してみます。DiCEのインストール。dice-mlDiCEは現時点ではTensorflowとPyTorch対応しかしていません。今回はTensorflowで実装します。TensorflowのバージョンはDiCEのチュートリアルと同じ1.13.0-rc1に設定しておきます。N)のバイバリ変数となっています特徴量には使わないLoan_IDをこの段階で削除しておきます。各カラムは欠損値を持っているようなので、欠損値補完をします。ここら辺の処理はkaggleのnotebookを参考にさせてもらってちゃちゃっと実装します。カテゴリカル変数は最頻値で補完、数値は中央値で補完します。inplace=True)次に、目的変数のLoan_Statusをバイナリ変数に変換します。最後に、カテゴリカル変数と数値のデータフレームを結合したデータフレームを作成します。axis=1)df.head()dice_mlのDataクラスへインスタンス化DiCEを使うためにインスタンス化します。この際、どのカラムが数値かを引数として指定する必要がありますので、指定してあげます。現時点ではこの部分が注意が必要です。本来であれば、5つのカラム(ApplicantIncome、CoapplicantIncome、LoanAmount、Loan_Amount_Term、Credit_History)が数値ですので、これらを指定すべきなのですが、現時点でのDiCEライブラリの実装だと反事実の生成部分でエラーが発生しています。これはNorikazuYamadaさんが動画で説明されたように0除算が原因で起きるエラーで、論文中の式からもその可能性が伺えます。その結果、今回は下のように3つのカラムを数値として与えて、それ以外はカテゴリカル変数として処理していきます。今後こういった部分の改善も是非期待したいところです。モデルの学習DiCEのチュートリアルにしたがってカテゴリカル変数のOne-Hot化して、20層のニューラルネットワークモデルを作成します。m)反事実の生成いよいよDiCEによる反事実の生成です。今回は学習に使ったLoan_Statusが0になっているインデックス1のデータについて、4つの反事実を生成してみます。resutlsdice_exp.visualize_as_dataframe()結果がこちらです。outcomeが0でモデルが予測した値は0.146271となっています。DiCEが生成してくれた4つの反事実もしっかりと出力されています。カラム数が多く全部はキャプチャー出来なかったのですが、例えば2番目の反事実シナリオであればローン審査の結果を1となる確率が0.937と飛躍的に向上することが読み取れます。二番目のシナリオで特に着目すべきは下記のカラムになりますね。1.0これは非常に面白い。いった反事実のシナリオがわかると確かに実務において特にビジネスサイドと議論する場合にかなり有用になりそうです。おわりに本記事では、DiCEを用いてローン審査のデータセットから反事実を生成してみました。ライブラリとしての完成度やその他使い勝手はまだまだ改善の余地はありそうですが、ビジネスの現場で機械学習プロジェクトを進めていく上でとても可能性を秘めていそうです。今回の実装はGitHubにも公開しています。参考*1:NorikazuYamadaさんの動画解説はとてもわかりやすく、いつも参考にさせてもらっています。DiCEの説明動画を撮りました。実装面が順調に進めば実務でもどんどん使いたい(順調に進めば)。反実仮想サンプルによる機械学習モデルの解釈/説明手法オンラインコース無料プレゼント!Pythonの基本を学んだNextステップとしてデータ分析の基礎を学んでみませんか?今回、Udemyのベストセラーコースになっているオンラインコースを今だけ無料プレゼントでプレゼントさせていただきます。今すぐ登録してプレゼントを受け取ってくださいね。それでは、コースでお待ちしております。BLOG関連記事プログラミングPyCharmによるOpenCVの環境設定こんにちわ!やじろべぇです。Python専用エディタ「PyCharm」から使えるように環境設定してみたいと思います。PythonとOpenCVを使ってカラー画像から肌色領域を抽出する方法を実装。ソースコードと計算結果を解説します。KNN)OpenCVに実装されている特徴量記述子(AKAZE)を使って、二枚の画像間の特徴点マッチングアルゴリズムを実装してみたいと思います。(バイアスの影響を測る回帰分析)こんにちわ!やじろべえです。今回は因果推論シリーズの第三弾として、回帰分析を使ってバイアスの影響を測定してみます。これまでと同様に教科書は下記の書籍を参考にしています。因果推論をビジネス利用する観点で書かれており、現場でデータ分析する人は読んでおいて損は無いと思います。私は子どもの頃一度読んだのですが、よく意味が分からなくて断念した記憶があります。今回はこの名作で登場する主人公と友人どのくらいの頻度...プログラミング顔写真からジャニーズ系かEXILE系かを判定する学習モデルを深層学習を用いて作成してみた(~画像クローリング、顔検出編~)顔写真からジャニーズ系かEXILE系かを判定する学習モデルを作成してみました。全3回の記事の予定です。1/3)を掲載しています。...宇宙開発系エンジニアが未経験からベンチャー企業の見習いデータサイエンティストに転職して1年経ちましたPyorbitalを用いてISSの軌道を地図上にプロットホーム技術忘備録データ分析Profileこのブログの管理人やじろべえUdemy受講生3,000人以上のベストセラー講師。エンジニア以外の職種の方に対してもIT/データリテラシーの向上に少しでも貢献したいという思いから、初学者にもなるべくわかりやすくかつ丁寧にプログラミングやデータサイエンスといったスキルを教えています。講師業の傍ら、ベンチャー企業の研究開発部門に在籍。ソフトウェアエンジニアリング・統計・機械学習といった技術領域でビジネス価値を生み出すための業務に従事。やじろべえをフォローする出版書籍UdemyオンラインコースUdemyにて下記のオンラインコースを公開しています。♪YAJIROBEラジオ配信中♪stand.fmでラジオ配信しています。良かったら聞きに来てください。キャリア・転職お問い合わせホーム検索トップサイドバーProfileこのブログの管理人やじろべえUdemy受講生3,000人以上のベストセラー講師。エンジニア以外の職種の方に対してもIT/データリテラシーの向上に少しでも貢献したいという思いから、初学者にもなるべくわかりやすくかつ丁寧にプログラミングやデータサイエンスといったスキルを教えています。講師業の傍ら、ベンチャー企業の研究開発部門に在籍。ソフトウェアエンジニアリング・統計・機械学習といった技術領域でビジネス価値を生み出すための業務に従事。やじろべえをフォローする出版書籍UdemyオンラインコースUdemyにて下記のオンラインコースを公開しています。♪YAJIROBEラジオ配信中♪stand.fmでラジオ配信しています。良かったら聞きに来てください。w)w.hasOwnProperty(e)&&S(e)}(),W(document,"keydown",F),document.getElementsByTagName("body")[0].removeChild(document.getElementById("baguetteBox-overlay")),w={},h=[],o=0}}});。