この記事の目的
今回の記事では、AWSのサービスであるSagemakerでLightGBMを用いた機械学習モデルを作成し、特徴量のインパクトを取得しようとしたところ、通常の取得法とは異なりましたので共有します。
調べても出てこなかったので、覚えておくといいかも?
Sagemakerとは
AWSのサービスの1つであり、機械学習モデルを構築・実装が可能なサービスです(超ざっくり)。
中でも、学習済みのモデルを転移学習させる方法や、組み込みのアルゴリズムを使用した機械学習モデルの作成ができます。
AutoMLも可能ですので、データセットを渡すだけで自動で学習モデルの作成も行ってもらえます。
特徴量のインパクトの取得法
本題に入ります。
モデル作成後に以下のプログラムを実行してください。
(Notebookなのでいくつかのセルに分けて確認しながら進めてください。)
!pip install lightgbm
import lightgbm as lgb
import joblib
model_path = 'pickleファイルのパス'
model = joblib.load(model_path)
importance = model.feature_importance()
feature_names = model.feature_name()
for (feature, score) in zip(feature_names, importance):
print(f'Feature:{feature}, Importance:{score}')
gbm_imp = pd.DataFrame(importance, columns=['Importance'])
df = df.drop(columns=['target'])
Features = df.columns
gbm_imp.insert(0,'Features',Features)
sorted_gbm_imp = gbm_imp.sort_values(by='Importance',ascending=False)
組み込みのアルゴリズムではlightgbmというライブラリはインストールしていないはずですので、!を頭に付けてインストールします。
pickleファイルのパスを指定していますが、まずは今回作成したモデルのアーティファクト内から取得する必要があります。
以下に手順を示します。
- 学習したモデルのトレーニングジョブの出力先のS3からアーティファクトをダウンロード
- ダウンロードしたアーティファクトを解凍
- 解凍して得られたZIPファイルを解凍
- 解凍後のフォルダ内から「model.pkl」というファイルのパスを指定
以上です。
簡単ですね。
あとは、テストデータとして使用した特徴量と特徴量のインパクトを対応させて、値を取得するだけです。
その後の作業としては、インパクトを降順で表示し、データとして抽出したかったのでいろいろデータフレーム弄ったりしてる個人的な部分ですのでスルーしてください。
for文までが今回の内容ですね。
まとめ
AWSのドキュメントや記事を読み漁りましたが、今回の内容は見当たりませんでした。
公式が出してる仕様書?は3500ページ近くあったので、そっと閉じました。
ごめんなさいm(__)m
ですが、その他ではない情報の可能性がありますのでここで共有させていただければと思います!
それでは!!!