コンテンツへスキップ

Kaggle活動記録-10

こんにちは。アイティーシーの東村です。
今回の記事では、学習コンテンツ「Learn」のひとつ、「Machine Learning Explainability」についてご紹介いたします。

機械学習って、基本的にはデータを投入して学習させて予測結果が出て…という流れだと思いますが、ただ学習して結果を出力しただけでは「どの特徴量が予測に大きく影響したのか?」がわかりません。
ブラックボックス状態になってしまうというわけですね。
ですが、どの特徴量がどれくらい予測に影響しているかを可視化することで、ブラックボックスモデルを解釈することができます。
今回は「Machine Learning Explainability」を使って、この手法を学んでいきたいと思います。

■今回学んだ手法
1.Permutation Importance(PI)
→特定の特徴量の重要度を評価する手法です。
数ある特徴量のうち1つをランダムにシャッフルして、学習済みモデルで予測を行い、シャッフル前のスコア(精度や損失)とシャッフル後のスコアの差分を計算します。
これが大きいほどシャッフルした特徴量の重要度が高いことが推測できます。
「eli5」というライブラリを用いて簡単に実装できます。

2.Partial Dependence Plot(PDP)
→特定の特徴量の影響度を評価する手法です。
数ある特徴量のうち1つをピックアップして値を変えながら予測を行います。(その他の特徴量は固定します)
横軸にピックアップした特徴量、縦軸に予測結果をプロットすると、ピックアップした1つの特徴量だけを変えていったときに予測結果がどのように変化するかを可視化できます。
プロット結果が振動していれば、その特徴量は予測結果に影響していることが推測できます。
2つの特徴量をピックアップして同様に予測を行い、予測結果をヒートマップでプロットすれば、2次元のPDPを作成することもできます。
「sklearn」というライブラリを用いて実装可能です。

3.SHapley Additive exPlanations(SHAP)
→各特徴量が予測にどれほど貢献しているかを、Shaplay値を用いて評価する手法です。
ただし、特徴量n個に対してShaplay値を求めようとすると計算量がn!になるため、近似的に算出したSHAP値を用います。
Shaplay値については以下サイトの説明がわかりやすいと思います。
https://qiita.com/KotaYoneda/items/01aa1beeb6bb654219c9
「shap」というライブラリを用いて実装できます。

■所感
予測に影響する特徴量を可視化する手法を3つ学ぶことができました。
とくにPIを計算して各特徴量の重要度を計る手法はシンプルでわかりやすく、コンペにすぐ活かせそうだと感じました。
SHAPはまだまだ奥深そうです…。使いこなせるように研鑽を積みたいと思います。

最後まで読んでいただき、ありがとうございました。
次回もどうぞよろしくお願いいたします。

タグ: