BorutaShapを用いた特徴量選択

今回はBorutaShapというライブラリを用いて特徴量選択を行いました。機械学習モデルを作成する際に特徴量の選択は重要です。不要な特徴量はノイズを学習してしまったり、計算時間が増加したりします。

※このブログの内容は個人の意見・見解となります。また、記事の内容の正確性については保証いたしません。本ブログの目的は分析結果をアウトプットしていくことによる自身のデータ分析力向上を主としています。誤りや違うアプローチの方が良いという事も多分にあると思います。後学のため、「もっとこうしたらいい」や誤りを見つけた場合はコメント欄などでお知らせいただけると有難いです。

○特徴量選択
 冒頭でも少しお話しさせていただきましたが特徴量選択を行うモチベーションは下記の3点になります。
・モデルの性能向上:不要なノイズ、情報を学習するのを防ぐため過学習のリスクを軽減できます
・計算効率の向上:特徴量が多いと計算時間が長くなるため、計算効率を上げることができる
・モデルの理解と解釈性向上:モデルの入力に対してどの特徴量が重要かを理解しやすくなる

○BorutaShap
BourtaとShapを組み合わせたものになります。Bourtaはランダム特徴量を使ってモデルの有効性を反復的にテストします。ShapはShap値を用いて、個々の特徴量がモデルの予測に対してどれだけ寄与しているかを評価します。BourtShapではBourtaの特徴量選択とShap値を組み合わせて利用しており、特徴量の重要度を統計学的に証明できるようになるまでランダム特徴量に対して複数回テストを行うため、単純に特徴量の削減などよりも通常は信頼性の高い選択になります。
※決定木ベースの機械学習アルゴリズムのみ実行可能

○実際に使ってみた
・BorutaShapを利用するには!pip install BorutaShapを行なった後、from BorutaShap import BorutaShapでライブラリをインストールします。この際に、`load_boston` has been removed from scikit-learn since version 1.2.とerrorが発生するため、Google Colabであれば下記画像の左下/usr/local/lib/python3.10/dist-packages/BorutaShap.py をクリックし、画像右上のload_bostonをコメントアウトし保存してからimportし直すことで実行できます。

今回はfetch_california_housingのデータを用いて実験していきます。
こちらのデータはカラム数が目的変数含めて9と少ないため、今回は四則演算を各カラムに対して行い特徴量を233まで増やしました。
では、準備もできたのでBorutaShapを行います。

基本的には機械学習モデルを学習させる時と同じ流れとなります。データを分割し、モデルに学習させます。その後、BorutaShap(model).fit()で学習し特徴量を選択します。
model名.plot(which_features=’all’)で上記のように簡単に各特徴量に対して計算されたZscoreを可視化することもできます。
最終的に選ばれた特徴量を用いて、特徴量選択を行なったモデルと単純に学習データをそのまま使ったモデルでスコアを比較してみます。※今回は特徴量がそこまで多いわけでもないため、時間は計測していません
何も行わずに学習させた結果が0.208、特徴量選択を行なったモデルが0.202と若干ではありますがスコアの改善が見られました。

○最後に
 このような形で分析した結果や試してみたことを週に1回(目標)ペースで掲載しています。データ分析のキャリアを歩み始めたのですが、データの解釈、分析力が低いと感じ今回、このような形でアウトプットをしていくことにしたため、ぜひ、アドバイスやご指摘をいただけると幸いです。

○参考
・BorutaShap_githab:https://github.com/Ekeany/Boruta-Shap/tree/master
・kaggle_notebook:https://www.kaggle.com/code/lucamassaron/tutorial-feature-selection-with-boruta-shap/notebook
・The Kaggle Book:https://www.amazon.co.jp/Kaggle-Book%EF%BC%9A%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E7%AB%B6%E6%8A%80-%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89%EF%BC%86%E7%B2%BE%E9%8B%AD31%E4%BA%BA%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%93%E3%83%A5%E3%83%BC-impress-gear/dp/4295015954/ref=asc_df_4295015954/?tag=jpgo-22&linkCode=df0&hvadid=624499521742&hvpos=&hvnetw=g&hvrand=4216027050581882833&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009473&hvtargid=pla-1943599676813&psc=1&mcid=ace2ed2d4bc037858bf881e2a37a16e1&th=1&psc=1