モデルの調整
極端に不均衡な不正検知データに対してランダムフォレストモデルを調整する簡単な方法は、sklearn のモデル定義時に class_weights オプションを使うことです。ただしご覧のとおり、やや大ざっぱな手段であり、特定のケースではうまく機能しないこともあります。
この演習では、前の演習で使った Random Forest モデルで weight = "balanced_subsample" モードを試します。データはすでに学習用とテスト用に分割済みで、X_train、X_test、y_train、y_test が利用できます。評価用のメトリクス関数もインポート済みです。
この演習はコースの一部です
Pythonで学ぶ不正検知
演習の手順
- 分類器の
class_weight引数をbalanced_subsampleに設定します。 - 学習用データでモデルを学習させます。
X_testから予測と確率を取得します。roc_auc_score、分類レポート、混同行列を取得します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define the model with balanced subsample
model = RandomForestClassifier(class_weight='____', random_state=5)
# Fit your training model to your training set
model.fit(____, ____)
# Obtain the predicted values and probabilities from the model
predicted = ____.____(____)
probs = ____.____(____)
# Print the roc_auc_score, the classification report and confusion matrix
print(____(____, ____))
print(____(____, ____))
print(____(____, ____))